Dim d1 As Object, d2 As Object 'mémorise les variables
Function Test1(x$, y$) As Boolean
If x = "" Or y = "" Then Exit Function
If d1 Is Nothing Then Init
If d1(x & y) > 1 Then Test1 = True
End Function
Function Test2(x$, y$) As Boolean
If x = "" Or y = "" Then Exit Function
If d2 Is Nothing Then Init
If d2(x & y) > 1 Then Test2 = True
End Function
Sub Init()
Dim Journal As Range, J, D, C, i&, x$, y$, z$
Set Journal = Range("B1:B" & Application.Match("zzz", [B:B]) + 1) 'au moins 2 cellules
J = Journal: D = Journal.Offset(, 4): C = Journal.Offset(, 5)
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(J)
x = J(i, 1): y = D(i, 1): z = C(i, 1)
If x <> "" And y <> "" Then d1(x & y) = d1(x & y) + 1
If x <> "" And z <> "" Then d2(x & z) = d2(x & z) + 1
Next
End Sub