Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
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+
Salut Dodineau, Job75,
Effectivement la possibilité d'écrire 38 fois la même chose est faisable.
Comme le dit à juste titre notre ami Job75, l'utilisation d'un module de classe est faisable.
C'est chose faite ici pour info
Voir fichier joint
@+ Lolote83
Pièces jointes
Copie de DODINEAU - TextBox et module de classe.xlsm
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+
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
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
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
Bonjour,
Lolote83 quand j'exécute ton userform il faut que je double-clique 2 fois dans les textbox pour que ca fonctionne.
As-tu une explication ?
Merci.
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
Copie de DODINEAU - TextBox et module de classe.xlsm
- 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