OVH Cloud OVH Cloud

Retrouver mes locaux libres

12 réponses
Avatar
Wip
Bonjour =E0 tous

J'utilise excel pour filtrer de diverses mani=E8res un=20
horaire d'occupation des locaux
Mais il me manque un r=E9sultat que je ne parviens pas =E0=20
construire.
Soit une feuille par jour de la semaine (Lun, Mar, Mer...)
H1 =E0 H8 sont les 8 colonnes qui repr=E9sentent les heures
Chaque ligne contient un groupe d'=E9tudiants
A l'intersection, un local (A1, A2, .. B1, B2, ....)
Et dans une feuille DATA la liste compl=E8te de mes locaux
Comment pourrais-je faire appara=EEtre en bas de chaque=20
colonne (H1...H8)le liste des locaux libres pour chacune=20
des heures concern=E9es

Ainsi dans le bas de la colonne H1 le lundi je veux voir=20
appara=EEtre A4, C2, D1 qui sont par exemple les 3 locaux=20
de ma liste qui ne sont pas r=E9serv=E9s dans les lignes=20
pr=E9c=E9dentes de cette m=EAme colonne

J'esp=E8re me faire =E0 peu pr=E8s comprendre

Merci =E0 tous ceux qui essaieront de m'aider.

WiP=20

2 réponses

1 2
Avatar
WiP
Bonjour *Damien Kergosien*


Ta procédure fonctionne parfaitement.
Je viens de comprendre ce qui pose problème dans mes données
J'utilise un même local pour 2 ou 3 groupes différents à certaines heures.
Le REDIM étant exécuté sur le tableau des salles, on tombe hors RANGE
Je dois pouvoir arranger ça
Encore Merci pour ton travail

WiP

| Il t'écrit toute la liste car tu as modifié la boucle For Next.
| Je n'ai pas réussi à faire autrement. (pas beaucoup cherché non plus).
|
| Le principe : les lignes de la zone saisie de la colonne où est le
| curseur sont parcourues. Si elles contiennent une donnée qui se trouve
| dans la liste salles, le numéro de la ligne (salle)est mémorisé dans
| tableau.
| En fin de boucle, le tableau est trié en ordre décroissant de façon à
| avoir les données numériques en premier.
| Dans la boucle For Next, on commence par la dernière ligne des salles.
| Si elle est présente, on passe, sinon, on l'écrit ?
|
| dans l'autre sens, on devrait pouvoir le faire mais je n'ai pas eu
| envie de me casser la tête.
|
| Damien
Avatar
WiP
Bonjour *Jean-Claude*

Impeccable. Rien à redire
Et ça règle du même coup mon problème de local utilisé par 2 ou 3 groupes en même temps et de colonnes non contigües
Un tout grand merci à toi

WiP


| Salut,
| En remplissant les tableux indice après indice ça marche
| A toi de voir
| A+
|
| Public Function LocauxVides(LocauxUtilisés As Range)
| Dim i As Integer
| Dim j As Integer
| Dim tabLocauxPossibles() As Variant
| Dim tabLocauxUtilisés() As Variant
|
| ReDim tabLocauxPossibles(Range("DATA!LocauxPossibles").Rows.Count)
| For i = LBound(tabLocauxPossibles) To UBound(tabLocauxPossibles) - 1
| tabLocauxPossibles(i) | Sheets("DATA").Cells(Range("LocauxPossibles").Row,
| Range("LocauxPossibles").Column).Offset(i)
| Next i
|
| ReDim tabLocauxUtilisés(Range(LocauxUtilisés.Address).Rows.Count)
| For i = LBound(tabLocauxUtilisés) To UBound(tabLocauxUtilisés) - 1
| tabLocauxUtilisés(i) = Cells(Range(LocauxUtilisés.Address).Row,
| Range(LocauxUtilisés.Address).Column).Offset(i)
| Next i
|
| For i = LBound(tabLocauxPossibles) To UBound(tabLocauxPossibles)
| For j = LBound(tabLocauxUtilisés) To UBound(tabLocauxUtilisés)
| If tabLocauxPossibles(i) = tabLocauxUtilisés(j) Then
| tabLocauxPossibles(i) = "": Exit For
| Next j
| Next i
|
| For i = LBound(tabLocauxPossibles) To UBound(tabLocauxPossibles)
| If tabLocauxPossibles(i) <> "" Then
| If tmp = "" Then
| tmp = tabLocauxPossibles(i)
| Else
| tmp = tmp & " - " & tabLocauxPossibles(i)
| End If
| End If
| Next i
| LocauxVides = tmp
| End Function
1 2