Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Multipe controle avec le même évènement

6 réponses
Avatar
SLED
Bonjour,

J'ai un userform avec bcp de textbox (nametextbox_1 à 100) pour lesquels il
faut exécuter le même évènement sur par exemple after_update ou dbl_click.

Comment peut-on simplifier le code pour avoir une déclaration pour un
ensemble de textbox et non une déclaration par textbox (=100 fois la même
chose) ?

Merci de votre aide (et encore merci).

A+
Sled

6 réponses

Avatar
Daniel.C
Bonjour.
Essaie :
For i = 1 To 100
With Me.Controls("nametextbox_" & i)
'ton code
End With
Next i
Cordialement.
Daniel

Bonjour,

J'ai un userform avec bcp de textbox (nametextbox_1 à 100) pour lesquels il
faut exécuter le même évènement sur par exemple after_update ou dbl_click.

Comment peut-on simplifier le code pour avoir une déclaration pour un
ensemble de textbox et non une déclaration par textbox (0 fois la même
chose) ?

Merci de votre aide (et encore merci).

A+
Sled


Avatar
michdenis
Bonjour,

Tu as besoin d'un module de classe. Tu trouveras à cette adresse
un exemple : http://cjoint.com/?blqWf00JtJ

Tu peux ajouter autant de combobox que tu désires... et tu n'auras
qu'à aller dans le module de classe définir le comportement de chacun
pour un ou des événements disponibles.



"SLED" a écrit dans le message de groupe de discussion :

Bonjour,

J'ai un userform avec bcp de textbox (nametextbox_1 à 100) pour lesquels il
faut exécuter le même évènement sur par exemple after_update ou dbl_click.

Comment peut-on simplifier le code pour avoir une déclaration pour un
ensemble de textbox et non une déclaration par textbox (0 fois la même
chose) ?

Merci de votre aide (et encore merci).

A+
Sled
Avatar
SLED
Bonjour,


Tu peux ajouter autant de combobox que tu désires... et tu n'auras
qu'à aller dans le module de classe définir le comportement de chacun
pour un ou des événements disponibles.



Merci, c'est justement cette tâche que je voudrais réduire. Puisque
combobox1 à 100 ont le même comportement pour le même événement (par exemple
: After Update).

Il n'existe pas un truc du genre


Private Sub TextDesciption_1_(1)_AfterUpdate() "to
TextDesciption_1_(100)_AfterUpdate()"

mon code ou nom fonction

End Sub

ou doit-on faire
Private Sub TextDesciption_1_1_AfterUpdate()
mon code ou nom fonction
End Sub
Private Sub TextDesciption_1_2_AfterUpdate()
mon code ou nom fonction
End Sub
Private Sub TextDesciption_1_3_AfterUpdate()
mon code ou nom fonction
End Sub
...

ou exécuter un code au chargement du formulaire pour donner les différents
événements avec une boucle du type for ?

Merci de votre aide et plein de bonne chose.
A+
SLED
Avatar
michdenis
Les événements disponibles sont ceux qui sont listés dans la
liste déroulante de droite dans le haut du module du module
de classe pour l'objet "GrCombo". L'événement ne fait pas partie
de cette liste. Comme tu ne décris pas ce que tu veux faire, il est
difficile de faire d'autres suggestions.





"SLED" a écrit dans le message de groupe de discussion :

Bonjour,


Tu peux ajouter autant de combobox que tu désires... et tu n'auras
qu'à aller dans le module de classe définir le comportement de chacun
pour un ou des événements disponibles.



Merci, c'est justement cette tâche que je voudrais réduire. Puisque
combobox1 à 100 ont le même comportement pour le même événement (par exemple
: After Update).

Il n'existe pas un truc du genre


Private Sub TextDesciption_1_(1)_AfterUpdate() "to
TextDesciption_1_(100)_AfterUpdate()"

mon code ou nom fonction

End Sub

ou doit-on faire
Private Sub TextDesciption_1_1_AfterUpdate()
mon code ou nom fonction
End Sub
Private Sub TextDesciption_1_2_AfterUpdate()
mon code ou nom fonction
End Sub
Private Sub TextDesciption_1_3_AfterUpdate()
mon code ou nom fonction
End Sub
...

ou exécuter un code au chargement du formulaire pour donner les différents
événements avec une boucle du type for ?

Merci de votre aide et plein de bonne chose.
A+
SLED
Avatar
SLED
Bonjour,

Ca y est j'ai trouvé un début de réponse.

Ce que je désire faire est un regroupement de controle pour leur donner la
même action lors d'un événement similaire (par exemple Afert Update).

Mais manifestement ce n'est pas possible en vba ?

Cela aurait du donner :
Private Sub TextDesciption_AfterUpdate (Index as Integer)
'mon code1
End Sub

au lieu de
Private Sub TextDesciption1_AfterUpdate
'mon code1
End Sub
+
Private Sub TextDesciption2_AfterUpdate
'mon code1
End Sub

et ainsi de suite.

A+
SLED

"michdenis" a écrit :

Les événements disponibles sont ceux qui sont listés dans la
liste déroulante de droite dans le haut du module du module
de classe pour l'objet "GrCombo". L'événement ne fait pas partie
de cette liste. Comme tu ne décris pas ce que tu veux faire, il est
difficile de faire d'autres suggestions.





"SLED" a écrit dans le message de groupe de discussion :

Bonjour,


> Tu peux ajouter autant de combobox que tu désires... et tu n'auras
> qu'à aller dans le module de classe définir le comportement de chacun
> pour un ou des événements disponibles.

Merci, c'est justement cette tâche que je voudrais réduire. Puisque
combobox1 à 100 ont le même comportement pour le même événement (par exemple
: After Update).

Il n'existe pas un truc du genre


Private Sub TextDesciption_1_(1)_AfterUpdate() "to
TextDesciption_1_(100)_AfterUpdate()"

mon code ou nom fonction

End Sub

ou doit-on faire
Private Sub TextDesciption_1_1_AfterUpdate()
mon code ou nom fonction
End Sub
Private Sub TextDesciption_1_2_AfterUpdate()
mon code ou nom fonction
End Sub
Private Sub TextDesciption_1_3_AfterUpdate()
mon code ou nom fonction
End Sub
...

ou exécuter un code au chargement du formulaire pour donner les différents
événements avec une boucle du type for ?

Merci de votre aide et plein de bonne chose.
A+
SLED



Avatar
michdenis
| Mais manifestement ce n'est pas possible en vba ?

Ce qui n'est pas possible est d'utiliser l'événement "After_Update"
de l'objet "GrCombo" représentant tes combobox de ton formulaire.
Ceci ne veux pas dire que tu ne peux pas arriver au même résultat en
utilisant un ou des événements différents.

Si tu y tiens à ton événement, tu places dans un module standard,
la procédure générale pour chacun de tes combobox et pour chacun
de ceux-ci dans ton formulaire. C'est beaucoup plus de lignes de code !

Pour chacun des combobox de ton formulaire, tu écris dans le
module formulaire :
'-------------------------------------
Private Sub ComboBox1_AfterUpdate()
Call MaSub(ComboBox1)
End Sub
'-------------------------------------

Et dans un module standard, la procédure générale

'-------------------------------------
Sub MaSub(MonCombox As MSForms.ComboBox)

'Ton code. Tu utilises "MonCombox" comme
'étant un objet combobox de ton formulaire

MonCombox.Clear
End Sub
'-------------------------------------

"SLED" a écrit dans le message de groupe de discussion :

Bonjour,

Ca y est j'ai trouvé un début de réponse.

Ce que je désire faire est un regroupement de controle pour leur donner la
même action lors d'un événement similaire (par exemple Afert Update).

Mais manifestement ce n'est pas possible en vba ?

Cela aurait du donner :
Private Sub TextDesciption_AfterUpdate (Index as Integer)
'mon code1
End Sub

au lieu de
Private Sub TextDesciption1_AfterUpdate
'mon code1
End Sub
+
Private Sub TextDesciption2_AfterUpdate
'mon code1
End Sub

et ainsi de suite.

A+
SLED

"michdenis" a écrit :

Les événements disponibles sont ceux qui sont listés dans la
liste déroulante de droite dans le haut du module du module
de classe pour l'objet "GrCombo". L'événement ne fait pas partie
de cette liste. Comme tu ne décris pas ce que tu veux faire, il est
difficile de faire d'autres suggestions.





"SLED" a écrit dans le message de groupe de discussion
:

Bonjour,


> Tu peux ajouter autant de combobox que tu désires... et tu n'auras
> qu'à aller dans le module de classe définir le comportement de chacun
> pour un ou des événements disponibles.

Merci, c'est justement cette tâche que je voudrais réduire. Puisque
combobox1 à 100 ont le même comportement pour le même événement (par exemple
: After Update).

Il n'existe pas un truc du genre


Private Sub TextDesciption_1_(1)_AfterUpdate() "to
TextDesciption_1_(100)_AfterUpdate()"

mon code ou nom fonction

End Sub

ou doit-on faire
Private Sub TextDesciption_1_1_AfterUpdate()
mon code ou nom fonction
End Sub
Private Sub TextDesciption_1_2_AfterUpdate()
mon code ou nom fonction
End Sub
Private Sub TextDesciption_1_3_AfterUpdate()
mon code ou nom fonction
End Sub
...

ou exécuter un code au chargement du formulaire pour donner les différents
événements avec une boucle du type for ?

Merci de votre aide et plein de bonne chose.
A+
SLED