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

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

  • Création - Formulaire vannes masquées - essais.xlsm
    42.2 KB · Affichages: 42
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"

xUpsilon

XLDnaute Accro
Bonjour,

Deux choses :
- sur le fichier joint il n'y a rien en colonnes X et Y
- Set f = Sheets("bd"), ici il faut remplacer bd par Source si la feuille que tu veux utiliser est la feuille "Source"

Tiens moi au courant,
Bonne continuation
 

DELHOMME

XLDnaute Nouveau
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.
 

DELHOMME

XLDnaute Nouveau
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
 

Dranreb

XLDnaute Barbatruc
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:

DELHOMME

XLDnaute Nouveau
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
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 195
Membres
112 680
dernier inscrit
AKDS