Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Empêcher la saisie de 2 tirets successifs dans une 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 !

alias_2003

XLDnaute Occasionnel
Bonjour à tous,
Dans une textbox utilisée pour renseigner des numéros de ce type : 224-26-480 ou 14-25141-3, savez-vous s'il est possible d'empêcher la saisie de 2 tirets successifs dans une textbox ?
Je voudrais éviter d'avoir ce type de résultat : 224--26-480 ou 224-26----480.
Est-ce possible ?
Merci beaucoup,
Bon dimanche,
Amicalement
 
Re : Empêcher la saisie de 2 tirets successifs dans une textbox

Bonjour Alias, bonjour le forum,

Essaie comme ça :

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'à l'appui sur un touche dans la TetxBox1
'si le dernier caractère de la Tetxbox1 est un tiret et
'si la toucle appuyée est le tiret, la touche appuyée devient [Backspace] (=efface le tiret)
If Right(TextBox1.Value, 1) = "-" And KeyAscii = 45 Then KeyAscii = 8
End Sub
 
Re : Empêcher la saisie de 2 tirets successifs dans une textbox

Bonjour Alias, Robert, le Forum

Voici une autre approche:

Code:
Private Sub TextBox1_Change()
 mem = TextBox1.SelStart
 a = TextBox1
 b = InStr(a, "--")
   
 While b > 0
   a = Mid(a, 1, b - 1) & Mid(a, b + 1)
   mem = mem - 1
   ok = True
   b = InStr(a, "--")
 Wend
 If ok = True Then
  TextBox1 = a
  On Error Resume Next
  TextBox1.SelStart = mem
 End If
End Sub

Cordialement

Docmarti
 
Re : Empêcher la saisie de 2 tirets successifs dans une textbox

Bonjour Alias-2003,

Voilà un exemple de code qui permet d'empêcher la saisie de deux tirets consécutifs dans une TextBox:

Code:
Private Sub TextBox1_Change()

    Dim i As Integer, h As Integer, Chaine As String, Compteur As Integer
    Dim Obj As Object
    
    Set Obj = TextBox1
    Chaine = Obj.Value
    
    For i = 1 To Len(Obj.Value)
        
        Compteur = 0
        If Mid(Chaine, i, 1) = "-" Then
            
            For h = i To Len(Obj.Value)
                
                If Mid(Chaine, h, 1) = "-" Then
                    
                    Compteur = Compteur + 1
                    
                Else
                
                    Exit For
                
                End If
            
            Next h
        
        Chaine = Mid(Chaine, 1, i) & Mid(Chaine, i + Compteur, Len(Chaine))
        End If
    
    Next i
    
    Application.EnableEvents = False
    Obj.Value = Chaine
    Application.EnableEvents = True

End Sub

Il y'a peut-être plus simple après ..
Bon dimanche ! 🙂

EDIT: Salut Robert, DocMarti!
 
Dernière édition:
Re : Empêcher la saisie de 2 tirets successifs dans une textbox

Bonsoir VDAVID, Docmarti et Robert,
Je vous remercie beaucoup pour vos réponses et vos excellentes solutions !!
Mon problème est résolu grâce à vous !
Merci encore,
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
1
Affichages
469
W
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…