Fusionner deux tableaux

Bonjour j'essaie de fusionner deux tableaux provenant de deux feuilles de calcul différentes sachant que je veux fusionner les colonnes B à D du premier tableau avec celle de A à D du deuxième tableau. De plus, le contenu des tableaux varient en fonction d'extraction donc mes deux tableaux contiennent le même nombre de lignes mais ce nombre peut varier en fonction de l'extraction.

J'ai essayé de trouver un code pour réaliser cette tâche mais j'ai une erreur sur la ligne Set table2 = .Range("A2:D") "la méthode range de l'objet Worksheet" a échoué.

Sub MergeTables()
Dim table1 As Range
Dim table2 As Range
Dim mergedTable As Range

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Feuil1")
Dim w As Worksheet
Set w = ThisWorkbook.Worksheets("Feuil4")

'trouver la dernière ligne nn vide dans la colonne B'
Dim lastRowTable1 As Long

With ws
     lastRowTable1 = .Cells(.Rows.Count, "B").End(xlUp).Row
     Set table1 = .Range("B2:D" & lastRowTable1)
End With

'sélection de la plage du tableau 2'
Dim lastRowTable2 As Long

'trouver la dernière ligne dans la colonne A'
With w
    lastRowTable2 = .Cells(.Rows.Count, "A").End(xlUp).Row
    Set table2 = .Range("A2:D")
End With

'fusionner les tableaux dans une plage de résultat'
Dim wss As Worksheet
Set wss = ThisWorkbook.Worksheets("Synthèse")

'copier les données du premier tableau dans la la feuille de calcul synthèse '
table1.Copy Destination:=wss.Range("A14")

'copier les données du deuxième tableau dans la feuille de calcul synthèse'
table2.Copy Destination:=wss.Range("A" & table1.RowsCount + 1)

End Sub

Merci de votre aide

Hello,

Un fichier exemple serait le bienvenu,

Egalement connais tu PowerQuery ? En quelques clics cela te permet de fusionner tes tableaux. pas besoin de code et maintenable beaucoup plus facilement

@+

Désolé pour la réponse tardive ! Non je ne connais pas PowerQuery, comment faut-il faire ?

Cependant la fusion de ces tableaux s'inscrit dans un code précédent qui me permet d'automatiser la création d'un suivi client. Ainsi, je cherche à obtenir la fusion de tableaux qui se fassent automatiquement en un seul clic à la suite de mes extractions qui vont impliquer que le nombre de lignes des deux tableaux fusionnés puissent varier. Est-il possible de le faire de cette manière sur PowerQuery sans avoir à resélectionner à chaque extraction les tableaux à fusionner ?

Merci beaucoup,

Carla

Hello,

Yes tout a fait, tu peux te connecter à tout et n’importe quoi comme source de données.

Tu vas pouvoir compiler et faire tous tes traitements bien plus simplement.

Il faut juste réadapter tes traitements VBA dans PowerQuery et le tour est joué :)

Si tu mets des exemples de tes sources ainsi que tes fichiers les gens sur ce forum se feront un plaisir de regarder.

Bonne soirée ! ;)

@+

Bonjour à tous,

J'ai essayé de trouver un code pour réaliser cette tâche mais j'ai une erreur sur la ligne Set table2 = .Range("A2:D") "la méthode range de l'objet Worksheet" a échoué.

Un petit oubli ....peut-être...?

Set table2 = .Range("A2:D" & lastRowTable2)

Cordialement,

En plus de l'oubli, vérifier qu'il ne s'agit pas de A1 au lieu de A14.

Option Explicit

Sub MergeTables()
    Dim table1 As Range
    Dim table2 As Range
    Dim mergedTable As Range

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Feuil1")
    Dim w As Worksheet
    Set w = ThisWorkbook.Worksheets("Feuil4")

    'trouver la dernière ligne nn vide dans la colonne B'
    Dim lastRowTable1 As Long

    With ws
         lastRowTable1 = .Cells(.Rows.Count, "B").End(xlUp).Row
         Set table1 = .Range("B2:D" & lastRowTable1)
    End With

    'sélection de la plage du tableau 2'
    Dim lastRowTable2 As Long

    'trouver la dernière ligne dans la colonne A'
    With w
        lastRowTable2 = .Cells(.Rows.Count, "A").End(xlUp).Row
        Set table2 = .Range("A2:D" & lastRowTable2)
    End With

    'fusionner les tableaux dans une plage de résultat'
    Dim wss As Worksheet
    Set wss = ThisWorkbook.Worksheets("Synthèse")

    wss.Select
    'copier les données du premier tableau dans la la feuille de calcul synthèse '
    table1.Copy Destination:=wss.Range("A1")

    'copier les données du deuxième tableau dans la feuille de calcul synthèse'
    table2.Copy Destination:=wss.Range("A" & lastRowTable1 + 1)
End Sub

Bonjour,

Voici un fichier exemple j'ai un peu changé le code car en faite je voulais le tableau1 là ou je voulais mettre le tableau2 auparavant.

Le tableau2 dépend d'extractions et le tableau1 de données inscrites au fur et à mesure c'est pour ça que je ne connais pas les dimensions exactes de mon tableau d'arrivée. De plus, j'ai corrigée aussi le tableau2 qui commence à la troisième ligne car la deuxième est toujours vide.

Et comme j'ai des données dans le fichier synthèse aux cellules A1:A10 je ne veux pas que mon nouveau tableau les écrase d'où le A14 mais peut être que mon intention est mal traduite en code.

Il semble d'y avoir des problèmes avec l'utilisation de range. Novice sur VBA je teste mais j'écris peut être n'importe quoi merci encore de votre compréhension !

Merci encore pour toutes vos recommandations,

12exemplefusion.xlsm (22.87 Ko)

Carla

up

Hello,

Je ne comprends pas la clef qui relie les deux tableaux ...

@+

On s'y perd. Le plus simple aurait été de fournir un fichier avec la feuille de synthèse remplie comme vous le voudriez.

Est-ce que c'est ça que vous voulez obtenir (les couleurs en moins) ?

fusion
Rechercher des sujets similaires à "fusionner deux tableaux"