IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Aide calcul de stock en VBA [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Aide calcul de stock en VBA
    Bonjour, j'essaie d'optimiser un programme de gestion de Stock,
    Le but c'est de prendre le numéro de série des produits dans la feuille "Stocks". Ensuite, le programme ira dans la feuille "Achats", il va repérer tous les achats de produits ayant le même numéro de série et de les additionner. Après avoir fait ça, le programme recommence la même opération dans la feuille "Ventes".
    Finalement, le programme, qui sera déclenché à l'aide d'un bouton de commande, va soustraire le total des ventes au total des Achats et le noté dans la colonne stock qui se trouve dans la feuille "stock".

    En résumé,
    La première colonne de chaque feuille contient le numéro de série des produits.
    La deuxième colonne de la feuille stock contient le total des stock pour chaque numéro de série.
    La deuxième colonne des feuilles Ventes et Achats contient les quantités par rapport à leur numéro de série respectif.

    Je vous joint un document Excel qui pourrait peut-être clarifier la question.

    Voici le code VBA que j'ai pour l'instant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Private Sub CommandButton1_Click()
    Dim QuantiteVentes As Double
    Dim QuantiteAchats As Double
    Dim StockReel As Double
    Dim i As Long
    Dim j As Long
     
    QuantiteVentes = 0
    QuantiteAchats = 0
    StockReel = 0
    i = 0
    j = 0
     
    For j = 2 To 100
        For i = 2 To 100
     
                    If Worksheets("Ventes").Cells("A" & i) = Worsheets("Stocks").Cells("A" & j) Then
                        With Worksheets("Ventes")
                        QuantiteVentes = QuantiteVentes + Val(.Range("B" & i))
                        End With
                    End If
     
                    If Worksheets("Achats").Cells("A" & i) = Worsheets("Stocks").Cells("A" & j) Then
                        With Worksheets("Achats")
                        QuantiteAchats = QuantiteAchats + Val(.Range("B" & i))
                        End With
                    End If
     
    StockReel = QuantiteVentes - QuantiteAchats
    Worksheets("Produits").Range("B" & j).Value = StockReel
     
        Next i
    Next j
    End Sub
    En vous remerciant d'avance pour votre aide!
    Nishruu
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut Ajouté remarque + fonction
    Bonjour,
    En faisant tourner ton programme, tu aurais pu détecter l'erreur de syntaxe : Worksheets et non pas Worsheets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Worksheets("Ventes").Cells("A" & i) = Worsheets("Stocks").Cells("A" & j) Then
    Alors Worksheets.Cells("A" & j) cela ne va pas
    C'est Worksheets.range("A" & j) ou Worksheets.Cells(i, 1)
    Je n'ai pas été plus loin dans la lecture du code.

    Ceci dit, as-tu un impératif pour utiliser le VBA car l'utilisation de la fonction RECHERCHEV peut parfaitement résoudre ton problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV($A2;Achats!$A$2:$B$100;2;FAUX) - RECHERCHEV($A2;Ventes!$A$2:$B$100;2;FAUX)
    Petite remarque personnelle. Dans ton classeur, il y a plus de ventes que d'achats ce qui donne un stock négatif.
    Certe, je suis conscient qu'il s'agit de données tests mais dans la réalité cela se passe aussi comme cela. Il serait donc judicieux de prévoir une colonne Inventaire de départ. Ce qui ferait QtéInv + QtéAch - QtéVen

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2011
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci pour la réponse!

    J'ai modifié une partie du code et ça fonctionne déjà beaucoup mieux.
    Néanmoins, j'ai encore un problème, le calcul fonctionne pour le premier code produit, mais pas pour le deuxième. Là il additionne les résultat du premier code produit au deuxième.

    je vous mets mon code modifié
    et ma feuille de calcul en pièce jointe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Private Sub CommandButton1_Click()
     
     
    Dim QuantiteVentes As Double
    Dim QuantiteAchats As Double
    Dim StockReel As Double
    Dim i As Long
    Dim j As Long
     
    QuantiteVentes = 0
    QuantiteAchats = 0
    StockReel = 0
    i = 0
    j = 0
     
    For j = 2 To 100
        For i = 2 To 100
                With Worksheets("Stocks")
                If Val(CStr(.Range("A" & j))) = 0 Then
                Exit Sub
                End If
                If Val(CStr(.Range("A" & j))) > 0 Then
                    If Worksheets("Ventes").Range("A" & i) = Worksheets("Stocks").Range("A" & j) Then
                        With Worksheets("Ventes")
                        QuantiteVentes = QuantiteVentes + Val(.Range("B" & i))
                        End With
                    End If
     
                    If Worksheets("Achats").Range("A" & i) = Worksheets("Stocks").Range("A" & j) Then
                        With Worksheets("Achats")
                        QuantiteAchats = QuantiteAchats + Val(.Range("B" & i))
                        End With
                    End If
                End If
                End With
     
    StockReel = QuantiteAchats - QuantiteVentes
    Worksheets("Stocks").Range("B" & j).Value = StockReel
     
        Next i
    Next j
     
    End Sub
    En vous remerciant pour votre aide!

    Nishruu
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul du stock en VBA
    Par mchouaebou dans le forum VBA Access
    Réponses: 4
    Dernier message: 18/04/2013, 08h32
  2. Aide calcul quantité en stock
    Par AlelMourad dans le forum WinDev
    Réponses: 6
    Dernier message: 09/01/2013, 09h38
  3. Aide requete SQL ou fonction VBA
    Par nykola7 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/03/2006, 17h51
  4. Calcul de stock avec valeure null
    Par nideux dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2005, 11h10
  5. Appel a une procedure stockée en vba
    Par The_Nail dans le forum VBA Access
    Réponses: 36
    Dernier message: 01/04/2003, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo