Comparer puis soustraire le résultat

Je viens dans ce forum afin de solliciter votre aide pour la réalisation d'un code.

Je dispose de 2 feuilles : Depôt et Ajout

Chaque feuille contient un tableau avec le nombre de ligne variable en fonction des dossiers

Je voudrais tout d'abord faire une comparaison des deux tableaux, précisement les colonnes B et F

Si les valeurs sont identiques pour les deux tableaux,

alors il faudrait comparer les valeurs situées dans la colonne D des deux tableaux

Si la valeur de la colonne D du tableau 1 dans la feuille Depôt est supérieure à celle de la colonne D du

tableau 2 dans la feuille Ajout,

alors il faudrait effectuer une soustraction des deux valeurs.

Et dans la ligne de la colonne D de la feuille Depôt écrire le résultat obtenu de cette opération dans

cette ligne

puis dans la feuille ajout supprimer la ligne identique.

Cette manipulation doit être faite dans les deux sens c'est à dire que si c'est la valeur de l'ajout qui est plus grande que celle du Depôt

soustraire les deux valeurs et écrire le résultat dans la ligne ajout correspondante puis supprimer

la ligne qui est identique dans la feuille Depôt

J'espère que mon explication est assez claire et votre aide me serait vraiment précieuse. Merci beaucoup.

Je vous joins un classeur exemple.

Salut MYs,

Quelque chose ainsi ?
Un changement de valeur dans une ou l'autre des colonnes [D:D] des deux feuilles démarre la macro.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'
Dim sWk As Worksheet
'
Application.EnableEvents = False
Application.ScreenUpdating = False
'
If Not Intersect(Target, Sh.Range("D2:D" & Sh.Range("D" & Rows.Count).End(xlUp).Row)) Is Nothing Then
    iRow = Target.Row
    Set sWk = Worksheets(IIf(Sh.Name = "Dépôt", "Ajout", "Dépôt"))
    With sWk
        For x = 2 To .Range("B" & Rows.Count).End(xlUp).Row
            If .Range("B" & x).Value = Sh.Range("B" & iRow).Value And .Range("F" & x).Value = Sh.Range("F" & iRow).Value Then
                If .Range("D" & x).Value <> Target Then
                    iIdx = IIf(.Range("D" & x).Value > Target, 1, 2)
                    If iIdx = 1 Then
                        .Range("D" & x).Value = .Range("D" & x).Value - Target
                        Sh.Rows(iRow).Delete shift:=xlUp
                    Else
                        Target = Target - .Range("D" & x).Value
                        .Rows(x).Delete shift:=xlUp
                    End If
                End If
                Exit For
            End If
        Next
    End With
End If
'
Application.EnableEvents = True
Application.ScreenUpdating = True
'
End Sub
5mys.xlsm (15.35 Ko)


A+

Bonjour, je vous remercie d'avoir pris le temps de répondre et de m'apporter votre aide. Cela fonctionne bien.

Rechercher des sujets similaires à "comparer puis soustraire resultat"