Test cellule alphanumérique

Bonjour,

Dans mon fichier Je voudrais renvoyer dans la cellule D2 le test de la cellule C2 (qui est issue d'une formule et renvoie donc du texte)

Pour inscrire "OK" en D2, C2 doit comporter au minimum 8 caractères composés d'au minimum

  • 1 majuscule.
  • 1 minuscule.
  • 1 chiffre.

Merci de votre aide

24classeur1.xlsx (9.47 Ko)

Bonjour Krx2006 et bienvenue,

voici un exemple,

copie le code suivant sur le Module1

et sur la feuille en cellule D2 inscrit la formule

=TestCell(C2)

Function TestCell(cellule As Range) As String
Dim nb As Integer, i As Integer, minus As Integer, majus As Integer, numé As Integer
Application.Volatile
nb = Len(cellule)
For i = 1 To nb
    Select Case Asc(Mid(cellule, i, 1))
    Case 97 To 122: minus = 1
    Case 65 To 90: majus = 1
    Case 48 To 57: numé = 1
    End Select
Next i
If nb >= 8 And minus = 1 And majus = 1 And numé = 1 Then TestCell = "OK" Else TestCell = "Err"
End Function

Bonjour le fil, bonjour le forum,

Moins classieux que la fonction de Vincent, la macro ci-dessous :

Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tabeau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim C1 As Boolean 'déclare la variable C1 (Condition 1)
Dim C2 As Boolean 'déclare la variable C2 (Condition 2)
Dim C3 As Boolean 'déclare la variable C3 (Condition 3)
Dim C4 As Boolean 'déclare la variable C4 (Condition 4)
Dim TC As Boolean 'déclare la variable TC (Total des Condition)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée Dl de la colonne A de l'onglet O
TV = O.Range("C1:C" & DL) 'définit le tableau des valeurs TV
For I = 2 To DL 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    C1 = False: C2 = False: C3 = False: C4 = False: TC = False 'remet à zéro toutes les conditions
    If Len(TV(I, 1)) >= 8 Then C1 = True 'si la donnée contient au moins 8 caractères la condition C1 est vraie
    For J = 1 To Len(TV(I, 1)) 'boucle 2 : sur tous les caractères de la donnée
        'si le caractère de la boucle est une majuscule alors la condition C2 est vraie
        If Asc(Mid(TV(I, 1), J, 1)) > 64 And Asc(Mid(TV(I, 1), J, 1)) < 91 Then C2 = True
        'si le caractère de la boucle est une minuscule alors la condition C3 est vraie
        If Asc(Mid(TV(I, 1), J, 1)) > 96 And Asc(Mid(TV(I, 1), J, 1)) < 123 Then C3 = True
        'si le caractère de la boucle est un chiffre alors la condition C4 est vraie
        If Asc(Mid(TV(I, 1), J, 1)) > 47 And Asc(Mid(TV(I, 1), J, 1)) < 58 Then C4 = True
    Next J 'prochain caractère de la boucle 2
    TC = C1 * C2 * C3 * C4 'définit la variable TC (Faux = 0, Vrai = -1)
If TC = False Then O.Cells(I, "D").Value = "" Else O.Cells(I, "D").Value = "OK"
Next I 'prochaine ligne de la boucle 1
End Sub

Salut Krx2006, Salut le Forum,

Formule matricielle à entrer dans la céllule D2 et à valider avec Ctrl+Maj+Entrée

=SI(ET(SIERREUR(EQUIV(1;SI(ABS(CODE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))-109,5)<=12,5;1);0);0)>0;NBCAR(A2)>=8;SOMMEPROD(NBCAR(A2)-NBCAR(SUBSTITUE(A2;CAR(LIGNE(INDIRECT("65:90")));"")))>0;NB(TROUVE({0;1;2;3;4;5;6;7;8;9};A2))>0);"OK";"NO")

Voir fichier

13krx2006.xlsx (9.38 Ko)

Bonne journée

Merci i20100, ThauThème, m3ellem1 pour vos propositions elles fonctionnent parfaitement.

m3ellem1, ta formule valide Ok même si je n'ai pas de minuscule.

Encore merci

Merci i20100, ThauThème, m3ellem1 pour vos propositions elles fonctionnent parfaitement.

m3ellem1, ta formule valide Ok même si je n'ai pas de minuscule.

c'est bizar je viens de tester et chez moi sans minuscule ça m'affiche NO

Merci i20100, ThauThème, m3ellem1 pour vos propositions elles fonctionnent parfaitement.

m3ellem1, ta formule valide Ok même si je n'ai pas de minuscule.

c'est bizar je viens de tester et chez moi sans minuscule ça m'affiche NO

Le teste ce fait sur la cellule A2 et non C2, c'est pour cela que si le nom (A2) comporte un minuscule ça passe mais je veux tester ces conditions sur le code (C2)

8krx2006.xlsx (9.67 Ko)

Ok Sorry, ma faute

voir fichier

5krx2006-2.xlsx (9.45 Ko)

Ok Sorry, ma faute

voir fichier

Krx2006-2.xlsx

Merci

Ok Sorry, ma faute

voir fichier

Krx2006-2.xlsx

Merci

Pourquoi lorsque je rentre dans la formule les signes accolade s'effacent et de surcroit la formule n'est plus bonne ?

Merci de ton aide

[quote=Krx2006 post_id=811460 time=1573550401 user_id=66122]

Ok Sorry, ma faute

voir fichier

Krx2006-2.xlsx

Pourquoi lorsque je rentre dans la formule les signes paragraphe s'efface et de surcroit la formule n'est plus bonne ?

Merci de ton aide

c'est une formule matricielle à valider avec Ctrl+Maj+Entrée

D'accord, je ne connaissait pas, je vais voir de quoi ça parle.

En tout cas merci car ta solution comme celle de ThauThème et i20100 sont parfaites.

merci pour ce retour et bonne continuation,

ps/ s.v.p. n'oublie pas de marquer la question comme étant résolu.

resolu 1
Rechercher des sujets similaires à "test alphanumerique"