Sub toto()
Dim i&, j&, k&, l&, LDat&, Ctmp$
Dim Dat(), LstFl As New Dictionary, Fl, FFl As Worksheet
Dim NCpte&, Deb(), Cre(), LibD(), LibC()
Dat = Me.Range(Me.Cells(1, 6), Me.Cells(1, 1).End(xlDown)) 'Table de données
LDat = UBound(Dat)
For i = 2 To LDat
If Not LstFl.Exists(CStr(Dat(i, 1))) Then LstFl.Add CStr(Dat(i, 1)), 1
Next
For Each Fl In LstFl.Keys
On Error GoTo E
Set FFl = Worksheets(Fl)
On Error GoTo 0
With FFl.Range(FFl.Cells(5, 1), FFl.Cells(FFl.Rows.Count, 1).End(xlUp)) 'N° de compte
NCpte = .Count
LibD = .Offset(0, 1).Value 'Libellé Débit
LibC = .Offset(0, 4).Value 'Libellé Crédit
ReDim Deb(1 To NCpte, 0)
Cre = Deb
For i = 2 To LDat
If CStr(Dat(i, 1)) = Fl Then
Ctmp = Dat(i, 3)
For j = 1 To NCpte
If LibD(j, 1) = Ctmp Then
Deb(j, 0) = -Dat(i, 6)
ElseIf LibC(j, 1) = Ctmp Then
Cre(j, 0) = Dat(i, 6)
End If
Next
End If
Next
.Offset(0, 2).Value = Deb 'Débit
.Offset(0, 5).Value = Cre 'Crédit
End With
RE: Next
Exit Sub
E: 'Feuille manquante
Resume RE
End Sub