Microsoft 365 suivi des stocks

LeLudo

XLDnaute Nouveau
Bonjour à tous,

J’utilise Excel depuis un moment, mais toujours sur des sujets assez simples.

pour commencer : voila mon excel pour vous aider à visualiser mon soucis : https://we.tl/t-L9nCIhrKXY

Aujourd’hui je suis confronté à un problème et je ne sais pas du tout quelle solution je pourrais mettre en œuvre

Voilà je souhaite tenir à jour un stock d’ingrédients en fonction des différentes recettes que je réalise

Sur la feuille 2, il y a une liste d’ingrédients exhaustive que j’utilise avec la quantité enregistrée à une date précise, date du dernier inventaire

J’aimerais que sous la colonne « stock » apparaisse la quantité en temps réel qui reste de chaque ingrédient

En quelques sorte, déduire automatiquement du stock de farine par exemple, les quantités de farine que je pèse pour mes différentes recettes. Sur la feuille 1, vous avez une recette, et il y aura autant de tableau qu’il y aura de recette. Un même ingrédients peu être utilisé dans plusieurs recette différentes, dans plusieurs feuilles différentes et à des position différente dans la recette

En plus de ça, il faudrait que cela tienne compte de la date. La quantité de farine par exemple utilisé lors de recette datant d’une date antérieure au dernier inventaire n’est pas prise en compte.

C’est un peu complexe, je ne sais pas comment réaliser cela, pouvez-vous m’aider ?

Je vous souhaite une bonne soirée et merci à ceux qui prendrons la peine de m’aider
 

Pièces jointes

  • suivi stock cuisine.xlsx
    10.7 KB · Affichages: 62
Solution
re
cette macro devrait faire l'affaire. l'impératif c'est Que dans toutes les feuilles et a n'importe quelle position , les quantités se trouvent à 2 cellules à droite de la dénomination.
c.Offset(0, 2)
vous pouvez modifier mais il faudra que dans tout le classeur respecter l'écart.

VB:
Sub Recherche()
Dim sh2 As Worksheet
Dim sh As Worksheet
Dim c As Range, Cact As Range
Dim Nom As String, firstAddress As String
Set sh2 = ActiveSheet
Sheets("Base").Unprotect
 Sheets("Base").Columns("L:N").ClearContents
For i = 5 To 20
dl = Sheets("Base").Cells(Rows.Count, 12).End(xlUp).Row + 1
Nom = Sheets("Base").Cells(i, 1)
If Nom <> "" Then
    For Each sh In ThisWorkbook.Worksheets
        Set c = sh.Cells.Find(Nom...

LeLudo

XLDnaute Nouveau
Bonjour à tous,

Quelqu'un a t-il un début de solution ? ou moins quelques indications de formules que je pourrais mettre en œuvre ? je ne sais même pas si c'est possible de faire cela sous excel

je vous remercie pour votre aide
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

40 vues et pas une réponse ! ? Il y a problème. Et je suppute qu'il s'agit du fait que votre fichier excel n'est pas joint ici et que beaucoup, comme moi-même ne téléchargent pas de fichier posés ailleurs.
Extrait de la charte du Forum que vous avez lue certainement :
Les problèmes liés à la fourniture de liens vers des fichiers téléchargeables en dehors du forum sont les suivants : les liens expirent souvent après une certaine durée, de nombreux utilisateurs ne peuvent pas télécharger de fichiers à partir de sites de partage de fichiers en raison de restrictions de sécurité réseau, de nombreux utilisateurs hésitent à télécharger des fichiers pour des raisons de sécurité personnelle et les fonctionnalités de recherche du forum ne fonctionnent pas.

Je rajouterai que ce n'est pas dans l'esprit du forum où tout est partagé.

Cordialement
 

GALOUGALOU

XLDnaute Accro
bonsoir leludo
une piste à explorer
si j'ai bien compris, vos données sont éparpillées dans la feuille et dans plusieurs feuilles.
il faudrait trouver à rassembler vos informations dans deux colonnes "A ET B", dans une feuille que nous nommerons "base". (par une formule (=cellule de référence))
dans la feuille2 étirer cette formule en colonne G (soustraction sur 377 lignes)
VB:
=B5-SOMME.SI(base!$A$4:$A$400;A5;base!$B$4:$B$400)
bien sur il faut adapter cette solution
cdt
galougalou
 
Dernière édition:

LeLudo

XLDnaute Nouveau
Bonjour,

merci de ta réponse, cependant, si je comprend bien, il faudrait reporter manuellement chaque information sur la feuille base dans les colonne A et B. En réalité, ce que je cherche c'est que quand j'inscris 200g dans la cellule a droite de la cellule "farine" de la feuille de pesé,dans la colonne "quantité pesée", peu importe la position sur les feuilles, excel se dise "ok je retire cette quantité au stock "farine". en quelque sorte associer des valeurs au mots "farine" , valeurs qui sont en réalité mes pesée

je ne sais pas si je suis assez clair, n’hésitez pas à demander de reformuler si besoin.

j'imaginais faire des macro mais je ne suis pas sur que ce soit la solution la plus adapté.
 

GALOUGALOU

XLDnaute Accro
re
cette macro devrait faire l'affaire. l'impératif c'est Que dans toutes les feuilles et a n'importe quelle position , les quantités se trouvent à 2 cellules à droite de la dénomination.
c.Offset(0, 2)
vous pouvez modifier mais il faudra que dans tout le classeur respecter l'écart.

VB:
Sub Recherche()
Dim sh2 As Worksheet
Dim sh As Worksheet
Dim c As Range, Cact As Range
Dim Nom As String, firstAddress As String
Set sh2 = ActiveSheet
Sheets("Base").Unprotect
 Sheets("Base").Columns("L:N").ClearContents
For i = 5 To 20
dl = Sheets("Base").Cells(Rows.Count, 12).End(xlUp).Row + 1
Nom = Sheets("Base").Cells(i, 1)
If Nom <> "" Then
    For Each sh In ThisWorkbook.Worksheets
        Set c = sh.Cells.Find(Nom, LookIn:=xlValues, Lookat:=xlWhole)
        If Not c Is Nothing Then
            sh.Activate
            c.Select
            firstAddress = c.Address
            Do
                Set Cact = sh.Cells(c.Row, 1).MergeArea
                  If ActiveSheet.Name <> Sheets("Base").Name Then
                         Sheets("Base").Cells(dl, 12) = c
                        Sheets("Base").Cells(dl, 13) = c.Offset(0, 2) * 1
                        Sheets("Base").Cells(dl, 14) = ActiveSheet.Name & c.Address
                        dl = dl + 1
                        End If
                         Set c = sh.Cells.FindNext(c)
                c.Select
            Loop While Not c Is Nothing And c.Address <> firstAddress
            Set c = Nothing
        End If
    Next sh
End If
Sheets("Base").Unprotect
 Next i
 sh2.Select
 If Sheets("Base").Cells(1, 16) > 1 Then MsgBox "Il manque du produit " & Sheets("Base").Cells(1, 16).Value

End Sub
j'ai nommé la feuille qui présente les stocks "Base". dans cette feuille un bouton macro exécute la macro en réservant les colonnes L M N.
L dénomination
M quantité
N adresse cellule
il faudra que la saisie des noms soit rigoureusement identique. aucun espace en plus etc.
pour cette raison la colonne N vous permettra de contrôler qu'il ne manque aucune information.
une boite de dialogue vous annoncera si le stock d'un produit n'est pas suffisant.
cdt
galougalou
 

Pièces jointes

  • Copie de Copie de suivi stock cuisine v2.xlsm
    42.4 KB · Affichages: 42
Dernière édition:

LeLudo

XLDnaute Nouveau
re
cette macro devrait faire l'affaire. l'impératif c'est Que dans toutes les feuilles et a n'importe quelle position , les quantités se trouvent à 2 cellules à droite de la dénomination.
c.Offset(0, 2)
vous pouvez modifier mais il faudra que dans tout le classeur respecter l'écart.

VB:
Sub Recherche()
Dim sh2 As Worksheet
Dim sh As Worksheet
Dim c As Range, Cact As Range
Dim Nom As String, firstAddress As String
Set sh2 = ActiveSheet
Sheets("Base").Unprotect
 Sheets("Base").Columns("L:N").ClearContents
For i = 5 To 20
dl = Sheets("Base").Cells(Rows.Count, 12).End(xlUp).Row + 1
Nom = Sheets("Base").Cells(i, 1)
If Nom <> "" Then
    For Each sh In ThisWorkbook.Worksheets
        Set c = sh.Cells.Find(Nom, LookIn:=xlValues, Lookat:=xlWhole)
        If Not c Is Nothing Then
            sh.Activate
            c.Select
            firstAddress = c.Address
            Do
                Set Cact = sh.Cells(c.Row, 1).MergeArea
                  If ActiveSheet.Name <> Sheets("Base").Name Then
                         Sheets("Base").Cells(dl, 12) = c
                        Sheets("Base").Cells(dl, 13) = c.Offset(0, 2) * 1
                        Sheets("Base").Cells(dl, 14) = ActiveSheet.Name & c.Address
                        dl = dl + 1
                        End If
                         Set c = sh.Cells.FindNext(c)
                c.Select
            Loop While Not c Is Nothing And c.Address <> firstAddress
            Set c = Nothing
        End If
    Next sh
End If
Sheets("Base").Unprotect
 Next i
 sh2.Select
 If Sheets("Base").Cells(1, 16) > 1 Then MsgBox "Il manque du produit " & Sheets("Base").Cells(1, 16).Value

End Sub
j'ai nommé la feuille qui présente les stocks "Base". dans cette feuille un bouton macro exécute la macro en réservant les colonnes L M N.
L dénomination
M quantité
N adresse cellule
il faudra que la saisie des noms soit rigoureusement identique. aucun espace en plus etc.
pour cette raison la colonne N vous permettra de contrôler qu'il ne manque aucune information.
une boite de dialogue vous annoncera si le stock d'un produit n'est pas suffisant.
cdt
galougalou
Merci Galougalou pour l'énorme boulot,

j'ai des petits soucis, j'ai tenté de modifier les quantités produites dans les 4 recettes de gâteaux pour voir si les stocks suivaient bien quand j'enclenchais la macro , mais rien ne se passe... je ne comprend pas trop les colonnes L, M, N quelle est leur rôle ?
 

GALOUGALOU

XLDnaute Accro
re il faut cliquer sur le bouton mise à jour.
dans votre classeur si le calcul n'est pas automatique,(formule option de calcul) effectivement cela ne marchera pas. modifier le choix ou rajouter une instruction dans la macro

en bas de la macro rajouter calculate juste après sh2.Select

les colonnes L M N servent à la formule en colonne D
VB:
=B5-SOMME.SI(L2:L1000;A5;M2:M1000)
cdt
ps j'ai modifier le classeur du fil 9. c'est une version qui prend en compte les alertes
 

LeLudo

XLDnaute Nouveau
re , merci encore pour ton boulot mais la je reconnais je suis dépassé, j'ai bien cliqué sur mettre à jour mais rien ne se passe, j'ai activé la macro "recherche" rien. j'ai ajouté "calculate" mais pas de sh2.select dans le code
Pour le doc 2 je suis sous l'eau , il y a semble t-il un "bog"

pour faire simple : la macro que tu as crée est en faite une fonction recherche qui développe le fameux tableau LMND c'est exacte ?
 

GALOUGALOU

XLDnaute Accro
re

pour faire simple : la macro que tu as crée est en faite une fonction recherche qui développe le fameux tableau LMND c'est exacte ?
la réponse est oui mais pour être précis, développe LMN , utile à la formule colonne D.
la colonne D, actualise le tableau rapport à la formule qui nécessite un calcul automatique ou une instruction macro
Précision, l'alerte par boite de dialogue n'apparait que si le stock est insuffisant. Les résultats si le stock est bon sont visibles dans la feuille base. de plus dans la feuille base on ne constate des modifictions que si les informations dans le classeurs ont été modifiées
dans le classeur ci-dessous j'ai rajouté l'instruction calculate
donc j'espère que cela va fonctionner chez vous. ici j'ai basculé le calcul en manuel et j'ai essayé la macro, je n'ai constaté aucun problème.
cdt
 

Pièces jointes

  • Copie de Copie de suivi stock cuisine v3.xlsm
    42.4 KB · Affichages: 15

LeLudo

XLDnaute Nouveau
ha ! j'ai compris, pas d'erreur sur la version 1 ! simplement le code à pris en compte les valeur "pesée pour 1 unitée" et non la pesée effective qui est une case plus loin, j'ai donc modifié cette fraction :

Sheets("Base").Cells(dl, 13) = c.Offset(0, 3) * 1 // trois par deux en gras ici

ça fonctionne nickel comme ça :)

ok on va pousser un peu plus loin la macro, si tu le veux bien ?

comme tu peux le constater, l'inventaire à une date, je voudrais que soit retiré de la quantité de farine en stock, uniquement les quantités de farine utilisé pour toutes les recettes de date égale ou antérieure à cet inventaire (les recette ont des dates)

en quelques sorte, ajouter dans notre tableau LMN une 4ème colone "date", toutes les pesée de dates antérieure à la date de l'inventaire (qui sera mis a jour manuellement) n'apparaitrons pas dans notre tableau LMN

voila ci dessous le tableau version 1 que j'ai corrigé, repartons de celui la , on ajoutera dans un second le temps le principe d'alerte si c'est possible

merci encore pour ton travail et ton temps ! c'est inestimable
 

Pièces jointes

  • Copie de suivi stock cuisine v1.2.xlsm
    28.4 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 870
Membres
103 007
dernier inscrit
salma_hayek