Soustraction entre deux feuilles en VBA

Bonjour les amis ,

J'ai deux feuilles excel feuil1 et feuil2

les numéros de lot dans feuil1 dans la colonne A et la quantité dans la colonne E

les numéros de lot dans feuil2 dans la colonne E et la quantité dans la colonne C

ce que je voulais faire :

Sortir la quantité saisie dans feuil2 du quantité dans la feuil1 bien-sur si on trouve le numéro de lot dans feuil2

Plus précisément: feuil1 colonne E = feuil1 colonne E - feuil2 colonne C

Merci d'avance

Bonjour,

Essayez ceci

Cdlt

Merci beaucoup pour votre réponse cher ami c'est exactement ce que je voulais faire.

Est ce qu'on peux ajouter un msg si la quantité est insuffisante et ne pas exécuter la macro ?

Bonjour,

Est ce qu'on peux ajouter un msg si la quantité est insuffisante et ne pas exécuter la macro ?

Oui, voilà la modif

Sub Deduire_Quantite()
    Dim f1 As Worksheet, f2 As Worksheet
    Dim DerLig_f1 As Long, DerLig_f2 As Long, i As Long
    Dim q As Range
    Application.ScreenUpdating = False
    Set f1 = Sheets("Feuil1")
    Set f2 = Sheets("Feuil2")
    DerLig_f1 = f1.Range("A" & Rows.Count).End(xlUp).Row
    DerLig_f2 = f2.Range("E" & Rows.Count).End(xlUp).Row

    For i = 2 To DerLig_f1
        Lot = f1.Cells(i, "A")
        Set q = f2.Range("E1:E" & DerLig_f2).Find(Lot, lookat:=xlWhole)
        If Not q Is Nothing Then
            If f1.Cells(i, "E") - f2.Cells(q.Row, "C") < 0 Then
                MsgBox "Quantité insuffisante pour le lot " & f1.Cells(i, "A") & " déduction non réalisée"
            Else
                f1.Cells(i, "E") = f1.Cells(i, "E") - f2.Cells(q.Row, "C")
            End If
        End If
    Next i
    Set q = Nothing
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Cdlt

Merci beaucoup pour votre aide <3

Bonjour les amis,

Je suis de retour cette macro fonctionne très bien mais ne doit pas s'exécuter si un ligne ne répond pas à l'exigence.

Ce que j'ai remarqué qu'elle s'exécute ligne par ligne.

Est ce que c'est faisable de vérifier toutes les lignes avant de s'exécuter et de faire la soustraction

Merci

Bonjour,

Essayez ceci:

Sub Deduire_Quantite()
    Dim f1 As Worksheet, f2 As Worksheet
    Dim DerLig_f1 As Long, DerLig_f2 As Long, i As Long
    Dim q As Range
    Application.ScreenUpdating = False
    Set f1 = Sheets("Feuil1")
    Set f2 = Sheets("Feuil2")
    DerLig_f1 = f1.Range("A" & Rows.Count).End(xlUp).Row
    DerLig_f2 = f2.Range("E" & Rows.Count).End(xlUp).Row

    '1er passage de contrôle
    For i = 2 To DerLig_f1
        Lot = f1.Cells(i, "A")
        Set q = f2.Range("E1:E" & DerLig_f2).Find(Lot, lookat:=xlWhole)
        If Not q Is Nothing Then
            If f1.Cells(i, "E") - f2.Cells(q.Row, "C") < 0 Then
                MsgBox "Quantité insuffisante pour le lot " & f1.Cells(i, "A") & " Abandon"
                Exit Sub
            End If
        End If
    Next i

    '2ème passage si le contrôle est satisfaisant
    For i = 2 To DerLig_f1
        Lot = f1.Cells(i, "A")
        Set q = f2.Range("E1:E" & DerLig_f2).Find(Lot, lookat:=xlWhole)
        If Not q Is Nothing Then f1.Cells(i, "E") = f1.Cells(i, "E") - f2.Cells(q.Row, "C")
    Next i
    Set q = Nothing
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Cdlt

Merci Arturo83, je vais faire l'essai demain.

Merci Arturo83, ça fonctionne à merveille.
Rechercher des sujets similaires à "soustraction entre deux feuilles vba"