Controle combobox dans un userform

Bonjour,

J'ai 10 combobox de 10 à 19 dans un userform. La liste des items à Additionner est la même.

Je pensais écrire un code équivalent au traitement des textbox mais il dysfonctionne.

For i = 10 To 12
Me.Controls("ComboBox" & i).RowSource = BD.Range("A2:A4")
Next i

Y a t-il une solution pour ce genre d'écriture?

Merci

ddetp88

Bonjour,

Le BD. est pas fameux ! Utilise

Me.Controls("ComboBox" & i).RowSource = "Feuil1!A1:A4"

sinon dans l'absolu il n'y a pas d'autre raisons que ça ne fonctionne pas.

Attention code modifié !

A+

Bonjour galopin,

Merci déjà de ta réponse. Avec "Feuil2!A2:A4" j'ai maintenant une erreur 380

Impossible de définir la propriété Rowsource. Valeur de propriété non valide.

J'y arrive en activant la feuille avant mais ça n'est pas cool!

Sheets("base de données").Activate
For i = 10 To 19
        Me.Controls("ComboBox" & i).RowSource = "A2:A4"
Next i

Tu verrais autre chose?

Merci d'avance

Bonsoir,

Pourtant cette syntaxe est correcte même si ce n'est pas la feuille active.

Testé avec 2010 et W7

A+

Bonjour à tous,

Après avoir vérifié que la UserForm contient bien les 10 ComboBoxes ... ainsi nommées de 10 à 19...

A tester ...

For i = 10 To 19
  Me.Controls("ComboBox" & i).RowSource = Feuil2.Range("A2:A4").Address
Next i

bonsoir,

James007

Address ne peut convenir.

Nota1 :

Si le nom de la feuille comporte un Espace il faut utiliser des quotes simples autour du nom de la feuille :

For i = 1 To 2
  Me.Controls("ComboBox" & i).RowSource = "'Nom Feuil2'!Range(A2:A4)"
Next i

mais je pense plutôt que notre ami essaie de nous faire des cachoteries du genre :

For i = 1 To 2
  Me.Controls("ComboBox" & i).RowSource = "Feuil" & i & "!Range(A2:A4)"
Next i

...mais ça ce n'est pas possible !

Nota2 : RowSource est inusité dans les Combo : On lui préfère habituellement :

ComboBox1.AddItem ... 

A+

Salut Galopin

Effectivement, tu as raison pour "les cachoteries" ... çà ne fonctionnera pas ... et également pour RowSource ... qui est presque toujours remplacé par une boucle pour permettre d'ajouter tous les items ...

Par contre, par acquis de conscience, je viens de faire rapidement un test avec trois comboboxes et .Address ... çà a bien l'air de fonctionner ...

Quel m... !

Bonsoir,

Désolé de causer autant d'interrogations autour de ce problème.

J'ai tout essayé. La première fonctionne à condition d'activer la feuille avant.

Sheets("base de données").Activate

Me.Controls("ComboBox" & i).RowSource = "A2:A4"

'------------- combobox 10 à 19 Matériaux ---------------------------------------------
'Sheets("base de données").Activate
For i = 10 To 19
    'Me.Controls("ComboBox" & i).RowSource = "A2:A4"
    'Me.Controls("ComboBox" & i).RowSource = Feuil2.Range("A2:A4").Address
    'Me.Controls("ComboBox" & i).RowSource = "'Base de données'!Range(A2:A4)"
    Me.Controls("ComboBox" & i).RowSource = "'Feuil2'!Range(A2:A4)"

Next i

Pour les autres sans activer la feuille, j'ai toujours l'erreur 380.

Pas grave je vais faire des boucles avec additem.

Merci à vous deux pour les idées avancées.

Cordialement

Bonjour,

Personnellement, je serais curieux de voir ton fichier ... pour lever le voile sur ton mystère ...

Bonjour James007,

Voici le fichier. Bouton Objet Confectionné puis Nouvel OC

Tout n'est pas terminé. Peut-être pourras-tu me donner un conseil au passage pour la déclaration des feuilles que j'ai été contraint de mettre un peu partout.

Comment les déclarer une seule fois pour l'ensemble du projet?

'Déclaration des variables
Public GS, BD, M As Worksheet

' ensuite dans les macros
Set GS = Sheets("Gestion du Stock")
Set BD = Sheets("Base de données")
Set M = Sheets("Magasin")

Cordialement

j'ai ajouté juste avant une feuille nommée OC qu'il faut supprimer. Elle pertrube.

Vois le nouveau fichier.

Désolé

Bonjour,

Difficile de deviner que tes 10 Comboboxes se trouvaient dans un Frame ...

For i = 10 To 19
   Me.Frame1.Controls("ComboBox" & i).RowSource = Feuil2.Range("A2:A4").Address
Next i

Hé, bien sûr!

Merci James007.

ddept88

ddetp88 a écrit :

Hé, bien sûr!

Merci James007.

ddept88

Merci pour tes remerciements ...

Désolé ... j'ai oublié de te dire ... qu'au lieu de compliquer la vie à déclarer les Worksheets, à taper leurs noms qui peuvent en plus changer ... il te suffit d'utiliser les noms de code ...

Sheets("Magasin")          à remplacer par Feuil1
Sheets("Base de données")  à remplacer par Feuil2
Sheets("Gestion du Stock")  à remplacer par Feuil3

Oui, tu as raison, j'ai cette mauvaise habitude.

Je vais utiliser ton conseil sur ce projet.

Merci encore

Re,

Dès que tu auras pris cette habitude ... tu en verras très vite les avantages ...

Bonne Continuation ...

Rechercher des sujets similaires à "controle combobox userform"