Bonjour Dranreb,
Bonjour le fil et le forum,
J'utilise ta macro depuis un bon moment. Elle est très pratique pour comparer des bases d'une année à une autre et surtout en intégrant une MeFC pour bien indiquer les cases modifiées.
Je compare 2016 à 2017, 2015 à 2017, etc.
Je me permets de revenir vers toi car je n'ai pas réussi à :
1/ Rajouter en col 46 le nom de la feuille de la ligne concernée
2/ Je souhaite comparer 5 années avec la dernière année : de 2012 à 2016 avec 2017 ?
Merci d'avance pour ton aide.
KIM
PS : Ci-dessous la macro utilisée :
Sub Comparaison1()
Dim Te(), Le&, Ts(), Ls&, Code As SsGroup, Détail, C&, VLgNou(), VlgAnc(), Différent As Boolean, Cas As Byte
CréerTableUnique Te, Array(PlgUti(Feuil1.[A2]), PlgUti(Feuil2.[A2]))
ReDim Ts(1 To UBound(Te, 1), 1 To 45)
For Each Code In GroupOrg(Te, 3)
Cas = 0
For Each Détail In Code.Contenu
If Détail(0) = 0 Then
VlgAnc = Détail: Cas = 1
Else
VLgNou = Détail: Cas = Cas + 2
End If: Next Détail
Select Case Cas
Case 1: Ls = Ls + 1
For C = 1 To UBound(VlgAnc): Ts(Ls, C) = VlgAnc(C): Next C
Ts(Ls, 45) = "Supprimé"
Case 2: Ls = Ls + 1
For C = 1 To UBound(VLgNou): Ts(Ls, C) = VLgNou(C): Next C
Ts(Ls, 45) = "Ajouté"
Case Else:
For C = 1 To UBound(VLgNou)
Différent = VLgNou(C) <> VlgAnc(C): If Différent Then Exit For
Next C
If Différent Then
Ls = Ls + 1
For C = 1 To UBound(VlgAnc): Ts(Ls, C) = VlgAnc(C): Next C
Ts(Ls, 45) = "(Original)"
Ls = Ls + 1
For C = 1 To UBound(VLgNou): Ts(Ls, C) = VLgNou(C): Next C
Ts(Ls, 45) = "Modifié"
End If
End Select
Next Code
Feuil3.Rows(2).Resize(1000).ClearContents
Feuil3.[A2].Resize(Ls, UBound(Ts, 2)).Value = Ts
End Sub