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

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
 

Robert

XLDnaute Barbatruc
Repose en paix
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
 

Docmarti

XLDnaute Occasionnel
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
 

VDAVID

XLDnaute Impliqué
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:

alias_2003

XLDnaute Occasionnel
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 !
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87