Recherche résultat en fonction d'une nomenclature

Bonjour à tous,

Je suis nouveau sur le forum!

J’ai besoin de votre aide, je cherche à retrouver un total de stock disponible après une opération bien précise pour chaque pièce. Je pense que je dois utiliser un code VBA, notamment une boucle While mais je ne vois pas tellement comment m’y prendre.

Dans le fichier joint, il y a un exemple pour que ça soit plus clair et plus précis.

D’avance merci pour votre aide!

Stock Roulage.xlsx (2,0 Mo)

Bonjour

Ci-joint ma proposition en VBA
Le fichier pour ce besoin est de type xlsm
A maintenir impérativement

Onglet « Feuil5 » en cellule A2 la référence à traiter onglet « Stock HUB » en cellule B2 la référence à traiter onglet « Stock VBF » en cellule C2 le résultat

Clique sur le bouton « Traitement » onglet « Feuil5 »

Regardes le résultat obtenu en cellule C2

Testes et dis moi

Stock Roulage.xlsm (2,0 Mo)

Bonjour FFO,

Un grand merci, ça correspond à ce que j’attends.

Ensuite, j’ai copié les données du carnet de commandes sans doublon en feuille 5, j’aimerai que la formule fonctionne pour toutes les références en colonne A, c’est possible?
Par ailleurs, j’aimerai que, par rapport au carnet de commandes, en colonne D s’affiche la date de rupture, c’est à dire la date jusqu’à laquelle mon stock me permet de couvrir la demande client.

D’avance merci pour votre aide!!

Stock Roulage2.xlsm (2,0 Mo)

Bonjour qkrkt, hello FFO,
Une proposition avec des filtres.
Cordialement.
Stock Roulage.xlsm (2,0 Mo)

Merci pour ce retour

Ci-joint ton dernier fichier traitant l’ensemble des références listées colonnes A et B
Pour la date il faut me préciser sa source où doit elle être récupérée

Testes déjà cette dernière évolution
Donnes moi la précision pour la date

Stock Roulage2.xlsm (2,0 Mo)

Excellent FFO, c’est parfait!
J’ai vérifié manuellement et ça correspond parfaitement à ce que j’attends merci! Sans vouloir trop t’en demander tu as la possibilité d’insérer des commentaires dans le code VBA pour que je puisse comprendre la démarche et apprendre stp?

La date doit être récupérée dans le carnet de commande en colonne B (ou D) selon le format que tu choisis.
La colonne des quantités en C est à diviser par 10.

Encore merci!

Merci pour ce retour
Pour la date dans l’onglet « Carnet de commandes » pour par exemple la 1° référence à traiter « V13441 » j’ai la bagatelle de 77 dates différentes
Comment je fais le choix pour prendre la bonne

Merci de me dire

FFO,

Les dates dates correspondent à la date à laquelle le client souhaite qu’on lui envoi la marchandise.
Les quantités associées correspondent à la quantité commandée.
Exemple: Pour le 13/04, le client a commandé 9520 pièces (95200/10).
Sachant que nous avons 4830 pièces en stock, je ne pourrai lui livrer la totalité, je vais donc être en rupture.

Tout ça est bien entendu un exemple.

Tu trouveras ci-joint une nouvelle version qui intègre les Date de rupture prévue sur la base des données onglet « Carnet de commandes »
Pour cela le traitement filtre cet onglet avec chaque référence colonne A onglet « Feuil5 »
Puis il recopie les données « Quantité commandée » et « Date 2 » ainsi filtrées dans un onglet créé « Quantité »
Ligne par ligne il additionne les données « Quantité commandée » jusqu’à atteindre ou dépasser le stock de la colonne C onglet « Feuil5 » pour la référence traitée

Il y a 330 références à passer au crible avec onglet « Carnet de commandes » plus de 48000 enregistrements à scruter

J’ai séparé ce traitement du premier déjà réalisé pour ne pas l’handicaper quant au temps d’exécution
J’ai donc intégré onglet « Feuil5 » un deuxième bouton « Date rupture »

Ce dernier traitement nécessite prés de 5 minutes compte tenu de la quantité des éléments à mettre en rapport et à analyser
J’ai mis en cellule E2 une information quant à la progression de cette procédure (nombre de lignes à traiter/ligne traitée)

J’ai documenté comme tu me l’a demandé le premier traitement
Le deuxième ne l’est pas mais utilise les même instructions
Si tu comprends le premier code avec les commentaires tu devrais sans ceux-ci comprendre le second

Dis moi si tu as malgré tous des difficultés pour appréhender son déroulement

Ton fichier avec ces évolutions

Testes et dis moi

Stock Roulage2.xlsm (2,0 Mo)

Dans ma dernière version qui traite les ruptures de stocks j’ai additionné les quantités commandées colonne C onglet « Carnet de commandes » et dés le stock dépassé j’ai récupéré la date colonne D de la précédente commande pour l’inclure colonne D onglet « Feuil5 » sur la ligne de la référence traitée
Mais je ne comprends cette directive :

« La colonne des quantités en C est à diviser par 10 »

Quel colonne C ?

Le client commande une quantité et on lui octroie que le dixième ?

Merci de m’éclairer

Bonjour FFO,

un grand merci pour le code et également pour les explications, c’est très clair!
Je vais continuer à lire les commentaires, mais avant ça j’ai juste un petit point bloquant;

Sur l’image ci-dessus à partir du trait orange je ne comprends pas, dans le code, comment il arrive à trouver le « numéro de la ligne qui en colonne A onglet Stock HUB détient la valeur traitée colonne A sur la ligne de la variable h » alors qu’il n’est pas exactement pareil.

Je m’explique:
Dans la feuil5; Colonne a, valeur recherchée: V13441
Dans la feuille stock HUB on recherche donc la valeur V13441 alors qu’elle n’est pas exactement la même puisqu’il y a 2 lettres en plus à la fin (exemple V13441GX, V13441TR)

Dans la suite du code j’ai bien compris « If Sheets(« Stock HUB »).Range(« A » & i) Like Range(« A » & h) & « * » » qui signifie justement qu’on prend en compte tout ce qui commence par V13441.

La seule chose que j’ai du mal à comprendre c’est bien comment le code arrive à trouver le numéro de Ligne.

Je ne sais pas si je suis bien clair dans ma question, n’hésite pas.

Bonjour

Ravi que cela te convienne

Pour ta question quant à la ligne à trouver pour une partie de référence en colonne A de l’onglet « Stock HUB »

Cette ligne que j’utilise se décortique comme ceci :

Ligne1 = Sheets(« Stock HUB »).Columns(« A:A »).Find(What:=Range(« A » & h), After:=Sheets(« Stock HUB »).Range(« A1 »), LookIn:=xlValues, LookAt:=xlPart).Row

La variable Ligne1 est égale à

la ligne à trouver dans l’onglet « Stock HUB » en colonne A (Sheets(« Stock HUB »).Columns(« A:A »).Find)

ayant la valeur de la cellule A ligne h (What:=Range(« A » & h))

Aprés la cellule A1 de cet onglet (After:=Sheets(« Stock HUB »).Range(« A1 »))

en ne considérant que les valeurs de chaque cellule (LookIn:=xlValues)

et pour lesquelles celles-ci contient la valeur recherchées (LookAt:=xlPart)

C’est cette derniere partie qui permet la recherche sur une partie des données des cellules plage de la recherche
Si j’avais souhaité une recherche sur la stricte donnée dans son intégralité cette partie d’instruction aurait été : LookAt:=xlWole

Voilà pour l’explication demandée

A ta disposition pour d’autres précisions

Bonjour FFO,

Je me permets de revenir vers toi car je viens de me rendre compte qu’un élément n’était pas pris en compte, je me suis peut-être mal exprimé.

Dans le fichier tu trouveras en Feuil2 la nomenclature de chaque référence. Le but est de prendre en compte le stock à partir de la colonne B « référence roulage ».
Dans la Feuille « stock VBF » la formule ne prend en compte que le stock de la référence roulage alors que de temps en temps, selon telle ou telle référence, il y a plusieurs opérations à prendre en compte également dans la feuille « Stock VBF ».

(C’est très rare mais ça peut arriver qu’il y ai plusieurs opérations à prendre en compte dans stock VBF).

Stock Roulage VF.xlsm (2,1 Mo)

Bonjour

Là il faudrait être plus claire car je n’ai pas compris l’utilité de cet onglet « Feuil2 ») dans le traitement
Je ne vois pas ce que tu attends merci de m’apporter des précisions avec des exemples à la clef

Par exemple avec la référence « V15781 »

Les opérations à prendre en compte pour le calcul du stock dispo sont: V15781R0, V15781TR, V15781GX, V15781EX, V15781TA.
En faisant l’opération manuellement je devrai avoir 1288,635 pièces en stock, or dans l’onglet « Feuil5 » la formule trouve 1058,772 pièces.

Ce qui explique cette différence:
La formule cherche le stock dans la feuille « Stock VBF » uniquement pour la référence roulage soit V15781R0.
Ensuite dans la feuille « Stock HUB » elle prend en compte tout le stock pour cette référence.

Finalement, le stock pour l’opération « V15781TR » qui se trouve dans la feuille « Stock VBF » n’est pas prise en compte alors qu’elle se trouve bien après l’opération de roulage V15781R0 dans la nomenclature (voir Feuil2).

Finalement, si possible, j’aimerai que d’après la Feuil 2, tout ce qui se trouve à droite de l’opération de roulage soit pris en compte dans le calcul du stock. (je pense que la formule est à modifier uniquement pour le calcul dans la feuille « Stock VBF ».

J’ai essayé d’être clair même si c’est assez complique finalement d’expliquer le besoin.

Stock Roulage VF.xlsm (2,1 Mo)

« Finalement, si possible, j’aimerai que d’après la Feuil 2, tout ce qui se trouve à droite de l’opération de roulage soit pris en compte dans le calcul du stock. (je pense que la formule est à modifier uniquement pour le calcul dans la feuille « Stock VBF ». »

Sur la base de cet onglet à partir de la colonne C les références sont à rechercher dans quel onglet : « Stock VBF » ou « Stock HUB » ou les 2 ???

Certaines d’entre elles sont inexistantes dans ces 2 onglets (exemple V15781R0 pourtant listée dans la copie d’écran ci-après en jaune)
La référence « V15781 » onglet « Feuil2 » sur sa ligne après la colonne « Référence roulage » colonne B nous donne 7 autres références (en jaune) :

Or tu me mentionnes pour " V15781 " uniquement 5 autres références

Quid des 2 manquantes ???

De plus onglet « Feuil5 » colonne A rempli par tes soins sur laquelle se base le traitement je n’ai pas cette donnée " V15781"

Beaucoup beaucoup d’interrogations qu’il faut éclaircir si tu veux un traitement au résultat à la hauteur de tes attentes

Reprend le cheminement depuis son départ jusqu’au résultat attendu en expliquant clairement comment celui-ci doit être effectué pour l’obtenir par ce que je suis un peu perdu entre tes propos et ce que j’observe dans le contexte de ton fichier

Merci d’avance

Bonjour FFO,

Désolé pour mon retour tardif je n’avais plus accès à mon PC.

J’essaye de m’expliquer plus clairement:

  • Dans le tableau en Feuil2, on a la racine de la référence de base en Colonne A et le nom qu’elle prend quand elle passe à l’opération de roulage en Colonne B.

  • Les colonnes suivantes reprennent toutes les opérations du début à la fin.

  • Dans notre calcul de stock, ce qui nous intéresse c’est de prendre uniquement le stock à partir de l’opération de roulage (Colonne C) jusqu’à l’opération finale ; avec cette référence « V15781 » il faut donc considérer le stock des opérations de la colonne E à la colonne I.

  • Dans le code VBA, le calcul ne prend pas en compte le stock de la référence « V15781TR » dans la Feuille « Stock VBF » alors que l’opération se trouve après l’opération de roulage et devrait être prise en compte.

Autre exemple; pour la référence au dessus, « V15611 » on prendra en considération le stock à partir de la colonne F jusqu’à la colonne I.

J’espère avoir été un peu plus précis, n’hésite pas si tu as besoin de plus d’informations.

Bonjour

tu dis :

"Dans notre calcul de stock, ce qui nous intéresse c’est de prendre uniquement le stock à partir de l’opération de roulage (Colonne C) jusqu’à l’opération finale "

donc moi de comprendre de la colonne C à la colonne I (après C c’est D/E/F/G/H/I dans l’ordre alphabétique)

Que nenni tu dis ensuite :

« avec cette référence « V15781 » il faut donc considérer le stock des opérations de la colonne E à la colonne I. »

Et la colonne C et la D ???

Puis ensuite :

« Autre exemple; pour la référence au dessus, « V15611 » on prendra en considération le stock à partir de la colonne F jusqu’à la colonne I. »

Et les colonne C D et E ???

Désolé je n’arrive pas à comprendre ta logique cela me dépasse

Si comme tu le dis :

« c’est de prendre uniquement le stock à partir de l’opération de roulage (Colonne C) jusqu’à l’opération finale »

En bon français cela veut dire de la colonne C à la dernière colonne I (C/D/E/F/G/H/I)

Seule cette logique est compréhensible sinon dans ton raisonnement il manque des éléments pour justifier un coup

il faut donc considérer le stock des opérations de la colonne E à la colonne I.

un autre coup

on prendra en considération le stock à partir de la colonne F jusqu’à la colonne I.

Qu’est ce qui fait qu’il faille démarrer soit de la colonne E soit de la colonne F alors qu’initialement on doit débuter de la colonne C

« c’est de prendre uniquement le stock à partir de l’opération de roulage (Colonne C) jusqu’à l’opération finale »

J’attends donc la logique dans tout ces incohérences

Merci de m’éclairer

FFO,

Pour poser le contexte, nous fabriquons des vis pour le secteur de l’automobile, on transforme donc de la matière première (des bobines de fils), qu’on vient frapper (donner la forme de la vis), rouler (mettre le filetage) et traiter (traitement thermique pour la résistance, peinture spéciale selon demande client, freint filet etc…)

En colonne A tu as la racine de la référence fabriquée. De la « Colonne C à la Colonne I » tu as toutes les opérations de fabrication de ces vis étape après étape.
En Colonne B je recherche « l’opération de roulage » (qui correspond au filetage de la vis) car c’est à partir de cette opération que le stock m’intéresse.

Pour la référence V15781, l’opération de roulage s’appelle « V15781R0 » et se trouve en Colonne E en Opération N°3, ce qui m’intéresse c’est donc de calculer le stock à partir de cette opération jusqu’à la dernière, soit de la colonne E à la colonne I.

Pour répondre à ta question, c’est le résultat en Colonne B qui définit à partir de quelle colonne on doit démarrer pour le calcul du stock.

J’espère avoir répondu à tes questions.

« Pour répondre à ta question, c’est le résultat en Colonne B qui définit à partir de quelle colonne on doit démarrer pour le calcul du stock. »

Donc c’est la référence en colonne B qui détermine la première colonne de départ à utiliser jusqu’à la colonne I car celle-ci ayant la même
Bienvenue à cette explication qui me permet enfin de comprendre la manière d utiliser après la colonne B celles qui suivent
Jusqu’à lors rien sur cet élément décisif indispensable pour appréhender la logique à utiliser
Cela commence à s éclaircir
Donc en résumé je balaye toute les références colone A la recherche dans l onglet « Stock HUB » récupère sa donnée stock puis sur la ligne de cette référence recherche à partir de la colonne C la colonne de même référence que celle de la colonne B pour colonnes suivantes jusqu’à la colonne I chaque référence à trouver onglet « Sock VBF » pour additionner son stock

Ais je bien compris ?

Merci de me dire