Macro traitant les écarts d'inventaire de fin d'année

Bien le bonjour à tous les membres du forum,

Ce travail consiste à traiter les écarts d’inventaire de fin d’année dont je joint mon fichier.

1-Écarts Négatifs : A partir de la feuille « BComptable », dans le cas où un code n’existe pas sur la feuille « BPhysique », cela signifie que l’article en question est introuvable et doit apparaître sur la feuille « E.Négatif ».

2-Écarts Positifs : A partir de la feuille « BPhysique », dans le cas où la cellule du code est vierge sur la feuille « BPhysique », ou bien il n’existe pas sur la feuille «BComptable », cela signifie que l’article en question est nouvellement acquis, et doit apparaître sur la feuille « E.Positif ».

Le problème, c’est que la macro ne me donne pas le résultat que je veux atteindre.

Exemple, sur la feuille « E.Positif », je dois avoir l’enregistrement N°29.

Exemple, sur la feuille « E.Négatif », je dois avoir les enregistrements N° 1 et le N°5.

Merci pour toute intervention.

20inventaire.xlsm (22.43 Ko)

Bonjour zozo,

quelque chose comme ça, à tester dans une situation réelle...

Sub Analyse()
'
Dim tC, tBP, tNP(), iIdx%
'
tC = Worksheets("BComptable").Range("A2:C" & Worksheets("BComptable").Range("A" & Rows.Count).End(xlUp).Row).Value
tBP = Worksheets("BPhysique").Range("A2:C" & Worksheets("BPhysique").Range("A" & Rows.Count).End(xlUp).Row).Value
'
For x = 1 To 2
    iIdx = 0
    Erase tNP
    For y = 1 To IIf(x = 1, UBound(tC, 1), UBound(tBP, 1))
        iOK = 0
        For Z = 1 To IIf(x = 1, UBound(tBP, 1), UBound(tC, 1))
            If x = 1 Then If tC(y, 2) = tBP(Z, 2) Then iOK = 1
            If x = 2 Then If tBP(y, 2) = tC(Z, 2) Then iOK = 1
            If iOK = 1 Then Exit For
        Next
        If iOK = 0 Then
            iIdx = iIdx + 1
            ReDim Preserve tNP(3, iIdx)
            If x = 1 Then
                tNP(0, iIdx - 1) = tC(y, 1)
                tNP(1, iIdx - 1) = tC(y, 2)
                tNP(2, iIdx - 1) = tC(y, 3)
            Else
                tNP(0, iIdx - 1) = tBP(y, 1)
                tNP(1, iIdx - 1) = tBP(y, 2)
                tNP(2, iIdx - 1) = tBP(y, 3)
            End If
        End If
    Next
    With Worksheets(IIf(x = 1, "E.Négatif", "E.Positif"))
        iRow = .Range("A" & Rows.Count).End(xlUp).Row
        If iRow > 1 Then .Range("A2:C" & iRow).Value = ""
        .Range("A2").Resize(iIdx, 3).Value = WorksheetFunction.Transpose(tNP)
    End With
Next
'
MsgBox "Analyse réalisée", vbInformation + vbOKOnly, "Analyse"
'
End Sub

A+

9inventaire.xlsm (26.25 Ko)

Bonjour curulis57,

Je viens de tester la macro, et j'ai le résultat voulu, c'est génial de ta part, je te remercie infiniment.

A+

Rechercher des sujets similaires à "macro traitant ecarts inventaire fin annee"