Bonjour,
Une fonction analogue à celle proposée par Jean-Eric... qui a été un peu vite car le modèle "???###" va renvoyer VRAI pour BGR582, mais aussi pour : 852169, 8RF525, dfg548, etc. Il faut donc rectifier le modèle pour qu'il n'accepte que des lettres et majuscules sur les 3 premières positions.
Function ESTABC123(pl As Range)
Dim résult(), i%
Application.Volatile
ReDim résult(1 To pl.Rows.Count)
For i = 1 To pl.Rows.Count
résult(i) = pl.Cells(i, 1).Value Like "[A-Z][A-Z][A-Z]###"
Next i
ESTABC123 = Application.Transpose(résult)
End Function
Un peu étoffée car réduite à sa plus simple expression elle ne se prêtait pas à une utilisation matricielle... Cependant cadrée sur l'utilisation prévue (mais pourra être développpée si besoin).
(NB- Réclame une plage comme argument, si on lui fournit une plage multicolonne ne prendra en compte que la 1re colonne)
La fonction peut ainsi être utilisée en combinaison avec SOMMEPROD :
=SOMMEPROD(ESTABC123(Feuil1!$D$1:$D$71)*(Feuil1!$A$1:$A$71=A2))
Au passage formule pour constituer liste de noms uniques à partir de la liste initiale :
=SIERREUR(INDEX(Feuil1!A:A;PETITE.VALEUR(SI(NB.SI($A$1:A1;Feuil1!$A$1:$A$71)=0;LIGNE(Feuil1!$A$1:$A$71);9^9);1));"")