Dans cette quatrième partie nous allons voir comment registre les articles qui rentre de nos fournisseurs et les article qui sorte à nos clients. Nous allons aussi contrôler si les articles livrés d’un bon de commande sont exacte si c’est le cas alors le bon de commande sera fermer.
Index :
- Intro
- Article
- Bon de commande
- mise à jour des stock
Création du tableau booking
-
- Type
- Entrée
- Sortie
- Nr Facture
- Nr Bon Commande
- Fournisseur
- Client
- Nr Article
- Nombre
- Ranking
- =SI([@Type]= »Sortie »;NB.SI.ENS([Type]; »sortie »;[amount]; »> »&[@amount])+1; » »)
- Type
Création du formulaire
Alé c’est partie pour la création du formulaire je vous rejoint juste après.
Configurer le formulaire.
-
- Label1
- Label_info
- Visible = false
- Option1
- Option_entrée
- Option2
- Option_Sortie
- Textbox1
- Txt_facture
- Combobox1
- Cbx_Order
- Label4
- Lab_type
- Combobox2
- Cbx_type
- Combobox3
- Cbx_article
- Textbox2
- Txt_nombre
- Commandbuton
- Btn_Add
- Listbox1
- List_order
- Columncount = 2
- Label1
Varialbe memoire.
Nous allons créer une variable public memoire pour garder en mémoire sur quel ligne nous somme.
Public Memoire as integer
Le numéro du booking
Sur la page config dans la cellule B21 nous allons placer notre nr pour le booking.
Ajouter les articles dans la zone de liste. Nous allons contrôler si toute les informations sont la puis nous allons ajouter l’article dans la zone de liste. Retiré un article de la liste
Pour retirer un article il suffit de faire un double clique et placer le code suivant.
Simple non ?
Placer la liste dans la base de données.
Contrôler si la commande est conforme
Sur la page Order nous allons ajouter une nouvelle colonne que nous allons nommée Contrôle. Et nous allons cherche le nombre de pièce qui sont rentré pour un article précis d’un bon de commande précis.
=SIERREUR(INDEX(Tableau5[amount];EQUIV(1;([@[Order Nr:]]=Tableau5[Po])*([@[Part nr]]=Tableau5[Nr. article]);0)); » »)
Valider avec CTRL + Maj + Enter
Nous allons créer une autre colonne que nous allons nommée Statuts. Ici nous allons contrôler si le nombre est égal à la commande si c’est le cas nous allons indiquer que la commande est fermer donc close sinon open.
=SI([@amount]=[@Check]; »Close »; »open »)
Déterminer le niveau du stock.
Sur notre page Article nous allons enfin pouvoir déterminer notre niveau du stock. Et cela nous allons le faire en comptant le nombre d’entrée qu’il y a u pour un article et le nombre de sortie.
Donc dans stock nous plaçons la formule suivante.
=SOMME.SI.ENS(Tableau5[amount];Tableau5[Nr. article];[@[Part Nr]];Tableau5[Type]; »Entrée »)-SOMME.SI.ENS(Tableau5[amount];Tableau5[Nr. article];[@[Part Nr]];Tableau5[Type]; »Sortie »)
Voila cette partie est terminé dans la prochaine partie nous allons crée notre tableau de bord. Si vous avez des question faite le moi savoir dans les commentaires ou sur ma page facebook. D’ici la je vous retrouve dans la prochaine partie.
Merci d’avance
Bonjour,
Super tuto !
Je suis bloqué au moment de la suppression des lignes dans le form et aussi pour enregistrer l’entrée. Le code est identique au vôtre et pourtant ca ne marche pas.
« Private Sub List_Order_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If Me.List_Order.ListIndex >= 0 Then
If MsgBox(« Voulez-vous supprimer cette entrée ? », vbYesNo) = vbYesNo Then
Me.List_Order.RemoveItem Me.List_Order.ListIndex
memoire = memoire – 1
End If
End If
End Sub »
« Private Sub CommandButton2_Click()
Dim DL As Integer
Dim list_nombre As Integer
Dim ligne As Integer
list_nombre = Me.List_Order.ListCount – 1
If Me.List_Order.ListCount > 0 Then ‘controle de la liste si non vide
If MsgBox(« Voulez-vous enregistrer cette transaction ? », vbYesNo) = vbYesNo Then
For ligne = 0 To list_nombre
‘ajouter une nouvelle ligne dans le tableau
Sheets(5).ListObjects(1).ListRows.Add
‘chercher le num de la prochaine ligne libre
DL = Sheets(5).Range(« b99999 »).End(xlUp).Row
‘ajouter les info dans la base de donnée
Sheets(5).Range(« b » & DL) = Me.info1
Sheets(5).Range(« c » & DL) = Me.Txt_facture
Sheets(5).Range(« d » & DL) = Me.Cbx_order
‘controler si c’est un fournisseur ou un client
If Me.Label_type = « fournisseur : » Then
Sheets(5).Range(« e » & DL) = Me.Cbx_type
Else
Sheets(5).Range(« f » & DL) = Me.Cbx_type
End If
‘ajouter les données de la zone de liste
Sheets(5).Range(« g » & DL) = Me.List_Order.List(ligne, 0)
Sheets(5).Range(« h » & DL) = CInt(Me.List_Order.List(ligne, 1))
Next ligne
MsgBox « Enregistrement ok »
Unload Me
ThisWorkbook.Save
End If
End If
End Sub
«
Bien le bonjour Daniel, ce tuto est une mine d’or, je l’ai entierement suivi, et rajouté pas mal de fonctionnalité bien pratique. Je compte l’utiliser pour gerer mes consos pour ma compagnie car il se rapproche énormément du fichier excel que j’ai actuellement. Le controle de commande est d’autant plus pertinent car il arrive souvent que mes fournisseurs me livrent ma commande partiellement plusieurs fois. La page booking est vraiment importante pour moi. La seule chose sur laquelle je bute encore est qu’en cas de deuxieme ou troisieme livraison, la formule =SIERREUR(INDEX(tab_mvt[Quantite];EQUIV(1;([@PO]=tab_mvt[PO])*([@item]=tab_mvt[item]);0)); » ») similaire a la votre, ne fonctionne tout simplement pas chez moi, la valeur ne se met pas a jour. J’ai tout essayé, je ne vois pas ce qui bug. Pour tous, avez vous ce cas similaire ? Ou dois je fouiller pour trouver la solution ? Merci de m’aiguiller, bonne journée a tous !
Bonjour,
Merci pour sur tuto bien instructif et vos partage en général.
Voila une bonne demi-heure que je tourne en rond sur la partie suivante de la formule :
Private Sub btn_add_Click()
If Me.Txt_facture « » And Me.txt_nombre « » And Me.cbx_article.ListIndex >= 0 And Me.cbx_type.ListIndex >= 0 Then
With Me.list_order
.AddItem
.List(memoire, 0) = Me.cbx_article
.List(memoire, 1) = Me.txt_nombre
End With
memoire = memoire + 1
Me.cbx_article = « »
Me.txt_nombre = « »
End If
End Sub
Il me met en erreur sur le AddItem. J’ai ressaisi la formule à plusieurs reprises, je me suis conformée au nom donné pour chaque référence, vérifié que toutes les données correspondent en tous points au tuto you tube mais je suis coincée.
Quelqu’un pourrait m’éclairer ?
Merci par avance
bonjour, je suis nouveau . j’AIMERAIS BIEN APPRENDRE DE VOUS. MERCI
Bonjour,
Bon tuto.
J’ai ajouté des colonnes dans le booking : prix et date de péremption.
Sur la plage article, je souhaiterai rapatrier ce prix et cette date de péremption par article.
Pour cela, il me faut rechercher pour la référence, la dernière ligne d’entrée correspondante à cette référence.
Avec index et equiv pas de solution. C’est la raison pour laquelle je sollicite votre aide.
Merci.
Bonjour à tous,
J’ai un soucis sur le bouton enregistrer.
Quand je click dessus la ligne s’ajoute mais rien ne s’écrit dedans, pourtant mon code est strictement le même a un détail près il n’accepte pas le numéro de ma feuille Excel donc j ai écris le nom à la place.
Private Sub CommandButton2_Click()
Dim dl As Integer
Dim list_nombre As Integer
Dim ligne As Integer
list_nombre = Me.List_Order.ListCount – 1
If Me.List_Order.ListCount > 0 Then ‘controle que la liste n’est pas vide
If MsgBox(« Voulez-vous enregistrer cette transaction? », vbYesNo) = vbYes Then
For ligne = 0 To list_nombre
‘ajouter une nouvelle ligne dans notre tableau
Sheets(« Booking »).ListObjects(1).ListRows.Add
‘Chercher le nr de la prochaine ligne libre dans notre tableau
dl = Sheets(« Booking »).Range(« b9999 »).End(xlUp).Row
‘ajouter les informations dans notre base de donnee
Sheets(« Booking »).Range(« b » & dl) = Me.info1
Sheets(« Booking »).Range(« c » & dl) = Me.Text_facture
Sheets(« Booking »).Range(« d » & dl) = Me.Cbx_Order
‘controler si c’est un fournisseur ou un client
If Me.Label_type = « Fournisseur: » Then
Sheets(« Booking »).Range(« e » & dl) = Me.Cbx_type
Else
Sheets(« Booking »).Range(« f » & dl) = Me.Cbx_type
End If
‘ajouter les données de la zone de liste
Sheets(« Booking »).Range(« g » & dl) = Me.List_Order.List(ligne, 0)
Sheets(« Booking »).Range(« h » & dl) = CInt(Me.List_Order.List(ligne, 1))
Next ligne
MsgBox « Booking est fait »
Unload Me
ThisWorkbook.Save
End If
End If
End Sub
Bonjour je suis tombé sur votre tuto car j’ai assez de souci le bon de commande contient qu’un seul produit, il ne prend pas en charge tous les projet que je mets.
Le deuxième c’est quand je crée les options et que je mets .rowsource sur le cbx_type fournisseur j’ai des erreurs.
Bonsoir,
Je vous remercie pour ces Tuto, j’apprends beaucoup avec vous,
une petite question svp, comment pourrais-je faire lorsque j’ai déjà un stock initial qui varie entre les sorties et les entrées, je vous remercie D’abord
Bonsoir,
Je vous remercie pour ces tuto. Lorsque j’ai terminé la partie 5, en voulant faire mes ranking, j’ai voulu faire des entrée dans le booking et cela m’a indiqué une erreur. cela me souligne la ligne de code de l’ajout d’une nouvelle ligne dans le tableau. J’ai revue votre vidéo plusieurs fois et je ne vois pas où est l’erreur. Je vous remercie de votre temps. Si vous voulez plus de détail faîtes le moi savoir et merci encore pour vos tuto car il y a des décennies que je n’ai pas utilisé excel
Oups, j’ai oublier de vous dire le message d’erreur #epars!; j’ai fait des recherches pour trouver comment le réparer, mais ce que je trouve ne marche pas. cela me demande soit de déplacer la formule hors du tableau ou de convertir le tableau en plage. j’ai fait cela mais cela me donne plus de problème. voici la formule que j’ai inscrit comme il me semble vous avez indiqué sur la vidéo.
=SI([Type]= »Sortie »;NB.SI.ENS([Type]; »Sortie »;[Nombre]; »> »&[@Nombre])+1; » »)
Bonjour Daniel,
Je voudrais avoir le code svp, je n’arrive pas à trouver ce logiciel.
j’en ai besoin pour un travaille que je dois rendre pour demain.
et j’aimerais bien qu’on travail ensemble sur certain programmes que jai , donc si possible jaimerais avoir ton contact whatsapp , comme ca on puisse mieux discuter , et tes service serons payant , pense y sil te plait j’ai vraiment besoins de toi
Salut pourrais tu me passer le code de ce logiciel stp ?!!
quelqu’un peux maider ???
bonjour ici sil vous plait quelqu’un peut me montrer comment gerer ce probleme de rupture de stock ?? jaimerais que le programme menvoy un message pour dire rupture de stock lorsque la sortie est superieur au stock actuel
Bonjour Julio,
vous allez devoir rechercher le nombre en stock de base de votre produit puis vérifier avec un iF si le montant qui sort est plus grand que celui en stock, si c’est le cas alors msgbox(‘message d’erreur’) sinon réduit le stock de x nombre.
sil vous plait commenrt pourrait-je faire ca jessay depuis deux jour et j’y arrive pas
jai reproduit exactement votre programme de 1 a 6 donc jai suivis toute les instruction a la ligne et ca fonctionne bien sauf que si la sortie est inferieur au stock ca me met un stock negatif donc s’il vous plait aider moi a gerer ce petit manque
If Txt_nombre « » And Txt_nombre > Worksheets(« Article »).Range(« f6 ») Then
MsgBox « rupture »
End If
ca cest le code que j’ecrit dans ma macro mais lorsque j’applique ca m’envoy rupture quelque soit le nombre que je met
Private Sub CommandButton1_Click()
If Me.Txt_facture <> « » And Me.Txt_nombre <> « » And Me.Cbx_article.ListIndex >= 0 And Me.Cbx_type.ListIndex >= 0 Then
Dim productQTY As Integer
If (Option_sortie = True) Then
productQTY = WorksheetFunction.VLookup(Me.Cbx_article, Sheets(« Article »).Range(« b6:g9999 »), 4, False)
If (productQTY > Me.Txt_nombre) Then
With Me.List_order
.AddItem
.List(memoire, 0) = Me.Cbx_article
.List(memoire, 1) = Me.Txt_nombre
End With
memoire = memoire + 1
Me.Cbx_article = « »
Me.Txt_nombre = « »
Else
MsgBox (« Oeps not enough parts in storage ! »)
End If
Else
With Me.List_order
.AddItem
.List(memoire, 0) = Me.Cbx_article
.List(memoire, 1) = Me.Txt_nombre
End With
memoire = memoire + 1
Me.Cbx_article = « »
Me.Txt_nombre = « »
End If
End If
End Sub
salut merci beaucou pour ton aide mais je comprend pas trop d’ou viens le « Dim productQTY As Integer » jai pas productQTY dans le programme
et pardon je mettre ca sur « registrer ou sur « &jouter » dans mon booking ???
salut daniel je place ton algorithme ou sil te plait ?? dans la macro du bouton ajouter de booking ??? ou alors ?? sil te plait
et j’aimerais bien qu’on travail ensemble sur certain programmes que jai , donc si possible jaimerais avoir ton contact whatsapp , comme ca on puisse mieux discuter , et tes service serons payant , pense y sil te plait j’ai vraiment besoins de toi
merci ca a marhé merci bien daniel
mais la j’ai un petit probleme j’aimerai modifier les element de mon stock a partir du userform add article
Bonjour Daniel,
Merci beaucoup pour votre tuto.
J´ai une question importante sur la mise a jour des stocks. Quelle fonction utiliser pour l´inventaire mensuel ?
J´aimerais une autre posibilité qu´une simple entrée ou sortie du stock, mais un changement de la valeur directement selon l´inventaire.
Merci
Bonjour Monsieur Daniel,
Merci beaucoup pour les tutoriels, extrêmement utiles et limpides. Voilà mon problème : ma gestion des stocks se base sur un Coût Moyen Pondéré. J’ai modifié les commandes pour qu’elles puissent prendre un prix différent pour un même article. Or, le fait que les entrées modifient le Prix unitaire moyen, les sorties, elles doivent prendre ce prix unitaire en CMP, me créent une relation en boucle et ainsi mon tableur est inutilisable. Auriez-vous une astuce pour que je puisse mettre à bien mon projet ?
Merci d’avance,
Félix
Bonjour,
je veux savoir comment créer la numérotation de la facture ?.
Mercii
Ismail,
il n’y a pas de facture dans ce cours? uniquement un bon de commande qui est créer. nous plaçons manuellement le numéro de facture on sort des articles du stock
jaimerais a partir de mon formulaire add article faire une recherche de produit et modifier le prix du produit dans le stock
Bonjour,
Cela fait 3 fois que je visionne la video Comment créer une gestion des stocks sur Excel partie 4 – La mise a jour des stocks et je n’ai pas trouver le code de télécharpe ment.
Merci
je vous assure que les codes sont bien la mais il est plus rapide pour vous de créer l’application que de chercher le code.
Bonjour DANIEL, dans la 4ème partiétage quand on fait une entrée, le nom du fournisseur se place dans la colonne du client.
Yaya il vous suffit de placer le fournisseur dans la bonne colonne il me semble que je l’ais placer sans la colonne Client sans trop faire attention.
Bonjour,
malheureusement je n’arrive pas a faire cette formule matricielle
=SIERREUR(INDEX(Tableau5[amount];EQUIV(1;([@[Order Nr:]]=Tableau5[Po])*([@[Part nr]]=Tableau5[Nr. article]);0));””)
mon resultat est 0 et rien ne bouge dans le tableau et meme si il y a une erreur cela met 0
merci encore .
Herve
Bonjour,
Essayer d’utiliser votre code source sur des version excel 2010 ou plus
BONJOUR ,
moi ici je voudrais ajouter un un bon de livraison a l’image de « purchase » , et un formulaire pour saisir les BLV-0001. c’est un exercice pour moi que je me suis donné de faire.
il me restera alors les fichiers clients ceux qui ont paye et les créances du .mais dans ce deuxième point il faudrait nous aider M.DANIEL avec un tuto .
merci beaucoup
@+