5 textbox validés par la touche Entrée

Bonjour à toutes et tous,

Je suis dans userform et j'aimerai réduite le nombre de ligne de mon code. J'ai 5 textboxs (textbox1, textbox2, textbox3, textbox4 et textbox5.

Actuellement, la macro se répète 5 fois en fonction du textbox :

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        CmdValider_Click
    End If
End Sub

Est-ce quelqu'un pourrait m'aider à ne faire qu'une seule Sub qui testera chaque textboxs pour lancer la macro CmdValider_Click

D'avance merci.

Bonjour Pigneau,

Il faut utiliser ce qu'on appelle un module de classe

Une réponse à ce sujet ici
https://forum.excel-pratique.com/excel/module-de-classe-160704

A+

BrunoM45, merci pour ton lien que j'ai parcouru ainsi que d'autres mais j'avoue que la tâche ne sera pas aisé pour 5 textoBox dans mon projet sur lequel Dan avait travaillé. J'avais eu espoir que se soit aussi simple que les quelques lignes qui avait mis à ma disposition pour le projet ci-après mais apparemment ce n'est pas le cas. De plus il s'agit du même projet. Je pense que je vais rester sur mes 5 macros.

https://forum.excel-pratique.com/excel/clic-sur-cellule-pour-ouvrir-formulaire-180179

A+

Re,

Contrairement à votre idée reçue c'est très simple à mettre en place, une fois qu'on à compris le raisonnement

Mais pour 5 textbox, le jeu n'en vaut peut-être pas la chandelle effectivement

Bonne soirée

Bonsoir Pigneau, BrunoM45,

Ci-dessous un fichier réalisé pour l'exemple. Un appui sur la touche Entrée va lancer un simple MsgBox par l'intermédiare du bouton de commande

Evidemment, c'est mieux pour un nombre assez important de textbox.

Sauf si le code attaché à chaque textbox comporte un grand nombre de lignes.

Bonjour et bon week-end à tous,

Merci pour ton coup de pouce X Cellus, J'apprécie énormément.

Petite précision, le Formulaire s'ouvre lorsque je clique sur une cellule de ma feuille.

Mon formulaire se nomme FormulairePRODUIT_BL, mes Textbox1, TextBox2, etc... j'ai modifié le code ainsi

Dim txBx(5) As ActClasse

Private Sub UserForm_Activate()
'Exemple fait avec 3 texBox. Modifier la valeur finale de la boucle pour plus de textbox. Ainsi que leur Dimensionnement.
For i = 1 To 5
    'Affectation aux boutons du formulaire les propriétés des textbox maître de la classe (txBx)
    Set txBx(i) = New ActClasse
    Set txBx(i).txB = Controls("TextBox" & i)
Next i
End Sub

Dans mon module 1

Sub Action() 'pour les textbox du FormulairePRODUIT_BL pour valider par Entrée
CallByName FormulairePRODUIT_BL, "CommandButton_Click", VbMethod
End Sub

Et dans le module de classe

Public WithEvents txB As MSForms.TextBox

Private Sub txB_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Action
End If
End Sub

Lorsque je clique sur la cellule, il s'arrête sur la ligne "Set txBx(i) = New ActClasse", je vois bien qu'il fait référence au module de classe mais je ne vois pas ce que je dois modifier ?

De plus si cela fonctionne, je vais pouvoir l'utiliser dans un autre formulaire où il aura plus d'une vingtaine de Textbox. Donc je ne te cache pas que cela sera génial.

A+

Bonjour Pigneau,

Un module de classe n'est pas comme un module simple. As tu bien installé cela et nommé celui-ci comme ActClasse?

Montre moi une image de ton projet VBA, c'est à dire la fenêtre ou sont détaillé les noms des feuilles, des formulaires, des modules et des modules de classe. Ou du moins essentiellement ce dernier.

Suite,

De plus, comment se nomme ton bouton de commande? Car la procédure Action cible un nom de bouton, dans mon exemple, il s'appelle Commandbutton. Mais si le tiens se nomme CmdValider il faut modifier.

Et as tu bien 5 textbox sur le formulaire?

sans titre1

J'ai bien 5 textBox. J'ai fait une copie du module classe en enlevant les 2 lignes pour le bouton valider. J'ai modifier et mis en la place mon CmdValider_Click dans le module1.

Merci

C'est bon problème résolu,

Encore merci X Cellus, tu es au top.

Rechercher des sujets similaires à "textbox valides touche entree"