Microsoft 365 Controler un format specifique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eric57

XLDnaute Occasionnel
Bonjour le Forum et bonne année 2025

J'ai un souci avec un format particulier que je voudrais vérifier.

La valeur de Ma TextBox doit avoir ce format : A-01-123456

soit :
une lettre en majuscule
un tiret
2 chiffres
un tiret
6 ou 7 chiffres

J'ai donc mis ce bout de code


VB:
Dim Machaine As String

Machaine = Userform44.TextBox_2


If Not Machaine Like "[A-Z]-[0-9]{2}-[0-9]{6,7}" Then
    MsgBox Machaine ' pour vérifier visuellement que ma chaine est juste
        MsgBox "L'identifiant doit être au format X-XX-XXXXXX ou X-XX-XXXXXXX. Veuillez corriger.", vbExclamation, "Format d'identifiant incorrect"
      
End If

Le msgBox confirme que j'ai bien le format attendu, pourtant cela fonctionne comme si Machaine n'était pas au format attendu

Donc a priori je fais u,e faute quelque part ?

Merci pour votre aide.

J'ai reproduit ce code simplifié dans un tableau que je vous joint .
 

Pièces jointes

Solution
Hello,
c'est normal que cela ne fonctionne pas : tu nous as mis un motif d'expressions régulières dans un Like
Essaie ceci :
VB:
Sub controleFormat()
Dim Machaine As String
Dim Regex As Object
Machaine = Range("B3")
Set Regex = CreateObject("VBScript.RegExp")
Regex.Pattern = "[A-Z]-[0-9]{2}-[0-9]{6,7}"
If Not Regex.test(Machaine) Then
  '  MsgBox Machaine ' pour vérifier visuellement que ma chaine est juste
        MsgBox "L'identifiant doit être au format X-XX-XXXXXX ou X-XX-XXXXXXX. Veuillez corriger.", vbExclamation, "Format d'identifiant incorrect"
End If
End Sub

Ami calmant, J.P
Bonjour Eric,
Un essai en PJ avec :
VB:
Sub controleFormat()
Dim Machaine As String, T
Machaine = [B6]
T = Split(Machaine, "-")
If T(0) <> UCase(T(0)) Or Len(T(1)) <> 2 Or (Len(T(2)) <> 6 And Len(T(2)) <> 7) Then
    MsgBox "L'identifiant doit être au format X-XX-XXXXXX ou X-XX-XXXXXXX. Veuillez corriger.", vbExclamation, "Format d'identifiant incorrect"
End If
End Sub
 

Pièces jointes

Bonjour Eric,
Un essai en PJ avec :
VB:
Sub controleFormat()
Dim Machaine As String, T
Machaine = [B6]
T = Split(Machaine, "-")
If T(0) <> UCase(T(0)) Or Len(T(1)) <> 2 Or (Len(T(2)) <> 6 And Len(T(2)) <> 7) Then
    MsgBox "L'identifiant doit être au format X-XX-XXXXXX ou X-XX-XXXXXXX. Veuillez corriger.", vbExclamation, "Format d'identifiant incorrect"
End If
End Sub
Merci pour ton code sylvanu, mais si les tirets n'ont pas ete saisies, le code est en erreur, et je dois vérifier que j'ai bien ces 2 tirets
 
Hello,
c'est normal que cela ne fonctionne pas : tu nous as mis un motif d'expressions régulières dans un Like
Essaie ceci :
VB:
Sub controleFormat()
Dim Machaine As String
Dim Regex As Object
Machaine = Range("B3")
Set Regex = CreateObject("VBScript.RegExp")
Regex.Pattern = "[A-Z]-[0-9]{2}-[0-9]{6,7}"
If Not Regex.test(Machaine) Then
  '  MsgBox Machaine ' pour vérifier visuellement que ma chaine est juste
        MsgBox "L'identifiant doit être au format X-XX-XXXXXX ou X-XX-XXXXXXX. Veuillez corriger.", vbExclamation, "Format d'identifiant incorrect"
End If
End Sub

Ami calmant, J.P
 
Hello,
c'est normal que cela ne fonctionne pas : tu nous as mis un motif d'expressions régulières dans un Like
Essaie ceci :
VB:
Sub controleFormat()
Dim Machaine As String
Dim Regex As Object
Machaine = Range("B3")
Set Regex = CreateObject("VBScript.RegExp")
Regex.Pattern = "[A-Z]-[0-9]{2}-[0-9]{6,7}"
If Not Regex.test(Machaine) Then
  '  MsgBox Machaine ' pour vérifier visuellement que ma chaine est juste
        MsgBox "L'identifiant doit être au format X-XX-XXXXXX ou X-XX-XXXXXXX. Veuillez corriger.", vbExclamation, "Format d'identifiant incorrect"
End If
End Sub

Ami calmant, J.P
Bonjour jurrassic Pork , encore une fois tu me trouves la réponse et en plus j'ai compris mon erreur . Merci bcp Je met en résolu
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Retour