Sub TesterToutesLesCombinaisons()
' Déclaration du tableau avec toutes les chaînes fournies
Dim MesTests As Variant
MesTests = Array("123456789/987654321/-1234/123.45/123a45", "1234/56789/0123/45", "12/5", "3/14", "0/1", "123456/7890", "12 / 5", " 12/5", "12/5 ", "abc/12", "12/abc", "12/", "/12", "12-5", "12//5", "12/5/7", "12.5/7", "12/7.5", "", " ", "12/ 5", " 12 / 5 ", "0012/0005", "125635/45236/45896", "125635/ert45236/edfr45896", "dfrgfr8/5frferf", "dfrgfr68/52frferf", "3/12", "215/3", "25/84a", "a25/84", "123/456789", "1/789", "123/5", "123/4156", "2/12", "52/1", "52/1/4523", "a2/1", "45/1E", "45/2", "145254/7452652", "12.5/4.25", "A1/12365", "0A1/12365", "452d36/7586")
Dim i As Integer
Dim Resultat As String
Debug.Print "--- DÉBUT DES TESTS ---"
For i = LBound(MesTests) To UBound(MesTests)
If EstValide(CStr(MesTests(i))) Then
Resultat = "OK"
Else
Resultat = "NON"
End If
' Affichage du résultat
' On ajoute une petit marque pour les cas où vos commentaires prédisaient l'inverse
Debug.Print Resultat & " | " & Chr(34) & MesTests(i) & Chr(34)
Next i
Debug.Print "--- FIN DES TESTS ---"
End Sub
' Fonction de validation stricte : [0-9]+/[0-9]+
Function EstValide(LaChaine As String) As Boolean
Dim p As Integer
Dim PartieGauche As String, PartieDroite As String
EstValide = False ' Par défaut on refuse
' 1. Vérifier la présence d'au moins un slash
p = InStr(LaChaine, "/")
If p = 0 Then Exit Function
' 2. Vérifier qu'il n'y a QU'UN seul slash (position du dernier slash = position du premier)
If InStr(p + 1, LaChaine, "/") > 0 Then Exit Function
' 3. Vérifier qu'il n'y a pas de slash au début ou à la fin
If p = 1 Or p = Len(LaChaine) Then Exit Function
' 4. Isoler les parties
PartieGauche = Left$(LaChaine, p - 1)
PartieDroite = Mid$(LaChaine, p + 1)
' 5. Vérifier strictement que ce sont des chiffres [0-9] et rien d'autre
' L'astuce String(Len, "#") crée le motif exact de la bonne longueur
' Ex: "123" devient "###", "a12" devient "###" mais ne matche pas
If PartieGauche Like String(Len(PartieGauche), "#") And _
PartieDroite Like String(Len(PartieDroite), "#") Then
EstValide = True
End If
End Function