cathodique
XLDnaute Barbatruc
Bonsoir,
J'utilise le code ci-dessous de @patricktoulon pour saisir des numéros de téléphone dans une textbox.
Son code est dans une procédure Private, elle s’exécute parfaitement dans le formulaire où elle se trouve.
Je l'ai copie dans un module standard mais ne fonctionne pas.
En effet, je voudrais réutiliser cette macro pour d'autres userforms.
En vous remerciant par avance.
Bonne soirée.
J'utilise le code ci-dessous de @patricktoulon pour saisir des numéros de téléphone dans une textbox.
Son code est dans une procédure Private, elle s’exécute parfaitement dans le formulaire où elle se trouve.
VB:
'********************************************************************
'COLLECTION TEXTBOX FORMATE EPISODE 1 EXERCICE 1 *
' UN phonnebox FR avec masque de saisie *
'en version simplifié a but école *
'auteur patricktoulon sur exceldownload et excel pratique *
'version 3.7 *
' *
'le moteur séparé de l'event pour utilisation multi textbox *
'********************************************************************
Option Explicit
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim X&, Xl&, D&, M&, A, T$, mask: mask = "__ __ __ __ __"
'pour ceux qui n'ont pas le pavé numerique conversion du keycode du pavé haut du clavier(Attention!!!pas besoins de bloquer la touche MAJ!!!!!!!!le code se charge de convertir)
If KeyCode >= 48 And KeyCode <= 57 Then KeyCode = KeyCode + 48
'c'est parti on démarre le controle!!
With TextBox1
Xl = .SelLength: If Xl = 0 Then Xl = 1 'Xl= la longeur de texte selectionné
.Value = IIf(.Value = "", mask, .Value): If KeyCode = 8 And Xl > 1 Then KeyCode = 46
T = .Value: .SelStart = IIf(T = mask, 0, .SelStart): X = .SelStart:
Select Case KeyCode
Case 96 To 105 'pavé numerique haut et bas
If X = 14 Then KeyCode = 0: Exit Sub
If X = 2 Or X = 5 Or X = 8 Or X = 11 Then X = X + 1
Mid(T, X + 1, Xl) = Chr(KeyCode - 48) & Mid(mask, X + 2, Xl - 1)
X = X + 1: Xl = 0: If X = 2 Or X = 5 Or X = 8 Or X = 11 Then X = X + 1
KeyCode = 0
Case 8:
If X = 0 Then KeyCode = 0:: .Value = "": Exit Sub
Mid(T, X, 1) = Mid(mask, X, 1): X = X - 1: Xl = 0: If T = mask Then T = ""
KeyCode = 0 ' on annule toujours la touche
Case 46:
If X = 14 Then KeyCode = 0: Exit Sub
Mid(T, X + 1, Xl) = Mid(mask, X + 1, Xl): X = X: Xl = Xl - 1: If T = mask Then T = ""
KeyCode = 0 ' on annule toujours la touche
Case Else
KeyCode = 0
End Select
.Value = T 'restitution
.SelStart = X: .SelLength = Xl
KeyCode = 0
End With
End Sub
En effet, je voudrais réutiliser cette macro pour d'autres userforms.
En vous remerciant par avance.
Bonne soirée.