XL 2016 Problème VBA - format TextBox

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 !

marcfriez

XLDnaute Nouveau
Bonsoir à tous,

J'ai crée un programme excel avec UserForm, mais je rencontre un problème dans mon formulaire. J'ai 3 types de textbox:

-Dans la première j'ajoute des données numériques (montant en euros). J'ai envie de modifier le format de ma textbox pour faire en sorte que je peux saisir juste des nombres décimaux avec la virgule, puis à la fin faire apparaître le symbole euros €. Si je saisie un autre symbole ou une lettre un message d'erreur doit apparaître.

-Dans la deuxième j'ajoute une date du type dd/mm/yyyy. J'ai envie de modifier le format de ma textbox pour faire en sorte que je peux saisir juste des chiffres avec des slashes ("/"). Si je saisie un autre symbole ou une lettre un message d'erreur doit apparaître.

- Dans la dernière j'ajoute un pourcentage ("00.00%). J'ai envie de modifier le format de ma textbox pour faire en sorte que je peux saisir juste des chiffres avec la virgule, puis à la fin faire apparaître le "%". Si je saisie un autre symbole ou une lettre un message d'erreur doit apparaître.

Je vous remercie d'avance 🙂))
 
Dernière édition:
Re,

Bonjour Patrick... Avoue que c'est plus rapide avec le code de ton masque de saisie universel ..... 3 formats pour le prix d'un... mieux que les soldes.
Ma signature.gif
 
Re,

Bonjour Patrick... Avoue que c'est plus rapide avec le code de ton masque de saisie universel ..... 3 formats pour le prix d'un... mieux que les soldes.
Regarde la pièce jointe 1048347
Bonsoir @Eric C ca n'a rien a voir avec un textbox avec masque de saisie
la il s'agit juste de suffixer le .value d'un symbole et je t'offre en prime la manip des touches sans te soucier de ce suffixe
comme dans celle du masque 😉
 
@ ça plante à chaque fois. Pour simplifier, avez vous un code unique pour toutes mes textbox pour éviter la saisie de lettre. C'est à dire quand je saisie des lettres un message d'erreur doit apparaître. Le reste me semble très compliqué, je suis perdu...
 
@ ça plante à chaque fois. Pour simplifier, avez vous un code unique pour toutes mes textbox pour éviter la saisie de lettre. C'est à dire quand je saisie des lettres un message d'erreur doit apparaître. Le reste me semble très compliqué, je suis perdu...
il faut suivre !!! post #15 il t'est impossible de taper autre chose qu'un numérique décimale ou pas
 
re
TIENS pour une date en voila un aussi tout mini de code
pareil on intercepte et control la validité de la date en même temps avant de valider la touche (les séparateurs sont automatiques )
VB:
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    With TextBox3
        X = .Value
       l = 10
        Select Case KeyCode
        Case 96 To 105
            X = X & Chr(KeyCode + IIf(KeyCode < 96, 32, -48))
            If Len(X) = 2 Or Len(X) = 5 Then X = X & "/"
            If Val(X) > 31 Then X = ""
            If Len(X) = 6 Then If Not IsDate(X & "2000") Then X = Left(X, 3)
            If Len(X) = 10 Then If Not IsDate(X) Then X = Mid(X, 1, InStrRev(X, "/"))
            KeyCode = 0
         Case 8:
        If .SelStart > 3 Then l = 4
       If .SelStart > 6 Then l = 6
        Case Else: KeyCode = 0
        End Select
        .Value = Mid(X, 1, l)
    End With
End Sub
😉
 
re
TIENS pour une date en voila un aussi tout mini de code
pareil on intercepte et control la validité de la date en même temps avant de valider la touche (les séparateurs sont automatiques )
VB:
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    With TextBox3
        X = .Value
       l = 10
        Select Case KeyCode
        Case 96 To 105
            X = X & Chr(KeyCode + IIf(KeyCode < 96, 32, -48))
            If Len(X) = 2 Or Len(X) = 5 Then X = X & "/"
            If Val(X) > 31 Then X = ""
            If Len(X) = 6 Then If Not IsDate(X & "2000") Then X = Left(X, 3)
            If Len(X) = 10 Then If Not IsDate(X) Then X = Mid(X, 1, InStrRev(X, "/"))
            KeyCode = 0
         Case 8:
        If .SelStart > 3 Then l = 4
       If .SelStart > 6 Then l = 6
        Case Else: KeyCode = 0
        End Select
        .Value = Mid(X, 1, l)
    End With
End Sub
😉
@patricktoulon

Je vous remercie infiniment, j'ai enfin réussi, merci beaucoup 🙂 🙂 🙂 🙂

Bonne soirée
 
- 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
7
Affichages
371
Réponses
1
Affichages
336
Réponses
13
Affichages
612
Retour