Enchainement combobox

Résolu
cs_tintin77 Messages postés 7 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 8 mars 2006 - 20 août 2005 à 10:40
cs_tintin77 Messages postés 7 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 8 mars 2006 - 13 sept. 2005 à 22:00
voilà,

dans une feuille excel, j'ai 42 combobox avec en contenu : type 1, type 2 ....

Lorsque je sélectionne type 2 sur n'importe quelle combobox, cela
selectionne type 2 dans toutes les combobox situé à droite de celle ci.
voici mon code :

--------------------------------------------------------

Private Sub ComboBox1_Change()

For i = 2 To 42

OLEObjects(i).Object.Value = combobox1.Value

Next i

End Sub
-------------------------------------------------------

dans chaque combobox je suis obligé de changer en focntion de la combobox en cours :

for i = 2 ou 3 ou 4 ou 5 ... to 42

et

OLEObjects(i).Object.Value = combobox1.Value ou combobox2.Value ou...



je cherche un code optimisé le plus possible. J'aimerais faire appel à
la combobox en cours pour définir le résultat des autres en évitant de
remettre combobox1 ou 2 ou 3 ...



y a t'il un moyen pour reconnaitre la combobx qui lance le code ( Private Sub ComboBox1_Change) ?





merci

8 réponses

cs_tintin77 Messages postés 7 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 8 mars 2006
13 sept. 2005 à 22:00
ça y est, je viens de trouver !



Private Sub ComboBox41_click()

For Each ctl In OLEObjects

If ctl.Top = 1245.75 Then

If ctl.Index > ComboBox41.Index Then

ctl.Object.Value = ComboBox41.Text

End If

End If

Next ctl

End Sub



comme ça, ça gère les combobox par ligne!!



merci beaucoup de ton aide PAT.
3
pjcleder Messages postés 183 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 16 septembre 2011 11
21 août 2005 à 11:17
PAT

J'ai trouvé. Ca marche chez moi.

Derrière l'évenement Click de chaque ComboBox, il faut que tu colles ceci.

Private Sub ComboBox1_Click()
Dim ctl As OLEObject
For Each ctl In OLEObjects
ctl.Object.Value = ComboBox1.Text
Next
End Sub

De manière à ce que toutes autres combos prennent la valeur que tu as sélectionnée dans une seule.
0
cs_tintin77 Messages postés 7 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 8 mars 2006
21 août 2005 à 14:28
Merci de ta réponse rapide.

mais ton code marche pour toutes les combobox contenu dans la feuille..

Il est important pour moi que ce soi que les combobox situées à droite de celle que je change qui prenne la nouvelle valeur.

si j'ai type 1 dans la premiere combobox et que je change la deuxieme
combobox en mettant type 4, toutes les comobobx de droite vont se
mettre à type 4. toutes celles d'avant ne changent pas (reste à type 1
pour la première combobox)
0
pjcleder Messages postés 183 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 16 septembre 2011 11
21 août 2005 à 16:07
PAT

Ok, je vois ce que je peux faire ! A tout de suite !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pjcleder Messages postés 183 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 16 septembre 2011 11
21 août 2005 à 16:29
PAT

Bien, aprés recherche je me suis rendu compte que les ComboBox collées sur une feuille excel n'ont pas la propriété "TabIndex" contrairement aux ComboBox classiques sous VB. Peut-être ne me vois tu pas venir ?!
En fait , si tes combo sont sur une UserForm dans Excel, tu peux leur assigner un tabindex suivant leur positionnement sur la feuille. On imagine que la combobox1 aura en tabindex 0, la combobox2 1 etc... et dans ton algo, tu pourais rajouter ceci :

Private Sub ComboBox1_Click()
Dim ctl As OLEObject
For Each ctl In OLEObjects
if ctl.TabIndex > Combobox1.Tabindex then
ctl.Object.Value = ComboBox1.Text
End If
Next
End Sub
J'espère que tu me suis. Médite là-dessus et reviens vers moi si tu as un souci.
0
cs_tintin77 Messages postés 7 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 8 mars 2006
28 août 2005 à 15:34
Salut,

bon je m'y remet enfin. je viens de m'apercevoir qu'il n'y a pas de
propriété TabIndex dans les combobox sur une feuille excel. Du coup ça
me génère une erreur!

tu aurais une autre solution ?



peut on faire appel au combobox en cours dans le code (genre un ThisCombobox) ?



Private Sub ComboBox1_Change()

Dim ctl As OLEObject

For Each ctl In OLEObjects

If ctl.TabIndex > ThisCombobox.TabIndex Then

ctl.Object.Value = ThisCombobox.Text

End If

Next

End Sub





tant que j'y suis : quelle est la différence entre combobox_Change et combobox_Click ?





dsl pour toutes ces questions (ma soif d'apprendre n'est pas prête de se tarir)
0
pjcleder Messages postés 183 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 16 septembre 2011 11
28 août 2005 à 21:49
PAT
0
pjcleder Messages postés 183 Date d'inscription jeudi 4 février 2010 Statut Membre Dernière intervention 16 septembre 2011 11
28 août 2005 à 21:51
PAT

dans excel pour avoir la propriéte tabindex, colle tes combobox sur une userform.

change: le texte change
click : on clique dessus
0
Rejoignez-nous