Liste de validation à partir de listes croisées

grodep

XLDnaute Occasionnel
Bonjour, je reviens vers vous pour vous soumettre un problème de croisement de listes remplissant certaines conditions:
je dispose d'une liste de personnes aptes à superviser ou non un certain nombre d'exercices que je prévois sur la journée. Je souhaiterai que mon classeur me permette de prévoir facilement quels sont les superviseurs que je peux désigner selon l'exercice choisi.
2 options:
1) le classeur me propose sous la cellule de l'exercice une liste triée des superviseurs aptes pour l'exercice, liste dans laquelle je n'aurai plus qu'à choisir manuellement l'un des choix.

2) le classeur remplit automatiquement toutes les cases sous les cellules nécessitant un superviseur.

Merci à tous les contributeurs.
 

Pièces jointes

  • planiff.xlsm
    15.7 KB · Affichages: 31

youky(BJ)

XLDnaute Barbatruc
Re : Liste de validation à partir de listes croisées

Bonjour Grodep,
Ton truc n'ai pas facile, mais j'ai avancé et cela fonctionne bien mais il te faut remplir la feuille "superv"
(j'ai ajouté cet onglet)
Il te faut mettre dans cet onglet tout les droits cela pour chaque Superviseur
J'y ai mis des données bidons c'est pour l'exemple.(là y a du boulot)
J'ai mis des validations que dans les cellules en jaunes à toi de continuer.
Bruno
 

Pièces jointes

  • planiff2.xlsm
    26.6 KB · Affichages: 30
  • planiff2.xlsm
    26.6 KB · Affichages: 32
  • planiff2.xlsm
    26.6 KB · Affichages: 34

grodep

XLDnaute Occasionnel
Re : Liste de validation à partir de listes croisées

merci de te pencher sur mon problème, j'ai bien conscience que ça n'est pas simple du tout :p

Je tente de décrypter ta macro afin de voir comment elle fonctionne, mais je patauge un peu.

Je vais m'y pencher plus sérieusement et reviendrais sans doute plus tard, mais encore une fois merci pour ce premier immense coup de main.
 

grodep

XLDnaute Occasionnel
Re : Liste de validation à partir de listes croisées

ça avance, ça avance.
En revanche, il y a un souci sur la condition "vdn": tu l'as introduite dans ta macro avec la même importance que la condition "absent", alors qu'elle doit simplement dispenser du 1er tour et non des tours suivants. Saurais tu comment faire pour remédier à cela?

Merci d'avance
 

Pièces jointes

  • planiff2.xlsm
    49.8 KB · Affichages: 47
  • planiff2.xlsm
    49.8 KB · Affichages: 34
  • planiff2.xlsm
    49.8 KB · Affichages: 30

youky(BJ)

XLDnaute Barbatruc
Re : Liste de validation à partir de listes croisées

Tu as bien avancé,
J'ai rectifié mon tir sur "vdn"
Cela fait que tout doit fonctionner.
Si tu veux que je commente la macro dit le moi car je suis partisant du moindre effort!!!!
Bruno
 

Pièces jointes

  • planiff2.xlsm
    49.2 KB · Affichages: 34
  • planiff2.xlsm
    49.2 KB · Affichages: 40
  • planiff2.xlsm
    49.2 KB · Affichages: 38

youky(BJ)

XLDnaute Barbatruc
Re : Liste de validation à partir de listes croisées

Voici la macro commentée.
Bonne lecture
Bruno
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'utilisation de l'événement du changement de selection
'A savoir Target est la cellule selectionnée
'exemple Target.Row ou Target.Column ou Target.value
If Target.Count > 1 Then Exit Sub 'si plusieurs selections on quitte
On Error Resume Next 'on gère si on va en erreurs
'on cherche si la cellule du dessus de la selection est en Feuil1
Set c = Feuil1.UsedRange.Find(Target.Offset(-1, 0), LookIn:=xlValues, LookAt:=xlWhole)
If Err > 0 Then Exit Sub 'si rien trouvé on créé une error alors on quitte
nom = c 'nom est le Target.Offset(-1, 0) soit la cellule en dessus decelle selectionnée
Feuil2.[J1:J1000].Clear 'on efface l'ancienne liste
With Feuil4 'j'utilise le codename et non le nom que tu as donné à l'onglet
For k = 1 To .[A65000].End(3).Row ' boucle sur feuil4 de ligne1 à la derniere ligne
'on cherche sur toute la ligne si on trouve nom (exemple GH7)
Set c = .Range("B" & k & ":IV" & k).Find(nom, LookIn:=xlValues, LookAt:=xlWhole)
If c = nom Then 'on a trouvé
 If Err = 0 Then 'si pas d'error sinon va à Else
 sup = .Range("A" & c.Row) 'on trouve le nom du superviseur
 'on a le nom mais faut verifier en Prévi!
 i = Application.Match(sup, [Prévi!A1:A500], 0) 'i renvoie le N°ligne du superviseur en Prévi
    If Target.Column = 11 Then 'colonne 11 c'est un 1er tour
    'si cellule(ligne,colonne)=rien
         If Feuil3.Cells(i, 2) = "" And Feuil3.Cells(i, 3) = "" Then
         '1ere boucle lig=0 donc 0=0+1 soit 1 et aprés 1=1+1 donc 2 et ainsi de suite
             lig = lig + 1: Feuil2.Cells(lig, 10) = sup 'on écrit le nom du superviseur en sups!
         End If
    Else
    'ici c'est pas le 1er tour il faut pas de "x" en col B
        If Feuil3.Cells(i, 2) = "" Then lig = lig + 1: Feuil2.Cells(lig, 10) = sup
    End If
 Else
  Err.Clear 'on efface les error éventuelles
 End If
End If
Set c = Nothing 'on enlève de la mémoire c afin de recommencer la boucle
Next ' fin de la boucle on retourne au For....
End With
End Sub
 

grodep

XLDnaute Occasionnel
Re : Liste de validation à partir de listes croisées

ça parait tellement simple comme ça! Super boulot, vraiment merci pour le travail et la rapidité !

NB: penses tu qu'une automatisation de la tache serait possible ? J'entends par là, que le remplissage de chaque case par un superviseur serait effectué par une macro en remplissant certaines conditions.
 

youky(BJ)

XLDnaute Barbatruc
Re : Liste de validation à partir de listes croisées

Oui! C'est surement possible.
Pour cela il faut bosser sur le véritable fichier et connaitre exactement tout
surtout la feuille Prévis ( je pense encore incomplète)
Tu peux si tu le souhaite m'envoyer un message privé ou je te donnerais mon Email
C'est pour plus de confidentialité du fichier si besoin.
Bruno
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 958
Membres
103 990
dernier inscrit
lamiadebz