Code retour en arrière pour numéro de tel dans texbox
Rigel Io
Messages postés11Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 octobre 2012
-
29 oct. 2012 à 01:06
cs_Le Pivert
Messages postés7903Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention11 mars 2024
-
29 oct. 2012 à 16:53
Bonjour à tous,
Je suis en train de faire un petit prog sous VBA excel.
Le contexte est le suivant: je veux seulement insérer des "." dans un numéro de téléphone en le tapant dans un textbox et ainsi obtenir 06.12.34.56.78 à la place de 0612345678.
Mon problème est que je n'arrive pas à trouver le code qui permet de savoir quand on appuie sur le bouton retour en arrière du clavier afin d'éviter le code pour pouvoir effacer le ".".
Le code que j'ai développé est le suivant:
Private Sub TextBox16_Change()
Dim pair As Integer, i As Integer
Dim NbrPt As Integer
'Application.SendKeys={return}
If KeyCode = Chr(13) Then 'chr(13)=touche return 'MON PROBLEME
UserForm1.TextBox16 = Left(UserForm1.TextBox16, Len(UserForm1.TextBox16) - 2)
Exit Sub
End If
If Left(UserForm1.TextBox16, 1) <> "+" Then
For i = 1 To Len(UserForm1.TextBox16)
If Mid(UserForm1.TextBox16, i, 1) "." Then NbrPt NbrPt + 1
Next i
pair = (Len(UserForm1.TextBox16) - NbrPt) Mod 2
If pair = 0 And Right(UserForm1.TextBox16, 1) <> "." And NbrPt <> 4 Then
UserForm1.TextBox16 = UserForm1.TextBox16 & "."
If UserForm1.TextBox16 "." Then UserForm1.TextBox16 ""
End If
End If
End Sub
Je le trouve un laborieux pour une chose si simple, si vous avez d'autre idée n'hésitez pas mais mon principal problème pour l'instant et de trouver comment reconnaitre le bouton retour en arrière du clavier dans une textbox.
Merci d'avance,
Rigel-IO
A voir également:
Code retour en arrière pour numéro de tel dans texbox
Un contrôle TextBox est un outil de traitement de texte. Il permet donc de faire des effacements avant et arrière, ce qui est la moindre des choses pour un traitement de texte, fût-il élémentaire. Il en résulte que les caractères de contrôle qui provoquent des effacements ne peuvent se retrouver dans le contrôle.
La voie que je vous conseille est de convertir le texte du TextBox en un tableaux de strings, chacun d'eux ne contenant que le texte d'une ligne. Vous pourrez alors modifier comme vous voudrez le texte de telle ligne qu'il vous plaira par une commande externe (un bouton de commande par exemple), puis procéder à la conversion inverse.
Mais me direz-vous, ces conversions doivent des usines à gaz ! Nenni vous répondrai-je alors. Je me propose de vous envoyer les codes de ces mini-algorithmes, après les avoir préparés. En effet, je ne suis pas capable des les écrire à la volée. Voyez d'ailleurs ma signature.
Vous avez ci-dessous les deux mini-algorithmes. Notez bien que
– j'utilise des tableaux de base 0, sans pour autant exploiter les termes de rang 0,
– chaque string renvoyé par le décomposé se termine par vbCrLf, c'est-à-dire par Chr(13) & Chr(10).
Private Function Décomposé(Txt As String) As String()
Dim Txts() As String, n As Long, p As Long, q As Long
If Right(Txt, 2) <> vbCrLf Then Txt = Txt & vbCrLf
n = 0: ReDim Txts(0 To n)
p = 1
Do
q = InStr(p, Txt, vbCrLf)
If q = 0 Then
Exit Do
Else
n = n + 1: ReDim Preserve Txts(0 To n)
Txts(n) Mid(Txt, p, q - p + 2): p q + 2
End If
Loop
Décomposé = Txts
End Function
Private Function Recomposé(Txts() As String) As String
Dim i As Long, n As Long, Txt As String
n UBound(Txts): Txt ""
For i = 1 To n
Txt = Txt & Txts(i)
Next i
Recomposé = Txt
End Function