Afficher un msgbox pour plusieurs textbox

Bonjour,

J'aimerais qu'un msgbox apparaissent "Le caractère saisi n'est pas valide" pour 27 TextBox quand on saisi une donnée autre qu'un chiffre.

Je précise que tout est dans un formulaire et rien ne doit apparaître dans les feuilles excel.

J'e cherche depuis plusieurs jours mais je n'arrive pas à régler le soucis. J'ai remarqué que le problème venait de : "Public Sub TextBox1" puisque cela fonctionne que pour la TextBox1 et quand je change et que je mets TextBox2 cela fonctionne seulement pour la TextBox2.

J'ai essayé de mettre "Public Sub Userform1" ou "Public Sub exemple"

Voilà mon code :

Public Sub TextBox1()

Dim i As Integer

For i = 1 To 27

Next i

For Each TextBox In i

If Not IsNumeric("TextBox" & i) Then

MsgBox "Le caractère saisi n'est pas valide"

End If

End Sub

Pouvez-vous m'aider s'il-vous-plait

Je vous remercie par avance

Bonsoir,

Pour répondre à votre problème,

Etape 1

Créer un module de classe nommé par exemple Tbox avec le code suivant :

Option Explicit

'# Evénements pour zone de texte
Private WithEvents Txtbox As MSForms.TextBox

Public Property Set Obj_class(ByVal zone_texte As MSForms.TextBox)
    Set Txtbox = zone_texte
End Property

Private Sub Txtbox_Change()
    If Not IsNumeric(Txtbox.Value) Then MsgBox "Le caractère saisi n'est pas valide": Exit Sub
End Sub

Etape 2

Insérer ce code dans votre formulaire

Option Explicit

'définition variables du module
Dim TextBoxes As New Collection

Private Sub UserForm_Initialize()
    Dim ctrl As Control

    'création et stockage éléments de la classe TextBoxes
    For Each ctrl In Me.Controls
        If TypeOf ctrl Is MSForms.TextBox Then
            'création de l'élément de la classe et stockage dans la collection TextBoxes
            TextBoxes.Add Key:=ctrl.Name, Item:=New TBox
            'affectation de l'objet TextBox à l'élément de la classe
            Set TextBoxes(ctrl.Name).Obj_class = ctrl
        End If
    Next ctrl

End Sub

Bonjour

Le problème dans tout cela, si tu as 27 textbox , le message n'indiquera pas sur quel textbox il y a problème.

Tu peux pas non plus envoyer un message "le textbox15 ou autre" n'est pas valide, car l'utilisateur va se demander de quoi tu parles...

Donc le mieux, même si cela te gave, c'est de mettre à chaque textbox cet évènement, ce qui empêchera l'utilisateur de saisir autre chose que des chiffres

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0: Beep
End Sub

Bon courage

Rechercher des sujets similaires à "afficher msgbox textbox"