'Soyez indulgents, c'est ma première source... 'Sur une Form, placer un txtBox nommé txt(Index) et suivre les commentaires ci-dessous. _ Cela permet un formatage conditionnel de la saisie selon un masque que vous _ définissez vous même. 1 fonction et une procédure. _ Le ZIP comporte en plus une procédure pour faire un dégradé de couleur horizontal _ ou vertical à l'aide des codes RGB de la couleur de départ et de celle d'arrivée. Function TexteAvecMask(ctxt As Control, Keycode As Integer) 'Cette fonction est à utiliser dans le KeyUP du Control txtBox (ici txt(Index)) selon la syntaxe suivante : 'Me.txt(Index).Text = TexteAvecMask(fMain.txt(Index), Keycode) 'Il faut la faire suivre de la ligne suivante qui replace le curseur à la fin de la saisie : 'Me.txt(Index).SelStart = Len(Me.txt(Index)) '______________________________________________________________________________________________ Dim Masque$ 'Je défini le masque. Dans cet exemple il est dans le Tag du Control TXT _ On peut mettre le masque ailleurs que dans le Tag. Il peut se trouver n'importe où _ il suffit de le chercher où il est ! Masque$ = ctxt.Tag 'S'il n'y a pas de masque, je sors If Masque$ = "" Then Exit Function 'Longueur du texte déjà tapé Dim Longueur As Long Dim Texte$ Texte$ = ctxt.Text Longueur = Len(Texte$) If Longueur = 0 Then Exit Function Dim str$, CarSuivant$ Dim Touche$ 'Touche que je viens de taper Touche$ = Chr(Keycode) 'Je limite la saisie à la longueur du Masque If Longueur > Len(Masque$) Then TexteAvecMask = Left(Texte$, Len(Texte$) - 1) Exit Function End If 'str sert à comparer le caractère saisi avec le caractère du masque str = Mid(Masque$, Longueur, 1) 'Je vérifie si le caractère suivant du masque est un chiffre, une lettre ou un autre caractère CarSuivant$ = Mid(Masque$, Longueur + 1, 1) 'Petit test pour visualiser les variables 'Dim msg$ 'msg = "ctxt.name = " & ctxt.Name & vbCrLf 'msg = msg & "texte = " & Texte & vbCrLf 'msg = msg & "Touche$ = " & Touche$ & vbCrLf 'msg = msg & "Masque$ = " & Masque$ & vbCrLf 'msg = msg & "Longueur = " & Longueur & vbCrLf 'msg = msg & "str = " & str & vbCrLf 'msg = msg & "CarSuivant$ = " & CarSuivant$ ' MsgBox msg If str = "?" Then 'J'ai une lettre Select Case Touche$ Case "A" To "Z" 'Lettres Select Case CarSuivant$ Case "?", "#" TexteAvecMask = Left(Texte$, Len(Texte$) - 1) & Touche$ Case Else TexteAvecMask = Left(Texte$, Len(Texte$) - 1) & Touche$ & CarSuivant$ End Select Case Else TexteAvecMask = Left(Texte$, Len(Texte$) - 1) End Select ElseIf str = "#" Then 'J'ai un chiffre Select Case Touche$ Case "0" To "9" Select Case CarSuivant$ Case "?", "#" TexteAvecMask = Left(Texte$, Len(Texte$) - 1) & Touche$ Case Else TexteAvecMask = Left(Texte$, Len(Texte$) - 1) & Touche$ & CarSuivant$ End Select Case Else TexteAvecMask = Left(Texte$, Len(Texte$) - 1) End Select Else 'J'ai tout autre caractère Select Case CarSuivant$ Case "?", "#" TexteAvecMask = Left(Texte$, Len(Texte$) - 1) & Touche$ Case Else TexteAvecMask = Left(Texte$, Len(Texte$) - 1) & Touche$ & CarSuivant$ End Select End If End Function Sub Verif(ctxt As Control) 'Cette procédure est à utiliser dans le GotFocus du control txtBox (ici txt(Index)) _ pour vérifier si le début du masque n'est ni un chiffre, ni une lettre. _ Dans ce cas, j'envoi le ou les caractères non variables dans le txtBox. 'La syntaxe à utiliser est la suivante : 'Verif txt(Index) '______________________________________________________________________________________________ If ctxt.Tag = "" Then Exit Sub 'Longueur du mask Dim Longueur As Long Dim Chaine$, i%, msg$ Chaine$ = ctxt.Tag If Chaine$ = "" Then Exit Sub Longueur = Len(Chaine$) If Longueur = 0 Then Exit Sub Select Case Left(Chaine$, 1) Case "?", "#" Exit Sub End Select For i% = 1 To Longueur Select Case Mid(Chaine$, i%, 1) Case "?", "#" Case Else msg$ = msg$ & Mid(Chaine$, i%, 1) End Select Next i% ctxt.Text = msg$ ctxt.SelStart = Len(msg$) End Sub<code>
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.