Maintenant c'est à mon tour de t’embêter
Ta formule ne fonctionnerai pas dans le cas ou on rentre "IK03 / B003" par exemple car il va vérifier l'existence de "IK03 / B003" et non IK03 puis B003. Mais là c'est vraiment compliqué ...
je me suis heurté au même problème avec mon prototype.
=SI(OU(NB.SI(A:A;"* " & A4 &"*")>1;NB.SI(A:A;"*" & A4 &" *")>1;NB.SI(A:A;"*" & A4 &"*")>1);"Oui";"")
Dans ce cas je ne vois qu'une solution, une fonction personnalisée:
Code de la fonction utilisée:
Function estDoublon(valeur_vérifiée As Range, plage_vérification As Range) As Boolean
Dim tableau As Variant, tabSplit1 As Variant, tabSplit2 As Variant
Dim ligExclue As Long
Application.Volatile
'vérifications
If valeur_vérifiée.Count > 1 Then Exit Function
If plage_vérification.Areas.Count > 1 Then Exit Function
'initialisations
tabSplit1 = Split(valeur_vérifiée, "/")
tableau = plage_vérification
If Not Intersect(valeur_vérifiée, plage_vérification) Is Nothing Then
ligExclue = Intersect(valeur_vérifiée, plage_vérification).Row - plage_vérification.Row + 1
End If
'parcours de la plage vérification par lignes et colonnes
For i = LBound(tableau, 1) To UBound(tableau, 1)
If Not i = ligExclue Then
For j = LBound(tableau, 2) To UBound(tableau, 2)
'séparation des codes
tabSplit2 = Split(tableau(i, j), "/")
'parcours des tableaux splités
For h = LBound(tabSplit1, 1) To UBound(tabSplit1, 1)
For x = LBound(tabSplit2, 1) To UBound(tabSplit2, 1)
If Trim(tabSplit1(h)) = Trim(tabSplit2(x)) Then
estDoublon = True
Exit Function
End If
Next x
Next h
Next j
End If
Next i
End Function