Trois Listes déroulantes liés, sans doublons dans la deuxième liste?

  • Initiateur de la discussion Initiateur de la discussion JEJSLY
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JEJSLY

XLDnaute Nouveau
Bonjour à tous,

Aprés avoir beaucoup cherché dans les forums et n'ayant pas trouvé de solution,
je me suis décidé à poser ma question.

Je souhaiterais avoir trois listes déroulantes.
Il faudrait que la seconde dépende de la première
et que la troisième dépende de la première et de la seconde.

Ces trois listes provenant d'une bdd, la seconde et la troisième listes ne doivent pas être figés (de nouvelles donnés enchériront
ces deux listes)

D'autre part, il faudrait qu'il n'y ai pas de doublons dans la seconde liste.

Je vous joint mon fichier.

Je vous remercie de votre aide.

jej
 

Pièces jointes

Re : Trois Listes déroulantes liés, sans doublons dans la deuxième liste?

Bonsoir le fil
Bonsoir skoobi
Bonsoir jeanpierre

Ci joint le fichier avec les trois liste de validation et le remplissage des cellules en fonction du choix.

J'ai rajouté une macro pour remplir la première liste la formule n'étant valable que si les noms dans la colonnes A de la feuille "BDD" sont triés.

La partie qui réalise le tri a été développée par PierreJean.

J'utilise un artifice pour remplir la liste de validation, existe-t'il une autre méthode, par exemple affecter à la liste un tableau, une collection ? Si oui quelle est la syntaxe d'écriture.
Ce qui simplifierait les macros.


A tester

JP
PS version 3 avec tri croissant ou décroissant
 

Pièces jointes

Dernière édition:
Re : Trois Listes déroulantes liés, sans doublons dans la deuxième liste?

Bonsoir le forum,

Skoobi, merci pour la version allégé de ton fichier, cela fonctionne j'ai pu l'adapter comme j'en avais envie. 🙂

jp14, je n'arrive toujours pas à adapter ta macro évènementielle cf:

Bonsoir, jp14, skoobi, jeanpierre,

Merci de prendre du temps pour moi!

JP,
Je suis en train de regarder ton code, avec ma si petite expérience...
C'est pour pouvoir récupérer ces données dans un autre classeur!
J'ai donc décalé Liste Documents en $AP
mais après je ne sais pas comment faire remplir automatiquement
"CHOIX!$D$:$AN$2" en fonction de "CHOIX!$A$2:$C$2" ?
Le fichier en pièce joint.
merci!

J'aurais bien essayé de comprendre cette autre approche.
si t'as un peu de temps pour m'aider...

Cordialement
jej

jp14, J'avais pas vu ton dernier post...
 
Dernière édition:
Re : Trois Listes déroulantes liés, sans doublons dans la deuxième liste?

Bonjour jp14, skoobi, jeanpierre, le forum,

jp14, merci bcp! 🙂
Ta version 3 est parfaite, très légère et donc bien compatible avec le reste de mes docs et macros.
Je l'ai adapté à mes docs et pas de probs, puis pour voir jusqu'où je pouvais aller, j'ai essayé de rajouter une colonne de validation.
Mais je n'est comme choix de validation dans cette nouvelle colonne, que les choix de la colonne précédente 🙁

Voici les changements que j'ai fait:
(La feuille ne s'appelle plus BDD, mais Archives)

Code:
'*********************
If Not Intersect([c2:c2], Target) Is Nothing Then
    flag = 1
    Range("d2") = ""
    Call remplirliste("Archives", "D", Target.Value, -1, (Target.Offset(0, -2).Value & Target.Offset(0, -1).Value & Target), -3, True, 3)
    If data1 = "" Then data1 = " "
    Range("d2").Select
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=data1
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    
End If
'*****************************************
If Not Intersect([d2:d2], Target) Is Nothing Then
Dim lig As Long
Dim i As Long
flag = 1

lig = rechercheligne("Archives", "A", Target.Offset(0, -3).Value & Target.Offset(0, -2).Value & Target.Offset(0, -1).Value & Target, 4, 3)
For i = 5 To Sheets(ActiveSheet.Name).Range("IV1").End(xlToLeft).Column
Sheets(ActiveSheet.Name).Cells(3, i) = Sheets("Archives").Cells(lig, i)
Next i
End If
 
   flag = 0
End Sub

Pourrais tu m'expliquer quelle est l'erreur?
(le doc en pièce jointe au cas ou.)

skoobi, je n'abandonnes pas ton fichier, il va me servir pour un autre doc.
merci encore🙂

Cordialement

jej
 

Pièces jointes

Dernière édition:
Re : Trois Listes déroulantes liés, sans doublons dans la deuxième liste?

Bonsoir

Pour rajouter une possibilité de test il faut modifier le test
Code:
 If (£data1 = cellule.Offset(0, £off1).Value And £data2 = cellule.Offset(0, £off2).Value) Or £test = False Then
 If (£data1 = cellule.Offset(0, £off1).Value And £data2 = cellule.Offset(0, £off2).Value And £data3 = cellule.Offset(0, £off3).Value) Or £test = False Then
ce qui entraîne une modification de la déclaration des variables
Code:
Private Sub remplirliste(£nomfeuille As String, £col2 As String, £data1 As String, £off1 As Long, £data2 As String, £off2 As Long, £data3 As String, £off3 As Long, £test As Boolean, £tri As Byte)
ensuite il faut modifier tous les call pour rajouter les variables supplémentaires
Code:
si un seul test
Call remplirliste("Archives", "b", Target.Value, -1, Target.Value, -1, Target.Value, -1,True, 1)
si deux tests
Call remplirliste("Archives", "c", Target.Value, -1, (Target.Offset(0, -1).Value), -2, Target.Value, -1, True, 2)
si trois tests par exemple
Call remplirliste("Archives", "c", Target.Value, -1, (Target.Offset(0, -1).Value), -2, (Target.Offset(0, -2).Value), -3, True, 2)
A tester

JP
 
Re : Trois Listes déroulantes liés, sans doublons dans la deuxième liste?

Re Bonsoir jp14,

j' ai pas bien compris pour les call?

ensuite il faut modifier tous les call pour rajouter les variables supplémentaires
Code:

si un seul test
Call remplirliste("Archives", "b", Target.Value, -1, Target.Value, -1, Target.Value, -1,True, 1)
si deux tests
Call remplirliste("Archives", "c", Target.Value, -1, (Target.Offset(0, -1).Value), -2, Target.Value, -1, True, 2)
si trois tests par exemple
Call remplirliste("Archives", "c", Target.Value, -1, (Target.Offset(0, -1).Value), -2, (Target.Offset(0, -2).Value), -3, True, 2)

cordialement

jej
 
Re : Trois Listes déroulantes liés, sans doublons dans la deuxième liste?

Re,

En fait c'est ok, j'avais juste oublié un "End If"!

Géant! ça fonctionne nickel

Merci à vous!

cordialement

jej

Ps: je ne sais pas comment clôturer cette discussion et si il faut le faire?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour