Soustraction ne s'applique pas sur toutes les lignes (VBA)

Bonjour à tous,

Ayant repris mon logiciel pour m'aider dans ma gestion, je me trouve confronté à un problème:

Mon but était à l'origine de déduire les pièces du stock restant (feuille "état des stocks" colonne "e") et de supprimer la ligne quand l'état est noté "terminée" (feuille sortie de stock, colonne "g") Pour se faire, j'ai le bouton "Valider la sortie de stock" en feuille "Sortie stock". Dans mes rêves les plus fou, je voulais un code qui trouvait automatiquement la pièce (un peu comme une rechercheV) et la déduise tout seul.

N'ayant pas réussi, j'ai fait un tableau tampon sur la feuille "sortie stock" pour avoir un visuel direct et demander à mon code de faire les soustraction des pièces a sortir avec le stock restant.

Mon problème: Le code s'applique, fonctionne mais pas sur tous les produits… Par exemple, si je me place sur la "pc10" et que je la met en état "Terminée" et qu'ensuite je valide la sortie de stock, la soustraction ne s'effectue pas. Tandis que sur certaines autres ça fonctionne comme il faut.

Si quelqu'un peut m'éclairer je suis preneur. Vous trouverez le fichier test en PJ.

En vous remerciant par avance pour le temps consacré!

Rémy

Bonjour,

Tu utilises les mêmes numéros de lignes d'une feuille à l'autres ...

En supprimant une ligne > les articles ne correspondent plus aux numéros de lignes.

Pour le démontrer > au lieu de supprimer la ligne > l'on va seulement en vider le contenu ...

        'nettoyer le tableau
        For i = Wss.Range("c" & Wss.Rows.Count).End(xlUp).Row To 6 Step -1
            If Wss.Range("G" & i) = "Terminée" Then Wss.Range("Tableau5").Rows(i - 5).ClearContents '''Delete
        Next i

ric

Bonjour,

Je te remercie d'avoir pris le temps de répondre, je comprends plus ou moins ce que tu me dis,

du coup que me conseille tu pour remédier au problème, la formulation doit être intégralement changée?

Bonjour,

Essai ceci > ce n'est pas le code le plus rapide s'il y a beaucoup de lignes > mais il est plus facile à suivre ...

Est-ce que tu connais F8 le mode pas-à-pas ?

Private Sub CommandButton1_Click()
Dim i%, ret%, j%
Dim Wes As Worksheet, Wss As Worksheet

    Set Wes = Worksheets("Etat des stocks")
    Set Wss = Worksheets("Sortie stock")

    ret = MsgBox(Space(2) & "Voulez vous  mettre à jour le stock réel ?" & Chr(13) & _
                 Chr(13) & "Attention!! Cela entraînera la suppression des" & Chr(13) & _
                 "données dans le tableau de sortie des stocks.", 273, "VALIDATION")

    If ret = vbOK Then
        'Application.ScreenUpdating = False    'désactive la mise à jour de l'écran
        For i = Wss.Range("e" & Wss.Rows.Count).End(xlUp).Row To 6 Step -1
            If Wss.Cells(i, "G") = "Terminée" Then
                For j = 6 To Wes.Range("e" & Wes.Rows.Count).End(xlUp).Row
                    If Wes.Cells(j, "B") = Wss.Cells(i, "E") Then
                        Wes.Cells(j, "E") = Wes.Cells(j, "E") - Wss.Cells(i, "F")
                    End If
                Next j
            End If
        Next

        'nettoyer le tableau
        For i = Wss.Range("c" & Wss.Rows.Count).End(xlUp).Row To 6 Step -1
            If Wss.Range("G" & i) = "Terminée" Then Wss.Range("Tableau5").Rows(i - 5).Delete
        Next i
        MsgBox "Stock mis à jour"
    End If
End Sub

ric

Bonjour Ric,

Je te remercie pour ton aide, cela fonctionne à merveille,

Non je ne connais pas le mode F8, pour tout t'avouer, j'ai commencé Excel et VBA cette année, en tant que total amateur car je ne trouvais pas de logiciel pour la société, je me forme sur le tas et essai de comprendre ou je pêche. Le site et le forum sont également très bien expliqué et aide grandement.

j'ai essayé le mode F8 ca teste chaque ligne de code c'est bien cela?

Cordialement,

Rémy

Bonjour,

La touche F9 > place un point d'arrêt sur la ligne sélectionnée > on lance la macro et elle s'être à la ligne du point d'arrêt ...

Puis, la touche F8 continue en pas-à-pas > si tu places le curseur au-dessus d'une variable ou d'une adresse > son contenu va s'afficher dans une infobulle ...

Cours VBA ...
https://www.excel-pratique.com/fr/vba

Cours VBA avancé ...
https://www.excel-pratique.com/fr/formation

ric

Merci pour ton temps,

Je vais me plonger dedans dès que j'ai un peu de temps, je passe le sujet en résolu !

A bientot,

Rémy

Rechercher des sujets similaires à "soustraction applique pas toutes lignes vba"