Option Explicit
Function CS(CLEF As String)
'
' Fonction créée par ROGER2327 le 16 Brumaire CCXVII (6/11/2008)
'
'
If CLEF = "" Then CS = "": Exit Function
Dim ro, sa, fo
Dim r%, s%, f%, i%, j%, k%, n%, x1$, x2$, z$
ro = Range("RO") ' "RO"=Tables!$D$6:$H$10
sa = Range("SA") ' "SA"=Tables!$L$6:$V$16
fo = Range("FO") ' "FO"=Tables!$Z$6:$AG$13
On Error Resume Next
r = CInt(Mid$(CLEF, 1, 1))
s = CInt(InStr(1, "ABCDEFGHJKL", Mid$(CLEF, 2, 1)))
f = CInt(Mid$(CLEF, 3, 1))
On Error GoTo no
If CLEF = r & Mid$("ABCDEFGHJKL", s, 1) & f Then
For i = 1 To 5
If ro(i, r) = 1 Then
x1 = CStr(i)
For j = 1 To 11
If sa(j, s) = 1 Then
x2 = Mid$("ABCDEFGHJKL", j, 1)
For k = 1 To 8
If fo(k, f) = 1 Then
z = z & x1 & x2 & CStr(k) & ", "
n = n + 1
End If
Next k
End If
Next j
End If
Next i
End If
no:
Select Case n
Case 0: z = "La clef " & CLEF & " n'est compatible avec aucune serrure."
Case 1: z = "La clef " & CLEF & " est compatible avec la serrure " & Mid$(z, 1, Len(z) - 2) & "."
Case Else: z = "La clef " & CLEF & " est compatible avec les serrures : " & Mid$(z, 1, Len(z) - 2) & "."
End Select
CS = z
End Function