Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Fusionner deux tables

HABLOT

XLDnaute Nouveau
Bonjour à tous,


Veuillez tout d'abord m'excuser par avance si je ne suis pas 100% clair pour des experts. Je suis "quasi" débutant.

J’ai les données des deux premières feuilles d'un classeur que je dois combiner dans une troisième comme dans le fichier ci dessous.

Pourriez-vous m’aider à resoudre ce casse-tête qui me bloque depuis des jours ?

Merci d'avance,

Ghislain
 

Pièces jointes

  • Question.xlsx
    17.5 KB · Affichages: 89

HABLOT

XLDnaute Nouveau
Merci beaucoup Chris. Ca marche bien et j'ai réussi à l adapter sur mon document de travail.
Je te suis vraiment reconnaissant.
Est ce que tu pourrais m'en dire plus sur la fonction "derlg" que tu as utilisé ?
 

klin89

XLDnaute Accro
Bonsoir Chris401, HABLOT

Une autre façon de procéder :
VB:
Option Explicit
Sub test()
Dim a, w(), i As Long, j As Long, dico As Object, n As Long, e, x, y
    Application.ScreenUpdating = False
    Set dico = CreateObject("Scripting.Dictionary")
    dico.CompareMode = 1
    For Each e In Array("Sheet1", "Sheet2")
        a = Sheets(e).Range("a1").CurrentRegion
        For i = 2 To UBound(a, 1)
            If Not dico.exists(a(i, 1)) Then
                ReDim w(1 To UBound(a, 2), 1 To 1)
            Else
                w = dico(a(i, 1))
                ReDim Preserve w(1 To UBound(w, 1), 1 To UBound(w, 2) + 1)
            End If
            For j = 1 To UBound(a, 2)
                w(j, UBound(w, 2)) = a(i, j)
            Next
            dico(a(i, 1)) = w
        Next
    Next
    x = dico.keys: y = dico.items
    With Sheets("Sheet3").Range("a1")
        .CurrentRegion.Clear
        For i = 0 To UBound(x)
            With .Offset(n).Resize(UBound(y(i), 2), UBound(y(i), 1))
                .Value = Application.Transpose(y(i))
                .Rows(1).Interior.ColorIndex = 44
                If .Rows.Count > 1 Then
                    .Offset(1).Resize(.Rows.Count - 1).Interior.ColorIndex = 43
                End If
            End With
            n = n + UBound(y(i), 2)
        Next
    End With
    Application.ScreenUpdating = True
End Sub
klin89
 
Dernière édition:

Discussions similaires

Réponses
8
Affichages
886
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…