XL 2019 Concaténer des lignes en doublon Avec Visual BASIC

CoCo26

XLDnaute Nouveau
Bonjour à tous,

Je suis très heureux de me joindre à vous aujourd'hui même si je me serrai bien passé de la difficulté qui m'a poussé à rejoindre la communauté Excel Downloads. Excel est un outil puissant, et j'ai hâte de découvrir de nouvelles façons de l'utiliser...

L'objectif est de fusionner les lignes en doublon selon un identifiant identique ( colonne F ) en gardant les informations d'un des deux colonnes selon une priorité de date (colonne B) !
les colonnes A => AE doivent provenir de la ligne la plus récente. (en vert)
les colonnes AF => BR doivent provenir de la ligne la plus vieille. (en vert)
En l'absence de doublon, on ne touche a rien de la ligne !!

je vous joint un .XLSM Exemple avec l’état Initial et l’état final.

Avoir un code prêt à l’emploi c'est bien, Mais j'aimerai surtout apprendre et consolider mes bases ( aussi petite soit-elle Mdr) avec ce projet.

j'ai hate de vous lire!
 

Pièces jointes

  • Essai 07032023.xlsm
    23.4 KB · Affichages: 7

CoCo26

XLDnaute Nouveau
VGendron, je n'arrive pas à faire fonctionner la macro, code erreur 438 :
"propriété ou méthode non gérée par cet objet"

Es-ce-que mes paramètres Excel peuvent impacter la réalisation de la macro ?

1678215609459.png

E
 

vgendron

XLDnaute Barbatruc
à priori.. produit non activé: tu ne pourrais meme pas ouvrir le fichier; ou ne pas pouvoir lancer la macro..
la.. elle est executée au moins sur quelques lignes.==>je ne pense pas que ce soit le pb

par contre.. peut etre as tu déplacé la plage de données par rapport à ton fichier exemple?
 

CoCo26

XLDnaute Nouveau
Oui effectivement, tu as un oeil de lynx !! j'ai essayé de le comprendre pour corriger l'erreur depuis le fichier de travail ...
Certaine Macro de mon fichier marche effectivement avec mon produit non activé.

Le fichier exemple ne marche pas mieux de mon coté ....🤔

1678216276197.png
 

job75

XLDnaute Barbatruc
Bonsoir CoCo26, vgendron,

Une solution simple est de traiter successivement le tableau de gauche et le tableau de droite :

- en les triant sur 2 colonnes

- en leur appliquant la méthode .RemoveDuplicates.

Voyez le fichier joint et la macro du bouton :
VB:
Private Sub CommandButton1_Click()
With Sheets("Résultat")
    .Cells.Delete 'RAZ
    Rows("1:" & Cells.SpecialCells(xlCellTypeLastCell).Row).Copy .[A1]
    .Columns("AF:AG").Insert 'insère 2 colonnes auxiliaires
    Union(.Columns("B"), .Columns("F")).Copy .Columns("AF")
    With .Range("A3:AE" & .Rows.Count) 'tableau de gauche
        .Sort .Columns(6), xlAscending, .Columns(2), , xlDescending, Header:=xlYes 'tri sur 2 colonnes
        .RemoveDuplicates 6, Header:=xlYes 'supprime les doublons en colonne F
    End With
    With .Range("AF3:BS" & .Rows.Count) 'tableau de droite
        .Sort .Columns(2), xlAscending, .Columns(1), , xlAscending, Header:=xlYes 'tri sur 2 colonnes
        .RemoveDuplicates 2, Header:=xlYes 'supprime les doublons en colonne AG
    End With
    .Columns("AF:AG").Delete 'supprime les 2 colonnes auxiliaires
    .Rows(.Cells(.Rows.Count, "F").End(xlUp).Row + 1 & ":" & .Rows.Count).Delete 'RAZ en dessous
    .Columns.AutoFit 'ajustement largeurs
    .Activate 'facultatif
End With
End Sub
Bonne nuit.
 

Pièces jointes

  • Essai 07032023(1).xlsm
    33.6 KB · Affichages: 3
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour CoCo26, le forum,

Dans ce fichier (2) je me suis occupé d'unifier les bordures :
VB:
Private Sub CommandButton1_Click()
Dim derlig&
derlig = Cells.SpecialCells(xlCellTypeLastCell).Row
With Sheets("Résultat")
    .Cells.Delete 'RAZ
    Rows("1:" & derlig).Copy .[A1]
    .Columns("AF:AG").Insert 'insère 2 colonnes auxiliaires
    Union(.Columns("B"), .Columns("F")).Copy .Columns("AF")
    With .Range("A3:AE" & derlig) 'tableau de gauche
        .Sort .Columns(6), xlAscending, .Columns(2), , xlDescending, Header:=xlYes 'tri sur 2 colonnes
        .RemoveDuplicates 6, Header:=xlYes 'supprime les doublons en colonne F
        .Borders.Weight = xlThin 'bordures
    End With
    With .Range("AF3:BS" & derlig) 'tableau de droite
        .Sort .Columns(2), xlAscending, .Columns(1), , xlAscending, Header:=xlYes 'tri sur 2 colonnes
        .RemoveDuplicates 2, Header:=xlYes 'supprime les doublons en colonne AG
        .Borders.Weight = xlThin 'bordures
    End With
    .Columns("AF:AG").Delete 'supprime les 2 colonnes auxiliaires
    .Rows(.Cells(.Rows.Count, "F").End(xlUp).Row + 1 & ":" & derlig).Delete 'RAZ en dessous
    .Columns.AutoFit 'ajustement largeurs
    .Activate 'facultatif
End With
End Sub
A+
 

Pièces jointes

  • Essai 07032023(2).xlsm
    34.2 KB · Affichages: 6

job75

XLDnaute Barbatruc
Pour tester mon fichier (2) j'ai effacé toutes les MFC et recopié les lignes 4:10 sur 21 000 lignes.

La macro s'exécute chez moi en 7 secondes dont :

- 5 secondes pour les copier-coller initiaux

- 2 secondes pour les tris et suppressions des doublons.
 

Discussions similaires

Réponses
26
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki