Listes déroulantes filtrées

bonjour,

je relance un sujet suite à mon planning en 3/8.

voilà j'ai plutôt bien avancé avec pas mal d'aide déjà mais je bloque sur une liste déroulante que je voudrais mais avec une sélection.

je m'explique: par exemple dans la ligne A10 lorsqu'il y a un absent "abs" je souhaiterais que dans la ligne du dessous la liste déroulante me propose seulement le personnel disponible à cette date (actuellement la liste me propose tout le personnel), càd le personnel de chaque équipe qui est en repos , sur J (case verte) et qui n'est pas ABS.

je pensais faire en caché une liste en cascade pour au final n'afficher que le resultat final mais je bloque je n'arrive pas à associer la colonne des dates avec les lignes qui correspondent à la disponibilité du personnel.

bien cordialement

Salut Brice,

tu peux nous faire un fichier lisible avec en-têtes, règles et onglets ainsi qu'un planning fictif mais représentatif d'une situation potentiellement réelle ?


A+

salut curulis,

déjà je voulais te dire que ton emblème est super sympa ;)

effectivement le fichier que j'ai mis à des bug et je ne sais pas pourquoi...

mais celui ci devrait marcher .

dans la l'onglet données il y a les dates des vacances du personnel (ce sont les vacances d'été, sur le planning il faut regarder entre le 15/06 et 15/09 environ) je ferais un filtre d'affichage plus tard.

ces un planning à 7 équipes en 3/8 sur 7 semaines ( le roulement se trouve aussi dans l'onglet données)

l'objectif est d'avoir une liste déroulante qui me propose le personnel disponible lors d'une absence dans une autre équipe ; càd une personne qui sur son roulement et sur un jour de repos ou un jour vert dit "j"

exemple: en B 52 "Fuster" est abs le 05 juillet (colonne GE ) en B53 je souhaiterais une liste déroulante du personnel disponible pour le remplacer .

"Fuster" étant en équipe 3, je vais chercher le personnel disponible dans les autres équipes, ce qui nous donne le personnel de l'équipe 1 si non ABS

l'équipe 2 le personnel ne peut pas car ils sont de matin le 6 juillet ...

l’équipe 4 ne peut pas non plus car ils sont de matin le même jour.

l'equipe 5 sont de repos donc OK sauf "BARBERY" car ABS (ligne 98)

l'equipe 6 ok car en repos

l'équipe 7 pas disponible car AM le même jour ...

j'éspére avoir été clair.

merci pour le temps que tu m'accordes...

bonne journée !

bonjour,

personne aurais une petite idée de comment m'y prendre ?

bonne journée !

Salut Brice,

où pose-t-on cette liste de validation ? Il y a des formules partout !


A+

salut curulis,

je suppose que tu parles des listes déroulante ?

sous chaque ligne d'absence (ligne 9/11/13/15/17/19, pour l’équipe 1; 32/34/36/38/40/42 pour l’équipe 2 ....)

tu as une idée de comment s'y prendre?

passes-tu par du VBA ou formule d'excel ?

merci pour le temps que tu m'accorde !

Salut Brice,

perso, ce sera quasi toujours en VBA.
Je reviens plus tard...

Dans ta feuille 'Planning', qu'y a-t-il dans les lignes entre les équipes ? Pas régulier, tout ça... Si rien, j'ajusterai.

A+

oui, il n'y a rien

désolé pour le fouillis dans le fichier mais je suis pas vraiment à l'aise comme tu peux le voir.

par la suite j’essaierai d'y inclure d'autre condition

encore merci de ton aide

par la suite j’essaierai d'y inclure d'autre condition

Entre les tableaux ? Combien de lignes libres veux-tu ?

je n'y est pas vraiment pensé, je voudrais surement plus tard agrandir pour passer à 9 opérateurs par équipe...

les autres conditions seront rajouté dans la listes déroulante mais si j'arrive à comprendre comment tu as fais pour les conditions,

j'essaierai de le faire ...

les autres conditions ne sont pas facile à expliquer, se sont les conditions du code du travail qui sont à respecter comme ne pas travailler plus de 11 jours sans un repos de 24h +11h sur une semaine de travail (du lundi au lundi ...)

OK, Brice,

je vais tûzer un truc pour que tu puisses agrandir ou réduire tes équipes sans souci de code mais, lors de tes futures manipulations, tu DEVRAS respecter un nombre parfaitement identique de lignes libres entre les tableaux si tu veux que ça fonctionne !

Je tûze et je reviens.


A+

Salut Brice,

premier jet qui devrait déjà convenir, sauf incompréhension de tes conditions de sélection des remplaçants potentiels.
- un clic gauche sur une cellule SOUS un "ABS" ouvre une liste de validation selon critères ;
- un clic droit sur cette même cellule efface la valeur.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
Dim iRow%, iCol%, iNb%, iNb1%, iNb2%, iNbAbs%, iNbEnd%, iNbWk%, sEq$, sFormula$
'
If Selection.Columns.Count > 1 Or Selection.Row = 1 Then Exit Sub
'
iRow = Target.Row
iCol = Target.Column
iNb1 = Columns(1).Find(what:="Equipe 1", lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext).Row                'ligne Equipe 1
iNb2 = Columns(1).Find(what:="Equipe 2", lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext).Row                'ligne Equipe 2
iNbAbs = Columns(1).Find(what:="Absence", lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlNext).Row               'ligne Absence (Equipe 1)
iNbEnd = Columns(1).Find(what:="Equipe", lookat:=xlPart, LookIn:=xlValues, searchdirection:=xlPrevious).Row             'ligne dernière équipe
iNbWk = (iNbAbs - (iNb1 + 2)) / 2               'nbre de travailleurs par équipe
iNb = iNb2 - iNb1                               'nbre de lignes (libres comprises) occupées par une équipe
'
Cells.Validation.Delete
If Target.Offset(-1, 0) = "ABS" Then
    sEq = Range("A1:A" & iRow).Find(what:="Equipe", lookat:=xlPart, LookIn:=xlValues, searchdirection:=xlPrevious)      'nom de l'équipe en cours
    For x = iNb1 To iNbEnd Step iNb
        If Cells(x, 1) <> sEq And (Cells(x + 1, iCol) = "J" Or Cells(x + 1, iCol) = "REPOS") And Cells(x + 1, iCol + 1) <> "M" Then
            For y = 1 To iNbWk
                If Cells(x + (y * 2), 1) <> 0 And Cells(x + (y * 2) + 1, iCol) <> "ABS" And _
                    WorksheetFunction.CountIf(Columns(iCol), Cells(x + (y * 2), 1)) = 0 Then _
                        sFormula = sFormula & IIf(sFormula = "", "", ",") & Cells(x + (y * 2), 1)
            Next
        End If
    Next
    If sFormula <> "" Then Target.Validation.Add Type:=xlValidateList, Formula1:=sFormula
End If
'
End Sub

Tu peux augmenter ou réduire le nombre d'équipes, le nombre de travailleurs par équipe à volonté À CONDITION que chaque équipe dans 'Planning' occupe le même nombre de lignes, quelque soit le nombre effectif de travailleurs dans chaque équipe ET que le nombre de lignes libres entre les différentes équipes soit RIGOUREUSEMENT identique !!!!!!!!!!!!

À tester...

Problème avec Chrome... pas moyen de charger le fichier... autre envoi...


A+

31planning-brice.zip (234.84 Ko)

salut curulis,

tu as du passé pas mal de temps je te remercie 1000 fois.

pour l'instant je n'arrive pas à ouvrir sans erreur le fichier mais c'est surement dû que chez moi je n'ai que excel 2007 et libre office .

je vais devoir attendre LUNDI !!!!!

je te tiens au courant le plus tôt possible !

encore merci

voici l'erreur que j'ai avec libre office

3erreur.zip (855.03 Ko)

Bonjour Curulis et Brice,

J'ai refais une version mensuelle pour y voir plus clair, avec une base de données pour enregistrer et garder les infos.

Pour le personnel disponible pour recomposer les équipes, j'ai pensé à un masquage des lignes des équipes (toutes les 7 lignes), qui ne sont pas au repos, selon un choix de jour.

J'ai descendu les formules de calcul du nombre des absents. Il n'y a plus de formules dans mon tableau, j'avoue que sans données dedans j'ai pas cherché plus loin.

Il y a pas de couleur comme Curulis ...je suis dessus depuis 3 jours. S'il y a encore des bugs dites moi.

Et sinon Brice, est-ce que çà correspond à ton attente ?

19calendrier.xlsm (49.71 Ko)

Cdt

salut fronck,

je pense que je suis bridé par excel 2007, quand j'ouvre le fichier je pense ne pas avoir toutes les fonctionnalités

je vous tiens au courant lundi , j'ouvre le fichier avec la dernière version de excel au travail.

encore merci pour le temps passé dessus

salut curulis,

j'ai enfin pu tester le fichier !!!

il affiche bien une liste déroulante comme je le souhaite mais les filtres ne donnent pas ce que je voulais, j'ai essayé de regarder le code mais j'avoue je ne suis pas arrivé à tout comprendre pour essayer de le modifier...

pour faire plus simple dans la liste déroulante ne doit figurer que les gens qui sont sur un roulement de J et de repos et qui ne sont pas absent ...

les couleur ne s'affiche plus aussi mais ça je pourrais le reprendre plus tard .

merci curulis pour le temps passé ;)

salut fronck,

j'aime bien la présentation que tu as faite sur le fichier et la possibilité de créer une sauvegarde, mais les fonctionnalité recherché n'y sont pas, la liste déroulante qui donnent le personnel disponible pour le remplacement et le roulement qui est fixe pour les différente équipes...

en tout cas merci le format reste bon je regarde comment je pourrais réutiliser certaine fonctionnalité.

j'avoue ce que j'ai demandé et très particulier et spécifique !

brice ;)

Rechercher des sujets similaires à "listes deroulantes filtrees"