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

  • Initiateur de la discussion Initiateur de la discussion CoCo26
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
à 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?
 
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
 
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

Dernière édition:
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

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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
26
Affichages
1 K
Retour