Evênement change sur ComboBox

Profane

XLDnaute Occasionnel
Bonjour a tous,
sur un userform je dispose de plusieurs combobox (11), je récupére leurs valeurs que j'envoi sur des textBox (11)
pour résumé :
textbox1.Value = combobox1.value
textbox2.Value = combobox2.value
.......
malheureusement je dois coder ceci sur chaque evenement change du combobox concerné (1 à 11)
y a t'il moyen de passer par une boucle ?
Cordialement
 

Profane

XLDnaute Occasionnel
Re : Evênement change sur ComboBox

Merci pierrot
mais en fait mon soucis se situe sur l'evenement :private Sub ComboBox(1 à 11)_Change() du userform
car a chaque changement de valeur de comboxbox , je dois réecrire l'evenement correspondant :-> Private Sub ComboBox(1)_change, Private Sub ComboBox(2)_change, Private Sub ComboBox(n)_change....
bon aprés midi
 

Profane

XLDnaute Occasionnel
Re : Evênement change sur ComboBox

en ajoutant du code , ca devrait être plus "parlant"

'récupération des valeurs des combobox et copie dans les textbox correspondant en mode multi-ligne
Private Sub ComboBox1_Change()
TextBox1.Value = ComboBox1.Value
End Sub
Private Sub ComboBox2_Change()
TextBox2.Value = ComboBox2.Value
End Sub

Private Sub UserForm_Initialize()
'alimentation des combobox service-terminal-réseau

ComboBoxListeService.List = Range("Service").Value
ComboBoxListeTerminaux.List = Range("Terminal").Value
ComboBoxListeReseaux.List = Range("Réseau").Value

'alimentation des combobox critères
Dim k, l, m As Integer
For k = 1 To 11
Controls("ComboBox" & k).List = Range("Rapidité").Value
Next
For l = 12 To 22
Controls("ComboBox" & l).List = Range("Précision").Value
Next
For m = 23 To 33
Controls("ComboBox" & m).List = Range("Disponibilité").Value
Next
End Sub

en gros je veux pas repeter 33 la même ligne en tete sur les evenement change des combo ;-)
 

Pierrot93

XLDnaute Barbatruc
Re : Evênement change sur ComboBox

Re,

bon, je l'ai fait... dans le module de l'usf :
Code:
Option Explicit
Private MesObjets() As New Classe1
Private Sub UserForm_Initialize()
Dim i As Byte
For i = 1 To 11
    ReDim Preserve MesObjets(1 To i)
    Set MesObjets(i).cb = Me.Controls("ComboBox" & i)
    Set MesObjets(i).tb = Me.Controls("TextBox" & i)
Next i
End Sub

dans un module de classe nommé "Classe1" :
Code:
Option Explicit
Public WithEvents cb As MSForms.ComboBox
Public WithEvents tb As MSForms.TextBox
Private Sub cb_Change()
tb = cb
End Sub
 

Ali.ouzani@gmail.com

XLDnaute Nouveau
Re : Evênement change sur ComboBox

Bonjour à tous,

J'espère que vous allez bien...^_^

Moi, je suis assez débutant en ce qui concerne la prog. et en particulier en vba...

Je suis entrain de mettre au point une facturation automatisée. et depuis au moins une semaine, je fais face à un petit frein... enfin, dû au manque de connaissance.

grosso-modo, je dois déclarer 26 ComboBox dans INITIALISATION ...jusqu'à là pas de souci, avec une boucle "For" et le tour et joué. Mais en ce qui concerne "Private Sub ComboBox_Change()" là je bloque.... bien sur facile de déclarer les combobox une à une , mais on se retrouver très vite dépassant la 500 ième ligne

ma question, est-il possible de créer une boucle/procédure pour pour remplir mes différentes combobox sans avoir à recopier la même chose 26 fois...ça serait bête et surchargerait mon fichier pour rien.

MERCI d'avance.


extrait du code :


Private Sub ComboBox1_Change()
Dim ligne As Long
Dim i
i = 1
If Me.Controls("Combobox" & i).ListIndex = -1 Then Exit Sub
ligne = Me.Controls("Combobox" & i).ListIndex + 2



If Me.Controls("Combobox" & i) = "BARRE" Then
Me.Controls("Combobox" & i + 100).Visible = True
Me.Controls("TextBox" & i + 150).Visible = True
Me.Controls("TextBox" & i + 200).Visible = False
Me.Controls("TextBox" & i + 250).Visible = True
Me.Controls("TextBox" & i + 350).Visible = True
Me.Controls("TextBox" & i + 400).Visible = True
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Me.Controls("TextBox" & i + 150) = Ws3.Cells(ligne, 2)
Else

If Me.Controls("Combobox" & i) = "CREED" Then
Me.Controls("Combobox" & i + 100).Visible = False
Me.Controls("TextBox" & i + 150).Visible = False
Me.Controls("TextBox" & i + 200).Visible = False
Me.Controls("TextBox" & i + 250).Visible = False
Me.Controls("TextBox" & i + 350).Visible = False
Me.Controls("TextBox" & i + 400).Visible = False
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Else
If Me.Controls("Combobox" & i) = "ASSEMB" Then
Me.Controls("Combobox" & i + 100).Visible = False
Me.Controls("TextBox" & i + 150).Visible = False
Me.Controls("TextBox" & i + 200).Visible = True
Me.Controls("TextBox" & i + 250).Visible = True
Me.Controls("TextBox" & i + 350).Visible = False
Me.Controls("TextBox" & i + 400).Visible = False
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Else
Me.Controls("Combobox" & i + 100).Visible = True
Me.Controls("TextBox" & i + 150).Visible = True
Me.Controls("TextBox" & i + 200).Visible = True
Me.Controls("TextBox" & i + 250).Visible = True
Me.Controls("TextBox" & i + 350).Visible = True
Me.Controls("TextBox" & i + 400).Visible = True
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Me.Controls("TextBox" & i + 150) = Ws3.Cells(ligne, 2)
End If
End If
End If
End Sub

Private Sub ComboBox2_Change()
Dim ligne As Long
Dim i
i = 2
If Me.Controls("Combobox" & i).ListIndex = -1 Then Exit Sub
ligne = Me.Controls("Combobox" & i).ListIndex + 2



If Me.Controls("Combobox" & i) = "BARRE" Then
Me.Controls("Combobox" & i + 100).Visible = True
Me.Controls("TextBox" & i + 150).Visible = True
Me.Controls("TextBox" & i + 200).Visible = False
Me.Controls("TextBox" & i + 250).Visible = True
Me.Controls("TextBox" & i + 350).Visible = True
Me.Controls("TextBox" & i + 400).Visible = True
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Me.Controls("TextBox" & i + 150) = Ws3.Cells(ligne, 2)
Else

If Me.Controls("Combobox" & i) = "CREED" Then
Me.Controls("Combobox" & i + 100).Visible = False
Me.Controls("TextBox" & i + 150).Visible = False
Me.Controls("TextBox" & i + 200).Visible = False
Me.Controls("TextBox" & i + 250).Visible = False
Me.Controls("TextBox" & i + 350).Visible = False
Me.Controls("TextBox" & i + 400).Visible = False
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Else
If Me.Controls("Combobox" & i) = "ASSEMB" Then
Me.Controls("Combobox" & i + 100).Visible = False
Me.Controls("TextBox" & i + 150).Visible = False
Me.Controls("TextBox" & i + 200).Visible = True
Me.Controls("TextBox" & i + 250).Visible = True
Me.Controls("TextBox" & i + 350).Visible = False
Me.Controls("TextBox" & i + 400).Visible = False
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Else
Me.Controls("Combobox" & i + 100).Visible = True
Me.Controls("TextBox" & i + 150).Visible = True
Me.Controls("TextBox" & i + 200).Visible = True
Me.Controls("TextBox" & i + 250).Visible = True
Me.Controls("TextBox" & i + 350).Visible = True
Me.Controls("TextBox" & i + 400).Visible = True
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Me.Controls("TextBox" & i + 150) = Ws3.Cells(ligne, 2)
End If
End If
End If
End Sub

Private Sub ComboBox3_Change()
Dim ligne As Long
Dim i
i = 3
If Me.Controls("Combobox" & i).ListIndex = -1 Then Exit Sub
ligne = Me.Controls("Combobox" & i).ListIndex + 2



If Me.Controls("Combobox" & i) = "BARRE" Then
Me.Controls("Combobox" & i + 100).Visible = True
Me.Controls("TextBox" & i + 150).Visible = True
Me.Controls("TextBox" & i + 200).Visible = False
Me.Controls("TextBox" & i + 250).Visible = True
Me.Controls("TextBox" & i + 350).Visible = True
Me.Controls("TextBox" & i + 400).Visible = True
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Me.Controls("TextBox" & i + 150) = Ws3.Cells(ligne, 2)
Else

If Me.Controls("Combobox" & i) = "CREED" Then
Me.Controls("Combobox" & i + 100).Visible = False
Me.Controls("TextBox" & i + 150).Visible = False
Me.Controls("TextBox" & i + 200).Visible = False
Me.Controls("TextBox" & i + 250).Visible = False
Me.Controls("TextBox" & i + 350).Visible = False
Me.Controls("TextBox" & i + 400).Visible = False
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Else
If Me.Controls("Combobox" & i) = "ASSEMB" Then
Me.Controls("Combobox" & i + 100).Visible = False
Me.Controls("TextBox" & i + 150).Visible = False
Me.Controls("TextBox" & i + 200).Visible = True
Me.Controls("TextBox" & i + 250).Visible = True
Me.Controls("TextBox" & i + 350).Visible = False
Me.Controls("TextBox" & i + 400).Visible = False
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Else
Me.Controls("Combobox" & i + 100).Visible = True
Me.Controls("TextBox" & i + 150).Visible = True
Me.Controls("TextBox" & i + 200).Visible = True
Me.Controls("TextBox" & i + 250).Visible = True
Me.Controls("TextBox" & i + 350).Visible = True
Me.Controls("TextBox" & i + 400).Visible = True
Me.Controls("TextBox" & i + 100) = Ws3.Cells(ligne, 3)
Me.Controls("TextBox" & i + 150) = Ws3.Cells(ligne, 2)
End If
End If
End If
End Sub
 

mikeo

XLDnaute Occasionnel
Re : Evênement change sur ComboBox

Bonjour,

Un petit fichier simplifié, please ! Pour mieux comprendre ton problème. Pour ne pas réinventer une structure de fichier différente de la tienne et partir sur des fausses pistes. Pour ne pas créer 400 textbox sans savoir ce qu'il faut mettre dedans. Pour tester si les solutions qui te sont données ne comportent pas d'erreurs.... Aide les autres à t'aider.

Cordialement.
 

Ali.ouzani@gmail.com

XLDnaute Nouveau
Re : Evênement change sur ComboBox

Bonsoir Mikeo,

Bien écoute, tu trouveras ci-joint un extrait de code qui fonctionne bien....pas besoin de diffuser le classeur en entier car >10MO et près de 15 000 lignes... on s'y perdrait très vite....llooooll

Cet extrait, résume le problème auquel je fais face, c'est à dire une réitération de déclaration des "ComboBox_change". alors, qu'il faudrait mettre en place un petit truc pour éviter de répéter les mêmes commande x fois.

à titre indicatif, je dois déclarer 2x 26 Combobox dans la même UFM

Bien à toi,
 

Pièces jointes

  • MACRO V1.2.xlsm
    149.2 KB · Affichages: 83

mikeo

XLDnaute Occasionnel
Re : Evênement change sur ComboBox

Bonjour,

Tu peux essayer de faire quelque chose comme le fichier joint, en transférant tes changements de combobox dans un module de classe. N'ayant pas ton fichier, aucun moyen de savoir si cela marche ou pas. Dans ce forum, tu as des spécialistes de modules de classe beaucoup plus compétents que moi.

Cordialement,

Mikeo
 

Pièces jointes

  • ali.xlsm
    37 KB · Affichages: 96

Discussions similaires

Statistiques des forums

Discussions
312 242
Messages
2 086 528
Membres
103 243
dernier inscrit
SAH