Fusionner 2 tableaux dans un 3ème

OK pas de problème.

Ca ce découpe en 3 étapes :

Mettre en feuille 3 colonne B :

1 - les références trouvées en feuillle1 (colonne N) qu'on ne trouve pas en feuille2 (colonne B), dont la quantité en feuille 1 est différente de 0 et uniquement si dans la feuille 1 la valeur de la cellule B est trouvée dans la colonne A de la feuille 2

2 - les références trouvées en feuille1 (colonne N) qu'on trouve aussi en feuille2 (colonne B) mais dont les quantités diffèrent (colonne Q en feuille1 et Colonne F en feuille2)

3 - Les ref qui existent dans feuille 2 (colonne B) mais pas dans feuille 1 (colonne N) et dont la quantité en feuille 2 est différente de 0

Est-ce un peu plus clair ?

Bonsoir,

à testeer

Sub fusiondesreferences()
'Ca ce découpe en 3 étapes :

'Mettre en feuille 3 colonne B :

'1 - les références trouvées en feuillle1 (colonne N) qu'on ne trouve pas en feuille2 (colonne B), dont la quantité en feuille 1 est différente de 0 et
'uniquement si dans la feuille 1 la valeur de la cellule B est trouvée dans la colonne A de la feuille 2

'2 - les références trouvées en feuille1 (colonne N) qu'on trouve aussi en feuille2 (colonne B) mais dont les quantités diffèrent (colonne Q en feuille1 et Colonne F en feuille2)

'3 - Les ref qui existent dans feuille 2 (colonne B) mais pas dans feuille 1 (colonne N) et dont la quantité en feuille 2 est différente de 0

' on ajoute une nouvelle feuille pour recevoir le résultat de la fusion des références
' wso feuille résultat
    Application.ScreenUpdating = False
    calcmethod = Application.Calculation
    Application.Calculation = xlCalculationManual
    Set wso = Worksheets("import")
    ' wsi1 première feuille
    Set wsi1 = Worksheets("sheet")
    ' dli1 dernière ligne de wsi1
    dli1 = wsi1.Range("N" & Rows.Count).End(xlUp).Row
    Set wsi2 = Worksheets("Prestashop")
    ' dli1 dernière ligne de wsi1
    dli2 = wsi2.Range("B" & Rows.Count).End(xlUp).Row
    'on passe en revue toutes les références de wsi1 la feuille "sheet" et on traite les cas 1 et 2
    dlo = 1
    For i = 2 To dli1
        Application.StatusBar = "Progress phase 1 " & Format(i / dli1, "0.00%")
        ' on prend les références de wsi1 qui ont une quantité <>0
        If wsi1.Range("Q" & i) <> 0 Then
            ' tf reference à rechercher dans wsi2
            tf = wsi1.Range("N" & i)
            Set re = wsi2.Range("B2:B" & dli2).Find(tf, lookat:=xlWhole)
            If re Is Nothing Then    ' on ne l'a pas trouvée on vérifie si la valeur de la cellule B de la feuille 1
            ' se retrouve dans la cellule A de la feuille 2
                Set re = wsi2.Range("A2:A" & dli2).Find(wsi1.Range("B" & i), lookat:=xlWhole)
                If Not re Is Nothing Then
                    'on l'a trouvée on l'ajoute dans wso
                    dlo = dlo + 1
                    wsi1.Range("N" & i).Copy wso.Range("B" & dlo)
                End If
            ElseIf wsi1.Range("Q" & i) <> wsi2.Range("F" & re.Row) Then    'on l'a trouvée et les quantités sont différentes
                'on l'ajoute dans wso
                dlo = dlo + 1
                wsi1.Range("N" & i).Copy wso.Range("B" & dlo)
            End If
        End If
    Next i
    For i = 2 To dli2
        Application.StatusBar = "Progress phase 2 " & Format(i / dli2, "0.00%")
        ' on passe en revue toutes les références de wsi2 la feuille "prestashop" et on traite le cas 3,
        ' on sélectionne les lignes dont la quantité est <>0
        If wsi2.Range("F" & i) <> 0 Then
            Set re = wsi1.Range("N2:N" & dli1).Find(wsi2.Range("B" & i), lookat:=xlWhole)
            ' on n'a pas trouvé la référence de wsi2 dans wsi1 on la copie
            If re Is Nothing Then
                dlo = dlo + 1
                wsi2.Range("B" & i).Copy wso.Range("B" & dlo)
            End If
        End If
    Next i
    MsgBox "Traitement terminé"
    Application.ScreenUpdating = True
    Application.Calculation = calcmethod
    Application.StatusBar = ""
    Set wso = Nothing
    Set wsi1 = Nothing
    Set wsi2 = Nothing
End Sub

Je viens de faire un test poussé avec tout les cas de figure (j'en dénombre 7 : 3 pour le point 1, 2 pour le point 2 et 2 pour le point 3) et là aucun problème le résultat est parfait !!!

Chapeau bas l'artiste !

Promis je t'embête plus

Merci infiniment.

Rechercher des sujets similaires à "fusionner tableaux 3eme"