Fusion de 2 tableau

Bonjour,

je possède 2 gros fichiers Excel que je souhaiterais fusionner :

chaque fichier dispose 5 colonnes avec pour chaque ligne un identifiant "ID" et un numéro d'index "index"

Il peut exister de nombreuse fois le même ID ou numéro d'index mais il n'existe qu'une correspondance Index/ID pour chaque fichier (un fichier dispose de la version anglaise l'autre dans la version française

Je souhaiterais copier sur le tableur anglais les valeurs "Text" de la version française à coter des valeurs correspondantes

Par exemple sur le fichier version française pour l'ID et l'index suivant :

181113080824122772

Dans mon fichier anglais, je devrais retrouver :

181113080947870480

Mais je n'ai malheureusement pas les compétences Excel suffisantes pour faire quelque chose d'aussi compliqué

Merci pour votre aide

Bonjour,

Tu construis une feuille avec quelques valeurs du classeur "Français" et une feuille avec quelques valeurs du classeur "Anglais" qui représenteront les deux fichiers afin qu'on sache sur quelles colonnes et à partir de quelles lignes se trouvent les valeurs pour chaque classeur

Voila le fichier en pièce-jointe

Faire les adaptations nécessaires :

Sub Test()

    Dim Cl_FR As Workbook
    Dim Cl_AN As Workbook
    Dim Plg_FR As Range
    Dim Plg_AN As Range
    Dim CelFR As Range
    Dim CelAN As Range
    Dim Adr As String

    'les classeurs doivent être ouverts sinon, utiliser Open() avec le chemin complet !
    Set Cl_FR = Workbooks("Nom du classeur Français.xlsx")
    Set Cl_AN = Workbooks("Nom du classeur Anglais.xlsx")

    'adapter les noms des feuilles. Défini les plages sur les colonnes A à partir de A2
    With Cl_FR.Worksheets("francais"): Set Plg_FR = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
    With Cl_AN.Worksheets("anglais"): Set Plg_AN = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With

    'boucle sur la plage...
    For Each CelFR In Plg_FR

        'effectue la recherche
        Set CelAN = Plg_AN.Find(CelFR.Value, , xlValues, xlWhole)

        'si trouvé
        If Not CelAN Is Nothing Then

            Adr = CelAN.Address

            'boucle en vérifiant si il y a correspondance entre les colonnes A et C
            Do

                If CelAN.Offset(, 2).Value = CelFR.Offset(, 2).Value Then

                    CelAN.Offset(, 5).Value = CelFR.Offset(, 4).Value

                End If

                Set CelAN = Plg_AN.FindNext(CelAN)

            Loop While CelAN.Address <> Adr

        End If

    Next CelFR

End Sub

Bonjour à tous

Tu parles d'unicité du couple ID/Index mais ce n'est pas le cas...

Faisable aussi par PowerQuery intégré à 2016

Bonsoir et merci pour votre aide,

J'ai essayé le code, mais je ne sais pas si c'est dû à la quantité de données ou à une erreur de ma part, mais après quelques heures Excel passe en mode "ne réponds pas"

Bonjour à tous

Tu parles d'unicité du couple ID/Index mais ce n'est pas le cas...

Faisable aussi par PowerQuery intégré à 2016

Les effectivement valeurs mises dans le fichier exemple ne correspondent pas, mais cela ne concerne qu'une partie des données qui ne sont pas intéressantes pour moi.

Je serais aussi intéressé par une méthode via PowerQuery parce que je l'utilise pour convertir les CSV originaux

J'ai donc déposé les fichiers sur mon drive : https://drive.google.com/drive/folders/1eqUxTPirPdItxQ38kQ-F55wxQcl2Q13l?usp=sharing

si vous souhaitez, regarder

Merci.

Bonjour

Le fait qu'il n'y ait pas d'unicité crée un produit cartésien quand on croise les tables ce qui ne permet pas de faire correspondre correctement français et anglais...

J'ai vérifié si les deux langues contenaient le même nombre de lignes dans le même ordre mais ce n'est pas le cas...

Rechercher des sujets similaires à "fusion tableau"