Faire appel à un autre classeur et supprimer les doublons

Bonjour à tous,

Petite explication de ma tentative de code

J'ai un fichier excel sur lequel j'utilise des données d'un autre fichier excel qui est mis à jour régulièrement par quelqu'un d'autre.

Ainsi je souhaite récupérer les données de ce fichier (colonnes A à F du fichier d'origine) et les copier/coller en concatenant les colonnes A à E sur une colonne qui represente la "designation du document" (A par exemple) et la colonne F en B qui représente la "révision du document"

Aussi la personne qui traite les données depuis sont fichier excel rajoute des lignes de document avec des "revisions" différentes, je souhaite conserver seulement la plus récente donc avec l'indice de révision le plus élevé

Avec ce code, je procède en 3 étapes, j'importe colonne par colonne, je concatène, je supprime les doublons et je garde la plus grande révision et enfin je supprime les colonnes inutiles.

Seulement d'une part le fichier est trop lourd je souhaiterai faire toutes les opérations en même temps sans avoir à supprimer les colonnes inutiles (puisqu'il n'y en aurait pas). Et lorsque j'importe les valeurs du fichier d'origine les 0 de gauches sont supprimés hors ils sont important pour la "désignation du document"

Aussi le classeur d'origine ne souvre pas tout seul (l'explorateur windows s'ouvre et je selectionne le fichier)

Ci-dessous le "code"

Merci d'avance les petits génies

Option base 1
Sub COPIEDONNEES()
Dim NomFichierEntree
Dim Sortie As Workbook
Dim Entree As Workbook
Dim FeuilleOrigine As Worksheet
Dim FeuilleDestination As Worksheet
Dim cell As Range, derlig As Long
Dim i As Long

    Set Sortie = ThisWorkbook
    'Choisir fichier
    NomFichierEntree = Application.GetOpenFilename("Fichier Excel (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm")
    ' On verifie que l'on a selectionné un nom de classeur
    If NomFichierEntree <> False Then
        ' On ouvre le classeur
        Set Entree = Workbooks.Open("C:\Users\ndjemel\Documents\NM 101503120020001_A.xls")

        'Référence feuille origine des données à copier
        Set FeuilleOrigine = Entree.Sheets("Cat.  métho. GL1943")

        'Référence la feuille de destination des cellules copiées
        Set FeuilleDestination = Sortie.Sheets("Feuil1")

        ' On copie les cellules de la feuille désirée vers la feuille de sortie
        FeuilleDestination.Range("C9:C" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value = FeuilleOrigine.Range("A9:A" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value
        FeuilleDestination.Range("D9:D" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value = FeuilleOrigine.Range("B9:B" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value
        FeuilleDestination.Range("E9:E" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value = FeuilleOrigine.Range("C9:C" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value
        FeuilleDestination.Range("F9:F" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value = FeuilleOrigine.Range("D9:D" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value
        FeuilleDestination.Range("G9:G" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value = FeuilleOrigine.Range("E9:E" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value
        FeuilleDestination.Range("B9:B" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value = FeuilleOrigine.Range("F9:F" & FeuilleOrigine.Range("A65536").End(xlUp).Row).Value
        Entree.Close

    ' On concatene les cellules
    derlig = Split(Worksheets("Feuil1").UsedRange.Address, "$")(4)

    For Each cell In Range("A1:A" & derlig)
            cell = ""
            Cells(cell.Row, 1) = Cells(cell.Row, 3) & Cells(cell.Row, 4) & Cells(cell.Row, 5) & Cells(cell.Row, 6) & Cells(cell.Row, 7)
            Cells(cell.Row, 1) = RTrim(Cells(cell.Row, 1))
    Next
    ' On supprime les doublons et on conserve la plus grand revision
    With Feuil1
        For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
            If .Cells(i, 1) = .Cells(i + 1, 1) And .Cells(i, 1) <> "" Then
                If .Cells(i, 2) > .Cells(i + 1, 2) Then
                    .Cells(i + 1, 1).EntireRow.Delete
                    i = i - 1
                Else
                    .Cells(i, 1).EntireRow.Delete
                    i = i - 1
                End If
            End If
        Next i
    Range("C:G").Delete Shift:=xlToLeft
    End With

        End If
        End Sub
        
Rechercher des sujets similaires à "appel classeur supprimer doublons"