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
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...
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
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.
Bonjour Roblochon, mea clupa, je n'avais pas vu l'option "ajouter un fichier" , c'était pourtant sous mes yeux, c'est chose faite, j'espère que cela m'apportera quelques pistes
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)
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é.
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
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
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 ?
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
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 ?
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
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