Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Dde Rens.] Combobox liées dans USF

3 réponses
Avatar
Daniel
Bonjour,

Après des recherches infructueuses sur le net, je pose mon problème ici.
Je souhaite dans un userform avoir 2 combobox (ou 2 listbox peu importe
les éléments des listes sont fixes mais je préfère l'apparence des
combobox plutôt que celle des listbox)
Dans la première, il y a une liste d'articles (genre A, B, C, D, ...) et
dans la seconde une liste de taille. Or la liste de taille n'est pas la
même suivant qu'il s'agisse de l'article A ou de l'article B ou de
l'article C etc (bien que 2 articles peuvent avoir une même liste de
taille).
Je souhaiterai donc qu'en fonction d el'article choisit dans la première
combobox, la liste qui soit dans la seconde soit celle qui va bien.

exemple :
choix CBB1 : A => choix possible CCB2 : 7 / 8 / 9 / ...
choix CBB1 : B => choix possible CCB2 : 36 / 38 / 40 / ...
choix CBB1 : C => choix possible CCB2 : T0 / T1 / T2 / ...
choix CBB1 : D => choix possible CCB2 : 36 / 38 / 40 / ...
etc..

Peut-être que mon idée n'est pas la bonne et que cela n'est pas
réalisable mais je ne vois pas comment faire sinon.

Merci d'avance

Daniel

3 réponses

Avatar
lSteph
Bonjour,

Private Sub UserForm_Initialize()
ComboBox1.List = Array("A", "B", "C", "D")
ComboBox2.Visible = False
End Sub


Private Sub ComboBox1_Change()
Dim i As Integer
ComboBox2.Clear
ComboBox2.Visible = True
Select Case ComboBox1
Case "A"
For i = 1 To 6
ComboBox2.AddItem i + 6
Next
Case "B", "D"
For i = 36 To 62 Step 2
ComboBox2.AddItem i
Next
Case "C"
For i = 1 To 15
ComboBox2.AddItem "T" & i
Next
Case Else
ComboBox2.Visible = False
End Select
End Sub

'lSteph



On 25 sep, 16:43, Daniel
wrote:
Bonjour,

Après des recherches infructueuses sur le net, je pose mon problème i ci.
Je souhaite dans un userform avoir 2 combobox (ou 2 listbox peu importe
les éléments des listes sont fixes mais je préfère l'apparence de s
combobox plutôt que celle des listbox)
Dans la première, il y a une liste d'articles (genre A, B, C, D, ...) e t
dans la seconde une liste de taille. Or la liste de taille n'est pas la
même suivant qu'il s'agisse de l'article A ou de l'article B ou de
l'article C etc (bien que 2 articles peuvent avoir une même liste de
taille).
Je souhaiterai donc qu'en fonction d el'article choisit dans la premièr e
combobox, la liste qui soit dans la seconde soit celle qui va bien.

exemple :
choix CBB1 : A => choix possible CCB2 : 7 / 8 / 9 / ...
choix CBB1 : B => choix possible CCB2 : 36 / 38 / 40 /  ...
choix CBB1 : C => choix possible CCB2 : T0 / T1 / T2 /  ...
choix CBB1 : D => choix possible CCB2 : 36 / 38 / 40 /  ...
etc..

Peut-être que mon idée n'est pas la bonne et que cela n'est pas
réalisable mais je ne vois pas comment faire sinon.

Merci d'avance

Daniel


Avatar
Daniel
Bonjour,

Un grand merci à lSteph pour son aide.
Cela fonctionne impeccablement (en plus c'est très instructif pour moi
de pouvoir suivre les instructions et de comprendre leur effet).
Si je reposte à nouveau c'est parce que mon fichier est appelé à être
tenu par des tiers et je ne pense pas qu'éditer le code VBA les
"brancheront" pour rajouter un article.
A la rigueur ils iront dans la feuille "Liste" et l'ajouteront à la
suite [il faudra bien un minimum ;-)]
Je souhaitais donc utiliser plutôt une méthode, pour remplir la
comboBoxArticle à partir du choix de la comboBoxCatégorie, du genre :

Private Sub ComboBoxArticle_Change()
Dim i As Integer
USF_Saisie.ComboBoxArticle.Clear
With Sheets("Liste")
For i = 2 To .[A65536].End(xlUp).Row
If USF_Saisie.ComboBoxCategorie.Value = .Cells(i, A) Then
USF_Saisie.ComboBoxArticle.AddItem .Cells(i, C)
End If
Next
End With

End Sub

Mais la ComboBoxArticle reste désespérement vide...
(même pas un message d'erreur)

Dans la feuille Liste j'ai en colonne A les catégories et en colonne C
les articles (environ 7 catégorie pour 250 articles).
Pour remplir la ComboBoxCategorie à l'initialisation du UserForm, je
fais, via une macro, un filtre élaboré de la colonne A vers une autre
colonne pour n'avoir pas de doublon. Cette dernière colonne est nommée
et ensuite j'utilise tout simplement l'instruction :
ComboBoxCategorie.RowSource = ("Liste!categorie")

Tout ça va très bien sauf qu'après le choix de la catégorie dans la
ComBoBoXCategorie, la ComBoBoxArticle ne se remplit pas.


Daniel





lSteph a écrit :
Bonjour,

Private Sub UserForm_Initialize()
ComboBox1.List = Array("A", "B", "C", "D")
ComboBox2.Visible = False
End Sub


Private Sub ComboBox1_Change()
Dim i As Integer
ComboBox2.Clear
ComboBox2.Visible = True
Select Case ComboBox1
Case "A"
For i = 1 To 6
ComboBox2.AddItem i + 6
Next
Case "B", "D"
For i = 36 To 62 Step 2
ComboBox2.AddItem i
Next
Case "C"
For i = 1 To 15
ComboBox2.AddItem "T" & i
Next
Case Else
ComboBox2.Visible = False
End Select
End Sub

'lSteph



On 25 sep, 16:43, Daniel
wrote:

Bonjour,

Après des recherches infructueuses sur le net, je pose mon problème ici.
Je souhaite dans un userform avoir 2 combobox (ou 2 listbox peu importe
les éléments des listes sont fixes mais je préfère l'apparence des
combobox plutôt que celle des listbox)
Dans la première, il y a une liste d'articles (genre A, B, C, D, ...) et
dans la seconde une liste de taille. Or la liste de taille n'est pas la
même suivant qu'il s'agisse de l'article A ou de l'article B ou de
l'article C etc (bien que 2 articles peuvent avoir une même liste de
taille).
Je souhaiterai donc qu'en fonction d el'article choisit dans la première
combobox, la liste qui soit dans la seconde soit celle qui va bien.

exemple :
choix CBB1 : A => choix possible CCB2 : 7 / 8 / 9 / ...
choix CBB1 : B => choix possible CCB2 : 36 / 38 / 40 / ...
choix CBB1 : C => choix possible CCB2 : T0 / T1 / T2 / ...
choix CBB1 : D => choix possible CCB2 : 36 / 38 / 40 / ...
etc..

Peut-être que mon idée n'est pas la bonne et que cela n'est pas
réalisable mais je ne vois pas comment faire sinon.

Merci d'avance

Daniel






Avatar
LSteph
Bonjour Daniel,

dans le code du userform où se trouvent les deux combo...:

Private Sub ComboBoxCategorie_Change()
Dim i As Integer
ComboBoxArticle.Clear
With Sheets("Liste")
For i = 2 To .[A65536].End(xlUp).Row
If .Cells(i, 1)= ComboBoxCategorie Then
ComboBoxArticle.AddItem .Cells(i, 3)
End If
Next
End With

End Sub

'lSteph

Daniel a écrit :
Bonjour,

Un grand merci à lSteph pour son aide.
Cela fonctionne impeccablement (en plus c'est très instructif pour moi
de pouvoir suivre les instructions et de comprendre leur effet).
Si je reposte à nouveau c'est parce que mon fichier est appelé à être
tenu par des tiers et je ne pense pas qu'éditer le code VBA les
"brancheront" pour rajouter un article.
A la rigueur ils iront dans la feuille "Liste" et l'ajouteront à la
suite [il faudra bien un minimum ;-)]
Je souhaitais donc utiliser plutôt une méthode, pour remplir la
comboBoxArticle à partir du choix de la comboBoxCatégorie, du genre :

Private Sub ComboBoxArticle_Change()
Dim i As Integer
USF_Saisie.ComboBoxArticle.Clear
With Sheets("Liste")
For i = 2 To .[A65536].End(xlUp).Row
If USF_Saisie.ComboBoxCategorie.Value = .Cells(i, A) Then
USF_Saisie.ComboBoxArticle.AddItem .Cells(i, C)
End If
Next
End With

End Sub

Mais la ComboBoxArticle reste désespérement vide...
(même pas un message d'erreur)

Dans la feuille Liste j'ai en colonne A les catégories et en colonne C
les articles (environ 7 catégorie pour 250 articles).
Pour remplir la ComboBoxCategorie à l'initialisation du UserForm, je
fais, via une macro, un filtre élaboré de la colonne A vers une autre
colonne pour n'avoir pas de doublon. Cette dernière colonne est nommée
et ensuite j'utilise tout simplement l'instruction :
ComboBoxCategorie.RowSource = ("Liste!categorie")

Tout ça va très bien sauf qu'après le choix de la catégorie dans la
ComBoBoXCategorie, la ComBoBoxArticle ne se remplit pas.


Daniel





lSteph a écrit :
Bonjour,

Private Sub UserForm_Initialize()
ComboBox1.List = Array("A", "B", "C", "D")
ComboBox2.Visible = False
End Sub


Private Sub ComboBox1_Change()
Dim i As Integer
ComboBox2.Clear
ComboBox2.Visible = True
Select Case ComboBox1
Case "A"
For i = 1 To 6
ComboBox2.AddItem i + 6
Next
Case "B", "D"
For i = 36 To 62 Step 2
ComboBox2.AddItem i
Next
Case "C"
For i = 1 To 15
ComboBox2.AddItem "T" & i
Next
Case Else
ComboBox2.Visible = False
End Select
End Sub

'lSteph



On 25 sep, 16:43, Daniel
wrote:

Bonjour,

Après des recherches infructueuses sur le net, je pose mon problème ici.
Je souhaite dans un userform avoir 2 combobox (ou 2 listbox peu importe
les éléments des listes sont fixes mais je préfère l'apparence des
combobox plutôt que celle des listbox)
Dans la première, il y a une liste d'articles (genre A, B, C, D, ...) et
dans la seconde une liste de taille. Or la liste de taille n'est pas la
même suivant qu'il s'agisse de l'article A ou de l'article B ou de
l'article C etc (bien que 2 articles peuvent avoir une même liste de
taille).
Je souhaiterai donc qu'en fonction d el'article choisit dans la première
combobox, la liste qui soit dans la seconde soit celle qui va bien.

exemple :
choix CBB1 : A => choix possible CCB2 : 7 / 8 / 9 / ...
choix CBB1 : B => choix possible CCB2 : 36 / 38 / 40 / ...
choix CBB1 : C => choix possible CCB2 : T0 / T1 / T2 / ...
choix CBB1 : D => choix possible CCB2 : 36 / 38 / 40 / ...
etc..

Peut-être que mon idée n'est pas la bonne et que cela n'est pas
réalisable mais je ne vois pas comment faire sinon.

Merci d'avance

Daniel