Gestion de Stock Macro Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
D
Dim59
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 26 novembre 2013
Version d'Excel : 2011 MAC

Message par Dim59 » 26 novembre 2013, 21:33

Je viens vers vous car j'ai besoin d'aide pour des macros.
Je suis en train de créer un fichier de gestion de stock pour ma compagne. J'aimerais que lorsque je remplie la fiche entrée ou sortie les quantités soient enlever ou ajouter dans l'onglet stock et que les infos de sorties et entrées soient transmises dans l'onglet journal de bord et vide automatiquement la feuille entrée ou sortie.
Gestion de Stock .xlsx
(155.7 Kio) Téléchargé 151 fois
Avatar du membre
VB_troyes
Membre habitué
Membre habitué
Messages : 101
Inscrit le : 25 novembre 2013
Version d'Excel : 2010 FR

Message par VB_troyes » 26 novembre 2013, 21:36

Bonsoir,

As tu deja un code a soumettre ?
As tu deja une trame de code?

Cdt,
D
Dim59
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 26 novembre 2013
Version d'Excel : 2011 MAC

Message par Dim59 » 26 novembre 2013, 21:40

Je suis vraiment nul en macro. J'ai commande des livres pour apprendre mais je pense que j'en ai pour quelque temps avant de tout comprendre
Avatar du membre
VB_troyes
Membre habitué
Membre habitué
Messages : 101
Inscrit le : 25 novembre 2013
Version d'Excel : 2010 FR

Message par VB_troyes » 26 novembre 2013, 21:59

Je jette un cp d oeil

Cdt,
D
Dim59
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 26 novembre 2013
Version d'Excel : 2011 MAC

Message par Dim59 » 26 novembre 2013, 22:01

Merci bcp de jeter un oeil
Avatar du membre
VB_troyes
Membre habitué
Membre habitué
Messages : 101
Inscrit le : 25 novembre 2013
Version d'Excel : 2010 FR

Message par VB_troyes » 26 novembre 2013, 23:12

Bonsoir,

Voila ce que vous souhaitiez.
J'ai commenté pour que vous puissiez comprendre.

Voila le fonctionnement :

Sur Stock :
Il y a un bouton "MAJ des articles" => Cliquez dessus et toutes les fournitures en stocks sont remplies dans des listes déroulantes dans Entrée et Sortie afin de faciliter la saisie

Entrée:
Choix de la fourniture dans la liste déroulante
Saisie qté
saisie date
Cliquez sur image entrée
==> MAJ des données dans stock + journal de bord

Sortie:
Choix de la fourniture dans la liste déroulante
Saisie qté
saisie date
Cliquez sur image sortie
==> MAJ des données dans stock + journal de bord

Ps vous aviez oublié la date dans journal de bord je l'ai ajouté !

Voici le code, merci de votre retour :

Insérez le code dans Visual Basic
Sub sortie_stock()
'by VB_TRoyes le 26/11/2013
'je definie la dernière ligne
derlig = Sheets("Sortie").Cells(Cells.Rows.Count, "A").End(xlUp).Row
derligstock = Sheets("Stock").Cells(Cells.Rows.Count, "A").End(xlUp).Row
derligjourn = Sheets("Journal de bord").Cells(Cells.Rows.Count, "A").End(xlUp).Row

' Sortie ====> Stock

'je parcours les lignes des entrées
For Each c In Sheets("Sortie").Range("A4:A" & derlig)
'je parcours les lignes des stocks
For Each d In Sheets("Stock").Range("A4:A" & derligstock)
'si article stock = article entrée alors
If c = d Then
'valeur stock + valeur entrée
d.Offset(0, 5) = d.Offset(0, 5) + c.Offset(0, 1)
End If
Next
Next


' Sortie ====> Journal

'je parcours les lignes des entrées
For Each c In Sheets("Sortie").Range("A4:A" & derlig)
'je saisie que c'est une entrée
Sheets("Journal de bord").Range("A" & derligjourn + 1).Value = "Sortie"
'je saisie la designation
Sheets("Journal de bord").Range("A" & derligjourn + 1).Offset(0, 1) = c
'je saisie la quantité
Sheets("Journal de bord").Range("A" & derligjourn + 1).Offset(0, 2) = c.Offset(0, 1)
'je saisie la date
Sheets("Journal de bord").Range("A" & derligjourn + 1).Offset(0, 5) = c.Offset(0, 4)
Next


'après les entrées je supprime mes lignes
DLig = Sheets("Sortie").Range("B" & Rows.Count).End(xlUp).Row
' Pour chaque ligne de la dernière à la 4ème je les supprime
For Lig = DLig To 4 Step -1
Rows(Lig).Delete
Next

MsgBox "Sortie de stock terminée"

End Sub

Sub entree_stock()
'je definie la dernière ligne
derlig = Sheets("Entrée").Cells(Cells.Rows.Count, "A").End(xlUp).Row
derligstock = Sheets("Stock").Cells(Cells.Rows.Count, "A").End(xlUp).Row
derligjourn = Sheets("Journal de bord").Cells(Cells.Rows.Count, "A").End(xlUp).Row

' Entrée ====> Stock

'je parcours les lignes des entrées
For Each c In Sheets("Entrée").Range("A4:A" & derlig)
'je parcours les lignes des stocks
For Each d In Sheets("Stock").Range("A4:A" & derligstock)
'si article stock = article entrée alors
If c = d Then
'valeur stock + valeur entrée
d.Offset(0, 4) = d.Offset(0, 4) + c.Offset(0, 1)
End If
Next
Next


' Entrée ====> Journal

'je parcours les lignes des entrées
For Each c In Sheets("Entrée").Range("A4:A" & derlig)
'je saisie que c'est une entrée
Sheets("Journal de bord").Range("A" & derligjourn + 1).Value = "Entrée"
'je saisie la designation
Sheets("Journal de bord").Range("A" & derligjourn + 1).Offset(0, 1) = c
'je saisie la quantité
Sheets("Journal de bord").Range("A" & derligjourn + 1).Offset(0, 2) = c.Offset(0, 1)
'je saisie la date
Sheets("Journal de bord").Range("A" & derligjourn + 1).Offset(0, 5) = c.Offset(0, 4)
Next


'après les entrées je supprime mes lignes
DLig = Sheets("Entrée").Range("B" & Rows.Count).End(xlUp).Row
' Pour chaque ligne de la dernière à la 4ème je les supprime
For Lig = DLig To 4 Step -1
Rows(Lig).Delete
Next

MsgBox "Entrée en stock terminée"

End Sub
Sub ajout_art()

    Range("A4").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Names.Add Name:="base_art", RefersToR1C1:="=Stock!R4C1:R5C1"
    Sheets("Entrée").Select
    Range("A4").Select
    Range(Selection, Selection.End(xlDown)).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=base_art"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    Sheets("Sortie").Select
    Range("A4").Select
    Range(Selection, Selection.End(xlDown)).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=base_art"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    Sheets("Stock").Select
    Range("A4").Select
    
   MsgBox "Mise à jour de la liste des articles effectuée avec succès !"
    
End Sub


Cdt,
Gestion de Stock .xlsm
(146.25 Kio) Téléchargé 211 fois
D
Dim59
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 26 novembre 2013
Version d'Excel : 2011 MAC

Message par Dim59 » 27 novembre 2013, 07:43

Merci je vais regarder. Je vous tiens au courant
Avatar du membre
kingfadhel
Membre habitué
Membre habitué
Messages : 82
Appréciation reçue : 1
Inscrit le : 30 janvier 2012
Version d'Excel : 2007 fr

Message par kingfadhel » 27 novembre 2013, 08:04

Bonjour,
Une solution avec barre personnalisée, Userforms et biensur VBA

barre personnalisée sous la barre complément
2 userforms : 1 pour l'ajout d'un article
2 pour les opérations sur le stock

les feuilles (entrée et sortie) deviennent inutile.

Bonne réception.
Gestion de Stock.xlsm
(133.2 Kio) Téléchargé 141 fois
Avatar du membre
BrunoM45
Membre impliqué
Membre impliqué
Messages : 2'852
Appréciations reçues : 86
Inscrit le : 29 octobre 2011
Version d'Excel : 2016 FR, O365 FR
Contact :

Message par BrunoM45 » 27 novembre 2013, 08:19

Bonjour le fil, salut Dim59

Pourquoi vouloir utiliser du VBA ::D

A+
Gestion de Stock vBM45.xlsx
(119.81 Kio) Téléchargé 184 fois
[F1] est une touche qui appelle l'aide : Essayez, c'est assez performant et on trouve plein de choses

Il n'y a ni bon ni mauvais usage de la liberté d'expression, il n'en existe qu'un usage insuffisant.
D
Dim59
Membre habitué
Membre habitué
Messages : 53
Inscrit le : 26 novembre 2013
Version d'Excel : 2011 MAC

Message par Dim59 » 27 novembre 2013, 19:05

VB_troyes,

j'adore vraiment ce que tu as fais et cela me correspond. Par contre je rencontre un problème, quand je vais sur l'onglet "STOCK" et que je rajoute un produit puis mise à jour. Le produit rajoutait ne se retrouve pas dans la liste déroulante des entrées et sorties.

Aurait il moyen que dans le journal de bord la date où je vais l'entrée ou la sortie se mette automatiquement.

D'avance merci déjà pour l'aide que vous m'apporter.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message