Merci beaucoupSalut, voir en pj le fichier tri.xlsb, lancer la macro Test.
A toi de poursuivre en l'adaptant à ton contexte.
sinon [F1] sur RemoveDuplicates
Hello kiki29Si tu avais regardé la copie d'écran ou le fichier tu aurais vu qu'elles avaient été regroupées.
Hello pierrejeanBonjour KTM
A tester
Private Sub CommandButton1_Click()
Dim P As Range, Q As Range, Prc&, Qrc&, R As Range, S As Range
Set P = [A1].CurrentRegion: Prc = P.Rows.Count - 1
Set Q = [G1].CurrentRegion: Qrc = Q.Rows.Count - 1
If Prc * Qrc = 0 Then Exit Sub 'si un tableau est vide
Set P = P.Offset(1).Resize(Prc)
Set Q = Q.Offset(1).Resize(Qrc)
Application.ScreenUpdating = False
P.Copy Q(Qrc + 1, 1): Set R = Q(Qrc + 1, 1).Resize(Prc, P.Columns.Count)
Q.Copy P(Prc + 1, 1): Set S = P(Prc + 1, 1).Resize(Qrc, Q.Columns.Count)
P.EntireColumn.RemoveDuplicates Array(1, 3, 4)
Q.EntireColumn.RemoveDuplicates Array(1, 3, 4)
R.Cut P(Prc + Qrc + 1, 1): S.Cut Q(Prc + 1, 1)
P.Resize(Prc + Qrc).Delete xlUp: Q.Delete xlUp
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Hello job75Bonjour KTM, kiki29, Jacky67, Pierre,
Voyez le fichier joint et la macro du bouton :
Elle est très rapide car il n'y a pas de boucle.VB:Private Sub CommandButton1_Click() Dim P As Range, Q As Range, Prc&, Qrc&, R As Range, S As Range Set P = [A1].CurrentRegion: Prc = P.Rows.Count - 1 Set Q = [G1].CurrentRegion: Qrc = Q.Rows.Count - 1 If Prc * Qrc = 0 Then Exit Sub 'si un tableau est vide Set P = P.Offset(1).Resize(Prc) Set Q = Q.Offset(1).Resize(Qrc) Application.ScreenUpdating = False P.Copy Q(Qrc + 1, 1): Set R = Q(Qrc + 1, 1).Resize(Prc, P.Columns.Count) Q.Copy P(Prc + 1, 1): Set S = P(Prc + 1, 1).Resize(Qrc, Q.Columns.Count) P.EntireColumn.RemoveDuplicates Array(1, 3, 4) Q.EntireColumn.RemoveDuplicates Array(1, 3, 4) R.Cut P(Prc + Qrc + 1, 1): S.Cut Q(Prc + 1, 1) P.Resize(Prc + Qrc).Delete xlUp: Q.Delete xlUp With UsedRange: End With 'actualise la barre de défilement verticale End Sub
A+
Un bémol cependant pour ma solution : dans chacun des tableaux il ne faut pas de doublon.
Tout à fait, c'est ce que je viens de faire dans ce fichier (2).Qu'à cela ne tienne, dans ce cas
Il suffira de faire deux "RemoveDuplicates" en début de macro
Merci à TousTout à fait, c'est ce que je viens de faire dans ce fichier (2).