XL 2016 Executer une procédure pour chaque textbox

  • Initiateur de la discussion Initiateur de la discussion dodineau
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dodineau

XLDnaute Occasionnel
Bonjour,
J'ai 38 textbox dans mon userform et je voudrais qu'a chaque fois que je change une valeur dans un des textbox une procédure unique s'exécute pour ce textbox.
Y a-t-il une formule pour cela ?
Merci pour votre aide.
A+
 
Bonjour dodineau,

Il faut une macro pour chaque TextBox comme celle-ci (adapter le nom de chaque TextBox) :
VB:
Private Sub TextBox1_Change()
MaProcedure 'lance la macro
End Sub
Si l'on veut éviter d'écrire les 38 macros il faut utiliser un Module de classe, faites une recherche sur ces mots.

A+
 
Merci Lolotte 83, ça fonctionne comme ça.
Par contre en fait j'ai 2 fois 38 textbox et je dois lancer 2 procédures différentes.
Hauteur_1 à Hauteur_38 qui lancent une procédure unique.
Longueur_1 à Longueur_38 qui lancent une autre procédure unique.
Je n'arrive pas à transformer ton exemple.
A+
 
Bonjour dodineau, Lolote83,

Le code du Module de classe :
VB:
Public WithEvents TB As MSForms.TextBox

Private Sub TB_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If TB.Name Like "Hauteur*" Then Procedure1
If TB.Name Like "Longueur*" Then Procedure2
End Sub
Le code de l'UserForm :
VB:
Dim TB() As New Classe1

Private Sub UserForm_Initialize()
Dim c As Control, n
    For Each c In UserForm1.Controls
        If TypeName(c) = "TextBox" Then
            ReDim Preserve TB(n)
            Set TB(n).TB = c
            n = n + 1
        End If
    Next
End Sub
A+
 
Merci à vous 2 🙂
Par contre je ne veux pas un événement sur DBLclic mais sur Exit ou sur KeyPress. Il y a bien l'événement KeyPress mais bizarrement je ne trouve pas de procédure sur exit ou sur beforeUpdate dans le module de classe, c'es normal ?
 
Re salut,
Je pense que c'est normal.
Les seuls évènements possibles pour les TextBox sont ceux là (du moins chez moi) mais je pense que c'est général à tout le monde
1033099

@+ Lolote83
 
Re,
Oui, mais là on est dans un module de classe et non pas directement dans le formulaire.
C'est la aussi une différence. A toi de voir si tu veux faire (2 x 38 = 76) procedures pour simplement avoir accès à un Exit ou autre qui n'existe pas dans le module de classe ....
@+ Lolote83
 
Salut DODINEAU,
Si tu effectues l'opération doucement, tu comprendras mieux pourquoi il y a ce phénomène
Exemple :
Lors du 1er double-clic, un message t'informe que l'on execute une procédure UNIQUE
De là, tu es obligé de cliquer sur le bouton OK du MessageBox
Un nouveau clic sur un nouveau TextBox en fait donne le focus au formulaire (puisque celui-ci a été "mis de coté" à cause du message box)
Puis de nouveau le double-clic pour afficher de nouveau le MessageBox. Cela fait donc 4 clic
- 1) MessageBox
- 2) Pour revenir au formulaire
- 3 et 4) Nouveau double-clic
En espérant que cette explication est suffisamment claire (fait tout doucement et tu comprendras) mais si la procédure lancée ne nécessite pas de MessageBox, tu ne devrais pas avoir ce phénomène. Enfin je pense

Sinon, tu peux essayer avec la propriété MouseDown comme dans l'exemple suivant mais avant d'utiliser cette nouvelle propriété, teste avec l'ancien formulaire ce qui est expliqué ci-dessus.

@+ Lolote83
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
118
Affichages
2 K
  • Question Question
Microsoft 365 Lecture vocale USF
Réponses
5
Affichages
167
Réponses
2
Affichages
83
Réponses
3
Affichages
216
Retour