Option Explicit
Dim f As Worksheet, dico1, dico2, tablo, tablor()
Dim i&, k&, flag&
Sub comparer()
'ajoute la feuille RECAP à la fin du Classeur'
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Recap"
Sheets("Recap").Range("A1") = "CFIN"
Sheets("Recap").Range("B1") = "BBG"
Sheets("Recap").Range("C1") = "En + RF"
Sheets("Recap").Range("D1") = "En - RF"
Worksheets("Recap").Activate
Set dico1 = CreateObject("Scripting.Dictionary")
Set dico2 = CreateObject("Scripting.Dictionary")
k = 0
For Each f In Worksheets
If f.Name <> "Recap" Then
tablo = f.Range("A1").CurrentRegion
For i = 2 To UBound(tablo, 1)
dico1(tablo(i, 3)) = tablo(i, 3)
dico2(tablo(i, 4)) = tablo(i, 4)
Next i
For i = 2 To UBound(tablo, 1)
flag = 0
If Not dico2.exists(tablo(i, 3)) And tablo(i, 3) <> "" Then
ReDim Preserve tablor(1 To 4, 1 To k + 1)
tablor(1, k + 1) = Split(f.Name, "-")(0)
tablor(2, k + 1) = Split(f.Name, "-")(1)
tablor(3, k + 1) = dico1(tablo(i, 3))
flag = 1
End If
If Not dico1.exists(tablo(i, 4)) And tablo(i, 4) <> "" Then
ReDim Preserve tablor(1 To 4, 1 To k + 1)
tablor(1, k + 1) = Split(f.Name, "-")(0)
tablor(2, k + 1) = Split(f.Name, "-")(1)
tablor(4, k + 1) = dico2(tablo(i, 4))
flag = 1
End If
If flag = 1 Then k = k + 1
Next i
End If
dico1.RemoveAll
dico2.RemoveAll
Next f
Sheets("RECAP").Range("A1").CurrentRegion.Offset(1, 0).ClearContents
Sheets("RECAP").Range("A2").Resize(UBound(tablor, 2), 4) = Application.Transpose(tablor)
'debug.Print variable'
End Sub