Enchainement combobox [Résolu]

Messages postés
7
Date d'inscription
jeudi 7 août 2003
Dernière intervention
8 mars 2006
- 20 août 2005 à 10:40 - Dernière réponse :
Messages postés
7
Date d'inscription
jeudi 7 août 2003
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
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
7
Date d'inscription
jeudi 7 août 2003
Dernière intervention
8 mars 2006
- 13 sept. 2005 à 22:00
3
Merci
ç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.

Merci cs_tintin77 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Messages postés
184
Date d'inscription
jeudi 4 février 2010
Dernière intervention
16 septembre 2011
- 21 août 2005 à 11:17
0
Merci
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.
Messages postés
7
Date d'inscription
jeudi 7 août 2003
Dernière intervention
8 mars 2006
- 21 août 2005 à 14:28
0
Merci
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)
Messages postés
184
Date d'inscription
jeudi 4 février 2010
Dernière intervention
16 septembre 2011
- 21 août 2005 à 16:07
0
Merci
PAT

Ok, je vois ce que je peux faire ! A tout de suite !
Messages postés
184
Date d'inscription
jeudi 4 février 2010
Dernière intervention
16 septembre 2011
- 21 août 2005 à 16:29
0
Merci
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.
Messages postés
7
Date d'inscription
jeudi 7 août 2003
Dernière intervention
8 mars 2006
- 28 août 2005 à 15:34
0
Merci
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)
Messages postés
184
Date d'inscription
jeudi 4 février 2010
Dernière intervention
16 septembre 2011
- 28 août 2005 à 21:49
0
Merci
PAT
Messages postés
184
Date d'inscription
jeudi 4 février 2010
Dernière intervention
16 septembre 2011
- 28 août 2005 à 21:51
0
Merci
PAT

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

change: le texte change
click : on clique dessus

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.