Private Sub Tsiret_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim Mask$, txt$, s&, longg&, plus& 'variable
        Mask = "XXX / XXX XX XX" 'masque de saisie
    If Tsiret = "" And KeyCode <> 8 And KeyCode <> 46 Then Tsiret = Mask 'si le textbox est vide et la touche tapée est "Retour en arriere" ou "suppr" on remet le pasque entier
    txt = Tsiret.Value 'variable txt = le textbox
    If txt = Mask Then Tsiret.SelStart = 0 'si txt = le masque  le carret est au debut (carret=curseur)
    s = Tsiret.SelStart: 's= position carret
    longg = Tsiret.SelLength: If longg = 0 Then longg = 1 ' longg = la longeur de text selectionner(bleuie)
    plus = IIf(KeyCode < 96, 32, -48) 'coeef supplement keycode pour code asc
    Select Case KeyCode 'selon keycode(touche tapée
    Case 96 To 105, 65 To 90 'case chiffre ou lettres
        If s = Len(Mask) Then KeyCode = 0: Exit Sub ' si s= la fin du textbox on sort
        Mid(txt, s + 1, longg) = Chr(KeyCode + plus) & Mid(Mask, s + 2, longg - 1): KeyCode = 0 'remplacement du masque par la touchetapée + la partie correspondant a la selection (index de depart et de fin)
        Tsiret = txt: Tsiret.SelStart = IIf(InStr(1, Tsiret, "X") = 0, s + 1, InStr(1, Tsiret, "X") - 1) 'repositionnement du carret (curseur) sur le prochain x
    Case 8  ''si touche retour en arriere
        If s <> 0 Then Mid(txt, s, longg + 1) = Mid(Mask, s, longg + 1) Else Exit Sub 'si position carret(curseur) <> 0 remplacement du caractere par celui du masque au meme endroit
        Tsiret = txt: Tsiret.SelStart = s - 1: KeyCode = 0 'textbox = txt et positionnement du carret(curseur)
    If txt = Mask Then Tsiret = "" ' si txt = masque alors on vide le textbox
    Case 46 'si touche suppr
        If Tsiret = "" Then Exit Sub ' si letextbox est vide on sort
        If longg = 0 Then longg = 1 ' si la longeur de selection de texte est 0 (donc juste selstart) alors la longeur =1
        Mid(txt, s + 1, longg) = Mid(Mask, s + 1, longg) 'remplacement de la selection de texte dans le textbox par la partie correspondante du masque
        Tsiret = txt: Tsiret.SelStart = s: KeyCode = 0 ' et enfin textbox = txt et positionnement du carret(curseur)et annulation de la touche
    If txt = Mask Then Tsiret = "" ' si txt = masque alors on vide le textbox
 
    Case 39: Tsiret.SelStart = s + 1 ' deplacement avec les fleche (droite)
    Case 37: Tsiret.SelStart = s - IIf(s > 0, 1, 0) ' deplacement avec les fleche (gauche)
   
    Case 13:    ' touche enter  fait ce que tu veux c'est la sortie
    Case Else: KeyCode = 0
    End Select
End Sub