XL 2019 Alimenter une combobox à partir des données d'une colonne et conditionnées par des données d'une autre colonne

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 !

DELHOMME

XLDnaute Nouveau
Bonjour à tous,
Je suis nouveau sur le forum et nouveau en VBA...
Je souhaite trouver la procédure qui me permettrait d'alimenter une combobox dans un userform à partir :
- des données d'une colonne X dans une feuille "source"
- et conditionnées par des données d'une colonne Y de la même feuille "source".
La seule solution qui se rapproche le plus à ma recherche est celle de jacques Boisgontier : http://boisgontierjacques.free.fr/pages_site/formulairebases.htm#ComboBox

ComboBox ou ListBox conditionnel
On ne veut afficher dans le Combobox ou Listbox que les noms qui ont x en colonne B. Il y a 12.000 items
A B
1 Noms
2 Nom1 x
3 Nom2
4 Nom3 x
5 Nom4 x
6 Nom5

ListBox condition

1- avec Additem (2,5 sec)
Private Sub UserForm_Initialize()
Set f = Sheets("bd")
Set Rng = f.Range("A2:A" & f.[A65000].End(xlUp).Row)
For Each c In Rng
If c.Offset(, 1) = "x" Then Me.ListBox1.AddItem c
Next c
End Sub

J'ai tenté de l'adapter dans mon userform mais plantage...

Je n'ai pas vu dans les forums des réponses à ce sujet (autre que combobox en cascade, à 2 colonnes, etc...)

J'en appelle à vos lumières et conseils.

Je laisse le fichier. Le code problématique se trouve dans l'userform "frmInterventionMasque"

Bien à vous,
Titoo
 

Pièces jointes

Solution
Bonjour.
Cette ressource devrait vous intéresser.
Mais c'est dans une autre ComboBox qu'il faudrait taper le critère à rechercher, pas dans une TextBox.
Et il ne faut pas renseigner de propriété RowSource sur les ComboBox dont on veut pouvoir changer les listes. Comme chez vous ça fait "Accès refusée"
Merci pour ta réponse xUpsilon.

"- sur le fichier joint il n'y a rien en colonnes X et Y"
Désolé, il s'agissait d'un exemple (X,Y). Dans le fichier les colonnes concernées sont "C" et "I".

"- Set f = Sheets("bd"), ici il faut remplacer bd par Source si la feuille que tu veux utiliser est la feuille "Source""
J'ai bien modifier dans le code cette information "Source" à la place de "bd".

Pour un éclairage complet, mon code actuel est :
Private Sub UserForm_Initialize()
Set f = Sheets("Source")
Set Rng = f.Range("C2:C" & f.[C65000].End(xlUp).Row)
For Each c In Rng
If c.Offset(, 6) = "M" Then Me.cboVannemasquée.AddItem c
Next c
End Sub

Merci pour vos lumières. Bien à vous, Titoo.
 
Bonjour,

Toujours rien...

J'ai essayé aussi avec ce code :

Private Sub UserForm_Initialize()
Me.cboVannemasquée.SetFocus
Dim J As Long
With Sheets("Source")
For J = 2 To .Range("C" & Rows.Count).End(xlUp).Row
If .Range("I" & J) = "M" Then
Me.cboVannemasquée.AddItem .Range("C" & J)
End If
Next J
End With
End Sub

Dans les 2 cas, l'erreur qui s'affiche est "70"....

Bien à toi,
Titoo
 
Bonjour.
Cette ressource devrait vous intéresser.
Mais c'est dans une autre ComboBox qu'il faudrait taper le critère à rechercher, pas dans une TextBox.
Et il ne faut pas renseigner de propriété RowSource sur les ComboBox dont on veut pouvoir changer les listes. Comme chez vous ça fait "Accès refusée"
 
Dernière édition:
Bonjour xUpsilon et Dranreb,

Merci pour vos retours constructifs et pédagogiques.
Effectivement, il ne faut pas renseigner de propriété RowSource.
Le code initial était bon mais ce renseignement bloqué tout.
Merci encore pour vos contributions.

Bien à vous,
Titoo
 
- 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

Retour