TCD ou tout VBA ?

antiphot

XLDnaute Occasionnel
Bonjour à toutes et à tous

Voici mon mon besoin:

Calculer la quantité de matières premières nécessaires
pour fabriquer Les produits listés dans la feuille LISTEFAB
à partir de la date du jour jusqu'à la fin du planning et en fonction du volume à fabriquer

afin d'obtenir selon l'exemple ci-joint dans un listbox

Matière première Code SAP Quantité en g/L
MP1 1200021 10964
MP2 1200022 11753
MP3 1200023 etc
MP4 1200024 etc
MP5 1200025 etc

Etant donné le nombre de paramètres, je ne sais pas trop comment procéder. J'ai essayé en vba, mais je me mélange les pinceaux dans les variables tablo. Enfin j'imagine que la solution serait de passer par un TCD, mais ayant peu fait de TCD, je ne sais pas trop comment procéder car mon tableau en feuille BD est évolutif.
En bref, j'aimerais une piste pour faire un TCD évolutif avec extraction des résultats dans un listbox.
Maintenant si quelqu'un a une solution en tout vba, je suis preneur.

Je joint a cette demande, un fichier joint indispensable je pense pour avoir toutes les données du problème.
Il est clair que si des points semblent obscurs ou incomplets, je tacherais de les éclaircir.

En vous remerciant par avance
Philippe
 

Pièces jointes

  • CalculBesoinsMP.zip
    3.6 KB · Affichages: 25

merinos

XLDnaute Accro
Re : TCD ou tout VBA ?

Probleme: le nobre de colonnes ne semble pas limité...

A chaque nouveau produit peut correspondre un nouvel ingrediant... et donc une colonne de plus.

Tu va vite connaitre un probleme....

mais je vais repondre....

la solution est Vlookup.
 

Pièces jointes

  • CalculBesoinsMP.merinos.zip
    5.7 KB · Affichages: 25

antiphot

XLDnaute Occasionnel
Re : TCD ou tout VBA ?

Bonjour Merinos

Merci pour t'être penché sur mon Pb. Ta solution par formule a le mérite d'être simple et efficace mais cela m'ennuie un peu de passer par des formules. D'une par comme tu le dis, mon tableau dans la feuille BD est variable puisque l'on peut très bien avoir de nouveaux ingrédients ainsi que des nouveaux produits. Donc le tableau contenant les formules que tu as rajouté dans la feuille LISTEMP doit lui aussi être évolutif. Ce qui n'est pas évident à gérer avec des formules.

Je reste quand même à la recherche d'une solution tout vba ou TCD vba. Mais si je n'y arrive pas, ta solution me sera utile.

Eventuellement si mon cher voisin passe dans le secteur ...... ?
 

JCGL

XLDnaute Barbatruc
Re : TCD ou tout VBA ?

Bonjour à tous,
Salut PJ :),

Avec le fichier de Mérinos et toujours avec RECHERCHEV() mais avec une plage nommée 'Recettes' évolutive :

Code:
=DECALER(BD!$C$4:$H$2000;;;NBVAL(BD!$C$4:$C$2000)+1;NBVAL(BD!$C$4:$IU$4)+1)
et la formule :
Code:
=SI(ESTERREUR(RECHERCHEV($B5;Recettes;COLONNE(B$1);0));"";RECHERCHEV($B5;Recettes;COLONNE(B$1);0)*$C5)
donc prévu pour 2 000 lignes et 253 colonnes en feuille 'BD'

Remplissage automatique de D3 à IV4 en feuille 'LISTFAB' sur rajout de MPxx et 12xxxx en feuille 'BD'

Le fichier est un peu lourd : les formules sont posées de D4 à IV35 ;);)

A++ PJ :)
A+ à tous
 

Pièces jointes

  • JC Calcul Besoins MP.zip
    108.9 KB · Affichages: 28

antiphot

XLDnaute Occasionnel
Re : TCD ou tout VBA ?

Bonjour pierrejean, JCGL, le forum

Pierrejean

Merci voisin cela correspond à ce que je voulais. Et en lisant ton code, je comprends que j'aurais pu chercher longtemps car mes connaissances des variables tableaux sont trop sommaires. Et pour le moment j'étudie ton code tranquillement. Mais déjà je bute sur la déclaration de la variable :
Dim aproduire()
ReDim aproduire(1 To 2, 1 To 1) je ne suis pas familier de ce genre de déclaration. Peux-tu m'expliquer stp ?

JCGl

merci pour cette approche par formule. Mais pour être franc je préfère la solution de pierrejean plus pratique pour moi à mettre en oeuvre. Néanmoins je retiens les formules utilisées pour une autre application :)
 

pierrejean

XLDnaute Barbatruc
Re : TCD ou tout VBA ?

Re

Ave JC :) :)

Il s'agit d'un tableau dynamique
Tout d'abord déclaré vide : Dim aproduire()
Puis initialisé ReDim aproduire(1 to 2, 1 to 1)
1 to 2 : dimension qui ne bougera pas (On ne peut modifier que la derniere dimension)
1 to 1 : dimension qui sera modifiée au fur et a mesure que l'on aura integré des valeurs
1ere integration de valeur:
aproduire(1,1)=x
aproduire(2,1)=y
Ensuite preparation pour la 2eme integration
ReDim Preseve aproduire(1 to 2, 1 to ubound(aproduire,2)+1)
Le tableau prend alors les dimensions:
aproduire(1 to 2,1 to 2)
et grace au Preserve conserve les valeurs entrées precedemment
le ubound(aproduire,2) est l'index max de la seconde dimension du tableau
En fin d'integration des valeurs on devra se souvenir que cet index repere un enregistrement vide d'ou , a l'utilisation:
for n= lbound(aproduire,2) to ubound(aproduire,2)-1
for m=lbound(aproduire,1) to ubound(aproduire,1)
msgbox(aproduire(m,n))
next m
next n
Bon courage: Je ne suis pas sur de pouvoir me mettre a l'etude d'un code semblable qui aurais été créé par un autre
 

antiphot

XLDnaute Occasionnel
Re : TCD ou tout VBA ?

Merci pour l"explication et l'encouragement :)
Je crois effectivement que j'en ai besoin avec un cachet d'aspirine. Bon c'est sûr que ce n'est pas évident pour moi et les variables dansent devant mes yeux en se moquant de moi.

Bon trêve de plaisanterie, je souhaitais en fait apporter quelques modifs avant de placer ton code dans mon appli. Mais force est de constater que tant que je n'aurais pas saisi toutes les subtilités de la chose, j'en serais incapable. D'un autre côté, j'espère qu'en comparant ton code initial avec le futur code modifié, cela m'aidera sûrement.

Donc voici les modifs que je souhaite apporter (voir feuille LISTEFAB)
des colonnes ont été rajoutées. j'ai surligné en jaune celles qui correspondent au 1er fichier

dans un 1er temps je souhaite rajouter une condition. En effet sur l'ensemble des produits à fabriquer, seuls ceux qui ont été planifiés sont à fabriquer et ont de ce fait une date de fabrication prévue (colonne N). L'indice "P" en colonne A indique ce statut.

D'autre part la variable datefin correspond dans le premier fichier à la dernière date rentrée ce qui n'est pas forcément le cas. (Voir colonne N du nouveau fichier)

Je suis désolé pour ces modifications car je pensais être à même de les prendre en charge :rolleyes:

Philippe
 

Pièces jointes

  • CalculBesoinsMP_v2.zip
    22 KB · Affichages: 15
  • CalculBesoinsMP_v2.zip
    22 KB · Affichages: 16
  • CalculBesoinsMP_v2.zip
    22 KB · Affichages: 13

pierrejean

XLDnaute Barbatruc
Re : TCD ou tout VBA ?

Re

Voila l'adaptation accompagnée de commentaires (cet exercice n'est pas mon fort)
Par contre tu voudras bien controler que les calculs sont corrects.
Je me suis contenté de m'assurer que des valeurs sortaient
Attention j'ai modifié pas mal de valeurs de depart !!
 

Pièces jointes

  • CalculBesoinsMP_v2.zip
    27.4 KB · Affichages: 21
  • CalculBesoinsMP_v2.zip
    27.4 KB · Affichages: 21
  • CalculBesoinsMP_v2.zip
    27.4 KB · Affichages: 20

antiphot

XLDnaute Occasionnel
Re : TCD ou tout VBA ?

Bonjour

Merci pour les explications complémentaires. Je crois cette fois avoir saisi la logique des tableaux en suivant pas à pas la valeur que prenaient les variables. Le tout maintenant est de voir si je suis capable d'extrapoler ce code dans un autre contexte. Et là je saurais si j'ai vraiment compris :)

Je me suis permis d'apporter qq ajouts notamment en ce qui concerne l'affichage dans la combobox. En effet il est inutile qu'apparaissent les matières premières dont la quantité est nulle.

En final je te dis un grand merci pour tout
Philippe
 

antiphot

XLDnaute Occasionnel
Re : TCD ou tout VBA ?

Heu je reviens sur la pointe des pieds pour un petit supplément. Je me suis dit qu'une listbox multicolonnes serait mieux pour gérer l'affichage du contenu. J'ai donc créé une listbox 4 colonnes que j'ai essayé de remplir avec la propriété list. Mais visiblement cela ne fonctionne pas ?
 

antiphot

XLDnaute Occasionnel
Re : TCD ou tout VBA ?

Autant pour moi c'est effectivement 3 colonnes. Quant au remplissage de la listbox ma syntaxe était bonne mais je m'étais trompé de variable tableau comme quoi y a encore du boulôt !!
Par contre par rapport à la méthode addItem ou j'avais pu sans souçi rajouter une condition pour éviter qu'apparaissent les volumes nuls, là je ne vois pas ?
 

pierrejean

XLDnaute Barbatruc
Re : TCD ou tout VBA ?

Re

Effectivement pour la condition quantité <> 0 la methode Additem est plus apropriée
Mes excuses pour cette omission
 

Pièces jointes

  • CalculBesoinsMP_v2.zip
    27.3 KB · Affichages: 16
  • CalculBesoinsMP_v2.zip
    27.3 KB · Affichages: 16
  • CalculBesoinsMP_v2.zip
    27.3 KB · Affichages: 19

Discussions similaires

Statistiques des forums

Discussions
312 202
Messages
2 086 180
Membres
103 152
dernier inscrit
Karibu