Comparer 2 TCD en créant un 3 ème

0

lien fichier


Bonjour,

J’ai deux tableaux TCD que je cherche à comparer (ds exemple tableaux qui ne sont pas des tcd)

je cherche à additionner dans un autre tcd les quantités si ligne identique pour chaque tableau

Dans tableau 1 , j’ai deux données pour les articles et 1 base

Dans tableau 2, la correspondance au niveau de l’article peut soit l’article A ou l’article B du tableau 1

Pouvez vous m’aider ? j’ai mis le rendu souhaité pour être plus claire

merci d’avance et bon week end

NCEhxUt0JF4
    Posté le 30 mars, 08:24
    par lilie91
    Répondre
    0

    Bonjour lilie,

    j'ai fait ton exo de façon classique, sans TCD ; lien fichier :

    https://www.cjoint.com/c/NCEqCV3ZDW0

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    pour la plage K5:O8, note bien que c'est entièrement vide ;
    fais Ctrl e ➯ travail effectué ; vérifie tous les résultats.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    les anciens résultats sont effacés automatiquement par la
    macro pour éviter toute interférence.

    fais Alt F11 pour voir le code VBA ; puis fais de nouveau
    Alt F11 pour revenir sur Excel.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    code VBA de Module1 (28 lignes) :

    Option Explicit

    Sub Essai()
      Dim c As Range, m&, a$, b$, e$, f$, q%, r%, d1&, d2&, d3&, i&, j&, k As Byte
      m = Rows.Count: Application.ScreenUpdating = 0
      d3 = Cells(m, 12).End(3).Row: If d3 > 4 Then Range("K5:O" & d3) = Empty
      d1 = Cells(m, 3).End(3).Row: If d1 = 4 Then Exit Sub
      d2 = Cells(m, 7).End(3).Row: If d2 = 4 Then Exit Sub
      For i = 5 To d1
        a = Cells(i, 3): q = Cells(i, 4): Cells(i, 12) = a: Cells(i, 13) = q
        Set c = Range("G5:G" & d2).Find(a, , -4163, 1, 1)
        If c Is Nothing Then
          Cells(i, 11) = Cells(i, 1): Cells(i, 14) = 0: Cells(i, 15) = "faux"
        Else
          For j = 5 To d2
            b = Cells(j, 7): f = Cells(j, 6)
            For k = 1 To 2
              e = Cells(i, k)
              If a = b And f = e Then
                r = Cells(j, 8): Cells(i, 11) = f: Cells(i, 14) = r
                Cells(i, 15) = IIf(q = r, "ok", "faux"): Exit For
              End If
            Next k
          Next j
        End If
      Next i
    End Sub

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    j'ai vu ICI que JHA a fait ton exo avec PowerQuery.  ;)

    rhodo

    rhodo Posté le 30 mars, 17:33
    par rhodo

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :