VBA Procédure pour Double Clique en boucle

Jess5913

XLDnaute Nouveau
Bonjour tout le monde,

Cela fait maintenant plusieurs années que je puise les informations sur votre forum, et il est vraiment super !!:D

Je n'ai pas trouvé de solution dans le forum, alors étant devant un problème, je vous pose la question en espérant que quelqu'un puisse m'aider.

J'utilise un Userform contenant de nombreuses TextBox. Mon Userform représente un compte fournisseur et les textbox se remplissent automatiquement en fonction du fournisseur afin de m'indiquer toutes les factures enregistrées.

Je souhaiterai lorsque je fais un double clique dans une textbox que le fond change de couleur. Je sais faire cette procédure à l'aide du code suivant :


Private Sub TextBoxMONTANT1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

TextBoxMONTANT1.BackColor = &HC0FFFF

End Sub

Ma question est la suivante : Est-il possible de créer une boucle permettant de répéter cette action pour toutes les textbox ? (Dans mon fichier, il y en a 30) ou faut-il entrer ce code pour chaque TextBox ?

Je vous remercie par avance de votre aide.

Jess5913
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA Procédure pour Double Clique en boucle

Bonjour Jess,

afin de ne pas devoir construire 30 procédures, la solution passe par un module de classe

ce n'est pas trop ma tasse de thé mais je vais faire des recherches

à+
Philippe
 

Jess5913

XLDnaute Nouveau
Re : VBA Procédure pour Double Clique en boucle

Bonjour,

Je te remercie phlaurent55 de m'avoir mise sur la bonne piste. Je ne connaissais pas les modules de classe et je me rend compte que c'est génial !!! :cool:

Après recherche, j'ai trouvé une solution à mon problème.

Voici la solution :
Une fois le UserForm créer, et les contrôles insérer, il faut insérer un Module de Classe puis le renommer (dans mon exemple pour simplifier, je l'ai appelé ModuleDeClasse).

Ensuite j'ai tapé dans le Module de Classe le code suivant :

Public WithEvents groupebouton As MSForms.TextBox

Private Sub groupebouton_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
groupebouton.BackColor = &HC0FFFF
End Sub

Ensuite, dans le code du UserForm, j'ai tapé le code suivant :

Dim Boutons() As New ModuleDeClasse

Private Sub Userform_Initialize()
Dim Nb As Integer, Ctrl As Control
Nb = 0 ' Récupérer les boutons du formulaire qui appartiennent à la nouvelle classe de boutons créée.

For Each Ctrl In UserForm1.Controls
If TypeName(Ctrl) = "TextBox" Then
Nb = Nb + 1
ReDim Preserve Boutons(1 To Nb)
Set Boutons(Nb).groupebouton = Ctrl
End If
Next
End Sub


Bon j'espère que tout le monde comprendra, c'est un exemple simple et ça fonctionne super. Désolée, je n'ai pas su mettre en forme tel que ça apparait dans VBA, je n'ai pas encore l'habitude de poster sur ce site.

Bonne journée à tous :D
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87