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