XL 2019 uniformser à la fois plusieurs textbox

Monhtc

XLDnaute Occasionnel
Coucou le forum,
J'ai un userfom avec plusieurs textbox dont 7 qui contiendront que des nombre avec séparateurs de milliers.
Comment uniformiser ces 7 textbox (Textbox, textbox2, textbox3.. textbox6) à la fois pour que l'utilisateur ne puisse pas taper n'importe quoi mais que des chiffres
 
Solution
Coucou le forum,
J'ai un userfom avec plusieurs textbox dont 7 qui contiendront que des nombre avec séparateurs de milliers.
Comment uniformiser ces 7 textbox (Textbox, textbox2, textbox3.. textbox6) à la fois pour que l'utilisateur ne puisse pas taper n'importe quoi mais que des chiffres
Bonjour à tous
Pour ne pouvoir saisir que des chiffres, il y a ceci
Pour chaque textbox
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890 " & Application.International(xlDecimalSeparator), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir @Monhtc , le Forum

Soit on agit à la saisie par TextBox par TextBox avec ce genre de code :

VB:
Private Sub TextBox1_Change()
If IsNumeric(Me.TextBox1.Value) = False Then
    Me.TextBox1.Value = ""
    MsgBox "Tapez du numérique SVP !", vbCritical, "Grrrrrrrrrrrrrrrrr"
End If
End Sub

Soit on agit une fois à la fin quand on veut exporter les données, on fait un contrôle global et préalable à l'export :

VB:
Private Sub CommandButton1_Click()
Dim CTRL As Control
Dim x As Byte

    For Each CTRL In Me.Controls
        For x = 1 To 7
            If CTRL.Name = "TextBox" & x Then
                If CTRL.Value = "" Then
                   MsgBox "La " & CTRL.Name & " est vide !", vbCritical, "Y à pas bon !"
                Exit Sub
                End If
                If IsNumeric(CTRL.Value) = False Then
                    MsgBox "La " & CTRL.Name & " ne contient pas une valeur numérique !" & vbCrLf & CTRL.Value, vbCritical, "Encore pas bon !!!!!"
                    CTRL.Value = ""
                    CTRL.SetFocus
                Exit Sub
                End If
            End If
        Next x
    Next CTRL

End Sub

Bonne découverte du monde VBA !
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re,

Pour :
Private Sub CommandButton1_Click()?
doisje donc créer un bouton avant de rentrer ce code?

Ben tu auras sûrement un bouton "Valider" dans le UserForm, non ?
Donc ce code sera à intégrer en début de la Sub, avant qu'il ne se produise des actions de validation.
(C'est pourquoi d'ailleurs j'utilise "Exit Sub" quand les mauvaises conditions sont remplies... Le reste de la Validation ne se fera pas !)

Bonne nuit
@+Thierry
 

Jacky67

XLDnaute Barbatruc
Coucou le forum,
J'ai un userfom avec plusieurs textbox dont 7 qui contiendront que des nombre avec séparateurs de milliers.
Comment uniformiser ces 7 textbox (Textbox, textbox2, textbox3.. textbox6) à la fois pour que l'utilisateur ne puisse pas taper n'importe quoi mais que des chiffres
Bonjour à tous
Pour ne pouvoir saisir que des chiffres, il y a ceci
Pour chaque textbox
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("1234567890 " & Application.International(xlDecimalSeparator), Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
 

Discussions similaires

  • Question
Microsoft 365 textbox
Réponses
1
Affichages
246

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 814
dernier inscrit
JLGalley