Relation entre 3 combobox

Bonjour,

J'ai un souci de programmation et je vois pas où (je crois que mon cerveau ne dois plus fonctionner!!!!)

J'ai 3 colonnes (D;E;F) et 3 combobox.

Je voudrai que dans la 1ere combo s'affiche les données de la colonne E sans doublons

Dans la 2ème je voudrai les données de la colonne D en lien avec la E sans doublons

Ex: Pour 2 il y a INS0579A et INS0600A

Dans la 3eme meme principe mais entre E et F sans doublons aussi

J'ai une partie de code qui fonctionne dans un autre fichier mais pas dans celui la :

Je mets aussi ci joint le fichier

Merci

Option Explicit

Dim Ws As Worksheet

Dim NbLignes As Integer

Private Sub UserForm_Initialize()

Set Ws = Worksheets("Base")

NbLignes = Ws.Range("A65536").End(xlUp).Row

'Remplissage du ComboBox1

Alim_Combo 1

End Sub

Private Sub ComboBox1_Change()

Alim_Combo 2, ComboBox1.Value

End Sub

Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant)

Dim j As Integer

Dim Obj As Control

Set Obj = Me.Controls("ComboBox" & CbxIndex)

Obj.Clear

If CbxIndex = 1 Then

For j = 3 To NbLignes

Obj = Ws.Range("A" & j)

If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j)

Next j

Else

For j = 3 To NbLignes

If Ws.Range("A" & j).Offset(0, CbxIndex - 2) = Cible Then

Obj = Ws.Range("A" & j).Offset(0, CbxIndex - 1)

If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j).Offset(0, CbxIndex - 1)

End If

Next j

End If

Obj.ListIndex = -1

End Sub

78test-vba.zip (53.84 Ko)

Bonjour,

Apparemment tu a copié le code à partir d'un autre modèle mais tu a oublier d'adapter la colonne.

La macro d'origine travail sur la colonne A et ta feuille a des données dans la colonne D

A+

Oui je sais mais meme avec D sa marche pas

La j'ai fais un copier coller du fichier qui marche

Ton classeur en retour.

Ne fonctionnait pas parce que ...

1) Les lettres des colonnes n'étaient pas justes

2) Le test entre les cellules et cible >> Cellules au format Nombre et Cible au format String

J'ai aussi ajouter une variable globale NoAction qui évite de faire tourner la macro 2 à chaque fois que tu met une valeur dans Combo1.

J'ai rien trouver pour le remplissage du Combo3

A+

Edit : Supprimer le fichier obsolète

Merci beaucoup

C'est deja super sympa

Je vais essayer de trouver pour la 3eme combo

Encore merci

En relisant ta question...essaye avec

Private Sub ComboBox1_Change()
    'Eviter d'envoyer la macro à chaque itération du remplissage du Combo1
    If NoAction Then Exit Sub
    Alim_Combo 2, ComboBox1.Value
    Alim_Combo 3, ComboBox1.Value
End Sub

Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant)
Dim j As Integer
Dim Obj As Control

    Set Obj = Me.Controls("ComboBox" & CbxIndex)
    Obj.Clear
    NoAction = True
    If CbxIndex = 1 Then
        For j = 3 To NbLignes
            Obj = Ws.Range("E" & j)
            If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("E" & j)
        Next j
    ElseIf CbxIndex = 2 Then
        For j = 3 To NbLignes
            If Ws.Range("E" & j) = CInt(Cible) Then
            Obj = Ws.Range("D" & j)
            If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("D" & j)
            End If
        Next j
    ElseIf CbxIndex = 3 Then
        For j = 3 To NbLignes
            If Ws.Range("E" & j) = CInt(Cible) Then
            Obj = Ws.Range("F" & j)
            If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("F" & j)
            End If
        Next j

    End If
    On Error Resume Next
    Obj.ListIndex = 0
    On Error GoTo 0
    NoAction = False
End Sub

A+

non sa marche pas j'ai aucun combo qui est rempli

Ca fonctionne mais y faut faire une sélection dans Combo1, si tu veux le remplissage direct recopie..

Private Sub UserForm_Initialize()
    Set Ws = Sheets("Base")
    NbLignes = Ws.Range("D65536").End(xlUp).Row
    'Remplissage du ComboBox1
    Alim_Combo 1
    Alim_Combo 2, ComboBox1.Value
    Alim_Combo 3, ComboBox1.Value

End Sub

A+

Je te renvoi le fichier car j'arrive pas meme avec tes explications clair

Peux tu m'aider stp

1141test-vba.zip (55.42 Ko)

comprend pas, , ton classeur fonctionne tip-top ?

Comment tu ouvre l'UF ?

Mettre le curseur dans le code de UserForm_Initialize et taper F5

Les trois combo sont rempli

Si ça ne va toujours pas regarde les références qui sont cochées et tu dis.

--> Outils --> Références

Sa marche tjs pas

Dans les references j'ai les 5 premieres de cochées

OK je viens de constater que le code fonctionne mais avec un arrêt dans le code ?? je teste pour y remédier et je reviens.


Je me suis tromper avec les noms de classeur identique, tu n'a pas adapter le code que j'ai mis dans les postes précédants.

Mais même avec mon classeur, c'est la première fois que j'ai un tel problème, ça fonctionne quand je lance le code à partir de l'éditeur de code avec un point d'arrêt mais quan je lance sans point d'arrêt ça va plus.

Enfin soit, j'ai tout simplifié, ce n'est pas nécessaire de se compliquez la tâche avec des objets, j'ai tout viré.

Et maintenant ça fonctionne impec à partir du bouton que j'ai mis dans la feuille.

Tu dis

Edit : supprimer le fichier obsolète

cool merci bcp

Juste une derniere question apres je te laisse tranquille

C'est possible que les combo soit vide si on choisi rien??

le 2 et le 3 ?

quand j'ai mis "cool merci bcp" sa voulait dire que sa marche

En fait je voudrai que lorsque je lance l'appli, les combo soit vide et non avec des données d'affiché

quand j'ai mis "cool merci bcp" sa voulait dire que sa marche

Sorry, j'avais pas fais le rapport.. mais maintenant j'ai mis mes lunettes

Mais ce que tu demande c'est pas clair, tu veux QUEL COMBO VIDE quand tu lance l'UF ?

Si le 1 doit aussi être vide faudra un bouton pour lancer le processus.

EDIT : Je pense que j'ai compris, tu veux que les 3 combo soient rempli avec les données MAIS QUE LES FENÊTRES soient vide ?

C'est ça?

Dans ton fichier, quand je clique sur le bouton j'ai les 3 combo qui affiche quelque chose directement tu est d'accord??

Moi ce que je veux c'est que lorsque je clique sur le meme bouton, les combo soient vides pour que je choisisse

Ex: A l'ouverture : combo1:Vide - Combo2:Vide - Combo3:Vide

Puis apres je choisi dans combo1 : 5, ce qui affiche dans combo 2 :INS1234/INS4567..... et pareil entre combo 2 et 3

EDIT : Oui c'est sa

Voire mon édit dans poste précédant.

Problème exposer clairement se comprend aisément.

Ton classeur en retour.

A+


C'est pas encore tout à fait bon à mon gout.

C'est presque sa

Les combo sont vides au debut c'est bon

Par contre quand je choisi la 1ere combo (ex : 5), je ne veux pas que tout s'affiche

En resume c'est sa :

selection dans Combo 1: Combo1 rempli, Combo2 vide, Combo3 vide

selection dans Combo 2: Combo1 rempli, Combo2 rempli mais en fonction du choix de combo1, Combo3 vide

selection dans Combo 3: Combo1 rempli, Combo2 rempli mais en fonction du choix de combo1, Combo3 rempli mais en fonction du choix de combo2

Je me suis peut etre mal exprime au debut mais je commence en VBA et je connais pas trop les termes

Excuse moi

selection dans Combo 1: Combo1 rempli, Combo2 vide, Combo3 vide

????????? Comment tu veux faire une sélection dans combo1 s'il est vide

Là nous avons un noeux

EDIT : Je commence à m'habituer à ta façon de t'exprimer.et je pense que j'ai compris

Je modifie et reviens.

Rechercher des sujets similaires à "relation entre combobox"