Option Explicit
Sub MàJ()
Dim TSrc(), C As Long, DicTitSrc As New Dictionary, TMvt(), TRésu(), Voy As SsGr, L As Long, Détail, DétMvt(), DétDst(), Cas
TSrc = Feuil2.[A1:I1].Value
For C = 1 To 9: DicTitSrc(TSrc(1, C)) = C: Next C
TSrc = ColUti(Feuil2.[A2:M2]).Value
TTit = Feuil1.[A1:M1].Value
ReDim TMvt(1 To UBound(TSrc, 1), 1 To 13)
For C = 1 To 13
If DicTitSrc.Exists(TTit(1, C)) Then GarnirColonne TMvt, C, TSrc, DicTitSrc(TTit(1, C))
Next C
ReDim TRésu(1 To 5000, 1 To 13)
For Each Voy In Gigogne(TableUnique(Feuil1.[A2:M2], TMvt), 1)
L = L + 1: Cas = 0
For Each Détail In Voy.Co
If Détail(0) = 0 Then DétDst = Détail: Cas = 1 Else DétMvt = Détail: Cas = Cas Or 2
Next Détail
Select Case Cas
Case 1: ' N'existe qu'en Dst
For C = 1 To 13: TRésu(L, C) = DétDst(C): Next C
TRésu(L, 6) = Empty: TRésu(L, 8) = Empty: TRésu(L, 11) = Empty: TRésu(L, 13) = Empty
Case 2: ' N'existe qu'en Mvt
For C = 1 To 13: TRésu(L, C) = DétMvt(C): Next C
Case Else: 'Existe des deux cotés
For C = 1 To 13: TRésu(L, C) = DétMvt(C): Next C
If DétMvt(5) <> DétDst(5) Then TRésu(L, 6) = DétDst(5)
If DétMvt(7) <> DétDst(7) Then TRésu(L, 8) = DétDst(7)
If DétMvt(10) <> DétDst(10) Then TRésu(L, 11) = DétDst(10)
If DétMvt(12) <> DétDst(12) Then TRésu(L, 13) = DétDst(12)
End Select: Next Voy
Feuil3.[A10].Resize(5000, 13).Value = TRésu ' (emplacement provisoire, en définitive Feui1.[A2])
End Sub