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

Y compris Power BI, Power Query et toute autre question en lien avec Excel
z
zozo64
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 7 novembre 2019
Version d'Excel : 2010 FR

Message par zozo64 » 7 novembre 2019, 10:53

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.
Inventaire.xlsm
(22.43 Kio) Téléchargé 7 fois
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'220
Appréciations reçues : 140
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 8 novembre 2019, 04:02

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
:btres:
8-)
A+
Inventaire.xlsm
(26.25 Kio) Téléchargé 5 fois
z
zozo64
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 7 novembre 2019
Version d'Excel : 2010 FR

Message par zozo64 » 8 novembre 2019, 12:27

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+
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message