• Initiateur de la discussion Initiateur de la discussion J-c
  • 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 !

J-c

XLDnaute Junior
Bonjour a tous

J'ai de nouveau besoin de votre aide.
Pouvez vous me dir, pourquoi dans l'exemple que je vous joint,
si la valeur de la colonne B de la base est un chiffre,la cascade s'arrete
Cordialement J-C

Code:
Option Explicit

Dim Ws As Worksheet
Dim NbLignes As Integer

[COLOR="Green"]'Les données sont dans les colonnes A à D, d'un onglet nommé "Base".
'La procédure effectue un remplissage conditionnel des Combobox en fonction de
'ce qui est sélectionnée dans le contrôle précédent:
'La sélection du ComboBox1 (données colonne A) définit le contenu du ComboBox2 (données colonne B) ,
'La sélection du ComboBox2 définit le contenu du ComboBox3 (données colonne C) …etc...[/COLOR]

Private Sub UserForm_Initialize()
    [COLOR="green"]'Définit la feuille contenant les données[/COLOR]
    Set Ws = Worksheets("Base")
   [COLOR="green"] 'Définit le nombre de lignes dans la colonne A[/COLOR]
    NbLignes = Ws.Range("A65536").End(xlUp).Row
    
    [COLOR="green"]'Remplissage du ComboBox1[/COLOR]
    Alim_Combo 1
    
End Sub


Private Sub ComboBox1_Change()
    [COLOR="green"]'Remplissage Combo2[/COLOR]
    Alim_Combo 2, ComboBox1.Value
End Sub


Private Sub ComboBox2_Change()
    [COLOR="green"]'Remplissage Combo3[/COLOR]
    Alim_Combo 3, ComboBox2.Value
End Sub


Private Sub ComboBox3_Change()
    [COLOR="green"]'Remplissage Combo4[/COLOR]
    Alim_Combo 4, ComboBox3.Value
End Sub



[COLOR="green"]'Procédure pour alimenter les ComboBox[/COLOR]
Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant)
    Dim j As Integer
    Dim Obj As Control
    
    [COLOR="green"]'Définit le ComboBox à remplir[/COLOR]
    Set Obj = Me.Controls("ComboBox" & CbxIndex)
   [COLOR="green"] 'Supprime les anciennes données[/COLOR]
    Obj.Clear
    
   [COLOR="green"] 'alimente le Combobox initial (Combobox1)[/COLOR]
    If CbxIndex = 1 Then
       [COLOR="green"] 'Boucle sur les lignes de la colonne A (à partir de la 2eme ligne)[/COLOR]
        For j = 2 To NbLignes
            Obj = Ws.Range("A" & j)
           [COLOR="green"] 'Remplit le ComboBox sans doublons[/COLOR]
            If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j)
        Next j
    Else
       [COLOR="green"] 'Alimentation conditionnelle des autres Combobox en fonction de
        'ce qui est sélectionnée dans le contrôle précédent:
        '(La sélection du ComboBox1 définit le contenu du ComboBox2,
        'La sélection du ComboBox2 définit le contenu du ComboBox3 …etc...)[/COLOR]
        For j = 2 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
   
  [COLOR="green"] 'Enlève la sélection dans le ComboBox[/COLOR]
   Obj.ListIndex = -1
End Sub
 

Pièces jointes

Dernière édition:
Re : Cascade de combobox

Salut Michel 😉

Comme tu l'as dis, wouhaouuu ça m'arrache les yeux à chaque fois que je viens sur le fil 😱

Du coup j'suis obligé de mettre des lunettes de soleil 😀

A+
 
Re : Cascade de combobox

Bonsoir a tous
voici pourquoi,
Code:
For j = 2 To NbLignes
            If Ws.Range("A" & j).Offset(0, CbxIndex - 2)[COLOR="Red"].Text[/COLOR] = 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
A bientot.
ps:
écoute les bon conseils de BrunoM45 et Mj13 se sont des anciens du forum (toutes les critiques sont bonnes quelques part)
 
- 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

Réponses
3
Affichages
265
Réponses
9
Affichages
256
Réponses
8
Affichages
270
Réponses
10
Affichages
533
Réponses
5
Affichages
312
Retour