Copier coller ligne d'un tableau avec condition

Bonjour,

J'ai deux feuilles Source et Destination. Dans Source, il y a la colonne Code Client, Port et montant et date. Le duo Code Client et Port est unique pour chaque commande. Depuis hier j'essaye de comparer le duo Code client et Port de Source avec le duo Code Client et port de Destination. J'aimerais que lorsqu'il ne trouve pas le duo Code Client et Port dans Destination, il colle la ligne de Source à la fin du tableau dans Destination. Il faut absolument que j'insère ces lignes en fin de tab parce qu'il y aura des ajouts fait manuellement dans mon tab.
J'ai essayé plein de choses dont :

10cmd.xlsm (11.45 Ko)
test2

et

test1

mais ça ne fonctionne pas et je bloque énormément.

Alors est ce qu'il y aurait un moyen de comparer les deux colonnes A et B de Source avec les deux colonnes A et B de Destination et s'il y a aucune correspondance, le mettre en fin de tableau de Destination s'il vous plait ?

Bonjour,

Bon je préviens je suis nul en array et je n'arrive pas à le transposer une fois les data chargées, si quelqu'un peu m'indiquer comment le faire au lieu de passer par la deuxième boucle je suis preneur mais en attendant :

Sub COMPAR()
Dim TEMP(), L%, I%
Dim WS_D As Object, WS_S As Object
Set WS_D = Worksheets("DESTINATION")
Set WS_S = Worksheets("SOURCE")
L = 2
With WS_D.ListObjects("Tableau1")
    ReDim Preserve TEMP(0)
    Do While WS_S.Cells(L, 1) <> ""
        If Application.WorksheetFunction.CountIfs(.ListColumns(1).DataBodyRange, WS_S.Cells(L, 1), .ListColumns(2).DataBodyRange, WS_S.Cells(L, 2)) = 0 Then
            ReDim Preserve TEMP(UBound(TEMP) + 1)
            TEMP(UBound(TEMP)) = WS_S.Range(WS_S.Cells(L, 1), WS_S.Cells(L, 4))
        End If
    L = L + 1
    Loop
    For I = 1 To UBound(TEMP)
        WS_D.Cells(.ListRows.Count + 2, 1).Resize(, 4) = TEMP(I)
    Next I
End With
End Sub

Sinon en semi manuel : MEFC > Filtrage par couleur > Copie les lignes > Les colles à la suite dans le tableau de destination.

Cdlt,

Merci beaucoup ça fonctionne très bien !!! En tout cas je suis plus nulle que toi parce que je cherche comment faire depuis hier et impossible de trouver un moyen

Pourrais tu m'expliquer ton code si tu as le temps s'il te plaît ?

Cdlt,

Bonjour,

Avec les commentaires :

ub COMPAR()
Dim TEMP(), L%, I%
Dim WS_D As Object, WS_S As Object
Set WS_D = Worksheets("DESTINATION") 'Defini feuille destination
Set WS_S = Worksheets("SOURCE") 'Défini feuille source
L = 2 'initie à la ligne 2
With WS_D.ListObjects("Tableau1") 'avec le tableau 1 de la feuille destination
    ReDim Preserve TEMP(0) 'initialise tableau temporaire à 0
    Do While WS_S.Cells(L, 1) <> "" 'boucle jusqu'à la dernière ligne vide de feuille source
        If Application.WorksheetFunction.CountIfs(.ListColumns(1).DataBodyRange, WS_S.Cells(L, 1), .ListColumns(2).DataBodyRange, WS_S.Cells(L, 2)) = 0 Then 'si NB.SI.ENS (code client et port de la cellule à ligne L de la feuille source, tableau 1 feuille destination) = 0 (donc non trouvé)
            ReDim Preserve TEMP(UBound(TEMP) + 1) 'J'augmente mon tableau temporaire de 1
            TEMP(UBound(TEMP)) = WS_S.Range(WS_S.Cells(L, 1), WS_S.Cells(L, 4)) 'j'ajoute sur cette nouvelle ligne de mon tableau temporaire ma ligne source
        End If
    L = L + 1 'Passage L suivant
    Loop
    For I = 1 To UBound(TEMP) 'pour chaque ligne de mon tableau temporaire
        WS_D.Cells(.ListRows.Count + 2, 1).Resize(, 4) = TEMP(I) 'on met les valeurs à la suite du tableau de destination
    Next I
End With
End Sub

Je pense qu'on pourrait modifier le code pour avoir uen valeur dans la dimension 0 du tableau temporaire, et supprimer la dernière boucle avec une méthode .transpose mais je n'y arrive pas avec les tableaux multidimensionnels.

Si quelqu'un passe par là et sait le faire ...

Cdlt,

Bonjour,

d'accord, merci pour les commentaires sur le code et pour l'aide.

Cdlt,

Bonjour,

d'accord, merci pour les commentaires sur le code et pour l'aide.

Cdlt,

Rechercher des sujets similaires à "copier coller ligne tableau condition"