Combobox "liées" pour exclure les choix précédents

Bonjour,

J'ai créé un formulaire sur Excel avec plusieurs listes déroulantes, et j'aimerais que ces listes soient dépendantes les unes des autres. En effet, les choix possibles sont les mêmes pour toutes mes listes déroulantes, et j'aimerais que quand on a choisi une catégorie dans une liste, il ne soit plus possible de la choisir dans la suivante et ainsi de suite, facilitant le remplissage du formulaire et évitant les erreurs.

J'aimerais si possible ne pas passer par une base de données.

Pour le moment le code de mes listes est le suivant (sachant que ma combobox1 = CC1 et combobox2 = CC2 :

'Combobox avec liste de cost centre
With CC1
    .AddItem "84154 LUX"
    .AddItem "80690 Paris - 3155"
    .AddItem "80700 BV - 3155"
    .AddItem "61740 Val"
    .AddItem "55570 Compta Instit"
    .AddItem "80640 Londres"
    .AddItem "83040 Italy"
    .AddItem "02580 GC Custo"
    .AddItem "83330 BAU Card/DIM"
    .AddItem "FR80720 Madrid"
    .AddItem "FR09750 OTC"
    .AddItem "FR09920 MFS"

End With

'Combobox avec liste de cost centre
With CC2
    .AddItem "84154 LUX"
    .AddItem "80690 Paris - 3155"
    .AddItem "80700 BV - 3155"
    .AddItem "61740 Val"
    .AddItem "55570 Compta Instit"
    .AddItem "80640 Londres"
    .AddItem "83040 Italy"
    .AddItem "02580 GC Custo"
    .AddItem "83330 BAU Card/DIM"
    .AddItem "FR80720 Madrid"
    .AddItem "FR09750 OTC"
    .AddItem "FR09920 MFS"

Mais ce code donne tout les résultats possible à chaque fois et n'exclue pas le choix de la combobox2.

J'ai cherché dans le forum mais je ne trouve pas ce que je recherche. Je ne peux pas joindre le fichier maintenant car il s'agit d'un fichier d'entreprise. Existe t'il une fonction que je peux rajouter à mon code pour exclure le choix précédent ?

Merci d'avance,

En vous souhaitant une belle fin de journée

Jeanne

Bonjour

Un essai

Bonjour jeannebrnd,

Une solution très simple est la suivante:

à l'ouverture de ton formulaire, seule la première liste déroulante est initialisée. Lorsqu'un élément est sélectionné de cette dernière, la seconde liste se remplie avec tous les éléments non sélectionnés de la première liste, et ainsi de suite.

Ci-joint une proposition

37jeannebrnd.xlsm (18.09 Ko)

Bonjour,

Merci beaucoup de votre aide.

Cependant, ça ne marche pas sur mon fichier :'(

Il semble ne pas reconnaitre le terme "Selected" dans mon code...

'Combobox avec liste de cost centre
With CC1
    .AddItem "84154 LUX"
    .AddItem "80690 Paris - 3155"
    .AddItem "80700 BV - 3155"
    .AddItem "61740 Val"
    .AddItem "55570 Compta Instit"
    .AddItem "80640 Londres"
    .AddItem "83040 Italy"
    .AddItem "02580 GC Custo"
    .AddItem "83330 BAU Card/DIM"
    .AddItem "FR80720 Madrid"
    .AddItem "FR09750 OTC"
    .AddItem "FR09920 MFS"

End With

CC2.Clear
CC3.Clear

End Sub

Private Sub remplir_CC2()

Dim i As Integer
For i = 0 To CC1.ListRows - 1
    If CC1.Selected(i) = 0 Then CC2.AddItem CC1.List(i)

Next i

End Sub

Private Sub remplir_CC3()
Dim i As Integer
For i = 0 To CC2.ListRows - 1
    If Not CC2.Selected(i) Then CC3.AddItem CC2.List(i)
Next i
End Sub

Private Sub CC1_Click()
CC2.Clear
CC3.Clear
remplir_CC2
End Sub

Private Sub ListBox2_Click()
CC2.Clear
remplir_CC3
End Sub

Merci d'avance,

Bonne soirée à vous

Jeanne

Bonjour à tous,

Un petit coup de main s'il vous plait :'(

Je ne trouve vraiment pas ce qui ne va pas...

J'ai essayé de modifier le code proposé plus haut en l'adaptant au fichier, ce qui donne ceci :

'Combobox avec liste de cost centre
Private Sub userform_initialize ()
With CC1
    .AddItem "84154 LUX"
    .AddItem "80690 Paris - 3155"
    .AddItem "80700 BV - 3155"
    .AddItem "61740 Val"
    .AddItem "55570 Compta Instit"
    .AddItem "80640 Londres"
    .AddItem "83040 Italy"
    .AddItem "02580 GC Custo"
    .AddItem "83330 BAU Card/DIM"
    .AddItem "FR80720 Madrid"
    .AddItem "FR09750 OTC"
    .AddItem "FR09920 MFS"

End With

End Sub

Private Sub CC2_Change()

Dim i As Integer

CC2.Clear
CC3.Clear

'Combobox CC2

For i = 0 To CC1.ListCount - 1
    If CC1.Selected(i) = 0 Then
    CC2.AddItem CC1.List(i)
    End If
Next i

End Sub

Private Sub CC3_Change()

Dim i As Integer

CC3.Clear

'Combobox CC3

For i = 0 To CC2.ListCount - 1
    If Not CC2.Selected(i) Then
    CC3.AddItem CC2.List(i)
    End If
Next j

End Sub

Ma zone de liste modifiable se remplit bien des centres de cout mais les autres zones de liste modifiables restent désespérément vide...

AVez vous une idée de pourquoi ?

Merci d'avance

En vous souhaitant une bonne après midi !

Jeanne

Un petit j s'était perdu en chemin mais voici le code que j'utilise

With CC1
    .AddItem "84154 LUX"
    .AddItem "80690 Paris - 3155"
    .AddItem "80700 BV - 3155"
    .AddItem "61740 Val"
    .AddItem "55570 Compta Instit"
    .AddItem "80640 Londres"
    .AddItem "83040 Italy"
    .AddItem "02580 GC Custo"
    .AddItem "83330 BAU Card/DIM"
    .AddItem "FR80720 Madrid"
    .AddItem "FR09750 OTC"
    .AddItem "FR09920 MFS"

End With

End Sub

Private Sub CC2_Change()

Dim i As Integer

CC2.Clear
CC3.Clear

'Combobox CC2

For i = 0 To CC1.ListCount - 1
    If Not CC1.Selected(i) = 0 Then
        CC2.AddItem CC1.List(i)
    End If
Next i

End Sub

Private Sub CC3_Change()

Dim i As Integer

CC3.Clear

'Combobox CC3

For i = 0 To CC2.ListCount - 1
    If Not CC2.Selected(i) Then
        CC3.AddItem CC2.List(i)
    End If
Next i

End Sub

Si c'est vraiment le code dans ton Userform, tu devrais avoir que des messages d'erreur.

CF un code corrigé. Les listbox s'appelent CC1 CC2 et CC3

34jeannebrndv2.xlsm (14.01 Ko)

Bonjour,

Merci pour ton aide, malheureusement meme en utilisant strictement le meme code que toi, ça ne marche pas sur mon fichier...

Je ne comprend pas pourquoi

Je posterais mon fichier ce soir du coup, car je suis en entreprise et la circulation des fichiers avec macro est interdite.

Merci pour ton aide,

Jeanne

Bah comment s'appelent tes listbox???

Si elles ne s'appelent pas CC1, CC2 et CC3 ça ne marchera jamais ^^

Le code est vraiment basique, je ne vois pas ce qui pourrait planter.

Lorsque tu lances ton formulaire, la première liste se remplie bien?

Si oui:

-> vérifie les noms des deux autres listbox -> CC2 et CC3

Si non:

-> vérifie le nom de toutes les listbox

Si tous les noms sont correctes et que ça ne marche toujours pas ->

jeannebrnd

J'ai vérifié, tout est bon de ce coté la : c'est à n'y rien comprendre !

Je joins le fichier ce soir.

Un grand merci pour ton aide

Bonsoir,

Ci joint le fameux fichier...

Le code est bien long mais j'essaye de faire quelque chose le plus exhaustif possible...

Comme tu peux voir, j'y ai inséré ton code qui ne fonctionne pas sur mon fichier

Merci d'avance

Jeanne

Bonsoir

Si c'est le même fichier que dans l'autre post

Private Sub remplirCC2()
Dim I As Integer
For I = 0 To CC1.ListCount - 1
    'If Not CC1.Selected(i) Then CC2.AddItem CC1.List(i)
    If Not CC1.ListIndex = I Then CC2.AddItem CC1.List(I)
Next I
End Sub

Private Sub remplirCC3()
Dim I As Integer
For I = 0 To CC2.ListCount - 1
    'If Not CC2.Selected(i) Then CC3.AddItem CC2.List(i)
    If Not CC2.ListIndex = I Then CC3.AddItem CC2.List(I)
Next I
End Sub

ça marche aussi...

J'ai vraiment passé des heures sur le sujet donc un ENORME merci !!!!!!!

Rechercher des sujets similaires à "combobox liees exclure choix precedents"