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

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

  • ListesLiees.xls
    26 KB · Affichages: 165

jp14

XLDnaute Barbatruc
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

  • ListesLieesv3.zip
    26.8 KB · Affichages: 108
Dernière édition:

JEJSLY

XLDnaute Nouveau
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:

JEJSLY

XLDnaute Nouveau
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

  • Archives.Zip
    40.2 KB · Affichages: 70
  • Archives.Zip
    40.2 KB · Affichages: 66
  • Archives.Zip
    40.2 KB · Affichages: 68
Dernière édition:

jp14

XLDnaute Barbatruc
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
 

JEJSLY

XLDnaute Nouveau
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
 

JEJSLY

XLDnaute Nouveau
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?
 

Discussions similaires

Statistiques des forums

Discussions
312 373
Messages
2 087 726
Membres
103 655
dernier inscrit
MOUNIRACH16