Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1844 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  probleme sujet programation excel........help

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme sujet programation excel........help

n°270015
pierre_par​is
Posté le 15-12-2002 à 15:29:30  profilanswer
 

Salut une copine a un probleme pour son devoir d'informatque qu'elle doit rendre la semaine prochaine et je n'ai pas reussi a l'aider, je ne connais pas le vba !
voici l'enoncé :
 
On dispose des données suivantes :
 
· Une liste des fournisseurs avec :
· Le numéro (code)
· Le nom
· L?adresse
· Le minimum de facturation
· Un tableau de 5 niveaux de coût de port par rapport au montant de la facture
 
· Une liste de produits avec :
· Un code produit
· Un libellé
· Une quantité à commander
· Pour 10 fournisseurs possibles par produit :
· Le numéro du fournisseur
· Le code produit pour le fournisseur
· Le prix unitaire
 
 
Le nombre maximum d?éléments dans chacune des deux listes est de 100.
 
Il faut déterminer quelle est la meilleure solution de commande(au moindre coût), et mettre en page les bons de commande.
 
A noter qu?il n?est pas question de couper la commande d?un produit et que l?on acceptera une méthode d?optimisation par étape, sans retour en arrière sur les étapes.
 
La projet consiste donc à :
· La définition précise de la feuille fournisseur
· La définition précise de la feuille produits à commander
· La définition précise de la mise en forme des bons de commande
· La définition et la réalisation des algorithmes demandés
 
 
 
-> on a fait les feuilles demandées, on arrive a avoir la liste des fournisseurs qui possèdent le produit d'une commande donnée.
Problème : on ne sait pas comment générer l'ensemble des possibilités de commande, pour une commande donnée plusieurs fournisseurs peuvent avoir le produit et en plus les frais de port sont variables selon la quantitee demandée pour chaque fournisseur, ce qui fait que le probleme n'est pas lineaire..
on galere..help please
comment coder en vba l'ensemble de possibilités ?

mood
Publicité
Posté le 15-12-2002 à 15:29:30  profilanswer
 

n°270019
CharlieB
Posté le 15-12-2002 à 15:51:08  profilanswer
 

:pt1cable:  
mdr!

n°270027
chico008
what the wookie says ?
Posté le 15-12-2002 à 16:26:11  profilanswer
 

sinon ds excel t'as un gestionnaire de scenario, utilise plutot ca, mais c pas evident !

n°270036
pierre_par​is
Posté le 15-12-2002 à 16:46:03  profilanswer
 

ah bon c'est quoi ce truc tu peux m'en dire un peu plus ?

n°270058
chico008
what the wookie says ?
Posté le 15-12-2002 à 18:54:03  profilanswer
 

bah deja le probleme c ke c pas du vba, mais c un truc du genre tu lui met kel variable il peut modifier, tu lui met kel valeur (avec un calcul bien ) il doit atteindre et des contraintes, et il trouve tout seul.
parfois ca va, mais pour ton probleme ca peut etre long a faire (peut etre meme plus long k'en vba).
 
mais avant de passer en vba faudrai plutot faire un algo, ou une trace d'execution pour voir comment ca doit de derouler.
en gros fille plus de detail k'on voit ce k'on peut faire !

n°270121
pierre_par​is
Posté le 15-12-2002 à 23:00:05  profilanswer
 

ok
le probleme est le suivant:
on a reussi a avoir des lignes du tableau excel avec la liste des fournisseurs pouvant fournir au moins un des produits de la commande.
 
apres il faudrait generer l'ensemble des possiblites de commandes avec le prix correspondant sachant que pour un fournisseur donné il y a des palliers de prix de port suivant le montant de la commande faite chez eux
 
par exemple si on commande 3 prosuits a b c
 
on a :
fournisseur 1 : produit a  
fournisseur 1 : produit b
fournisseur 2 : produit b
fournisseur 2 : produit c  
fournisseur 3 : produit c  
fournisseur 4 : produit a  
fournisseur 5 : produit a  
fournisseur 5 : produit c  
 
les fournisseurs ont des prix de port differents suivant le montant total de la commande faite chez eux et en plus les produits ont des prix differents chez les fournisseurs
on ne peut pas commander une partie d'un prioduit chez des fournisseurs differents, un produit est obligatoirement commandé chez un meme fournisseur...
 
il faudrait generer l'ensemble des commandes possibles et calculer le prix correspondant et ensuite garder la combinaison de commande la moins chere
 
par exemple on peut faire la commande par  
fournisseur 1 produit a
fournisseur 1 produit b
fournisseur 5 produit c
 
pour le fournisseur on atteint un prix de port donné et pour le fournisseur 5 un autre prix de port, ce qui donne ensuite un prix total = montant des commandes + prix de port  
 

n°270920
CharlieB
Posté le 16-12-2002 à 19:12:04  profilanswer
 

:pt1cable:  
G trouvé un début de solution.
Il fo que j'arrive à compter le nombre de lignes que g généré ds mon tableau calculs pr pouvoir ensuite créer ttes mes combinaisons.
Le pb c que je n'arrive po à compter les lignes que g créé...
Pfff...

n°270925
pierre_par​is
Posté le 16-12-2002 à 19:28:49  profilanswer
 

mets ton algorithme  de ce que tu voudrai faire et ton code pour que nous puissions t'aider

n°270937
CharlieB
Posté le 16-12-2002 à 19:44:18  profilanswer
 

'calcul du nombre de possibilités
Si la ligne est différnete de la ligne suivante alors
 

n°270940
CharlieB
Posté le 16-12-2002 à 19:45:42  profilanswer
 

Pfff...
Si la ligne est différente de la ligne suivante alors
    Si la ligne est différente de la ligne suivante alors
        ...
 
Auant de fois qu'il y a d'articles dans ma commande...

mood
Publicité
Posté le 16-12-2002 à 19:45:42  profilanswer
 

n°270951
nur
Posté le 16-12-2002 à 20:08:31  profilanswer
 

tu devrais expliquer davantage,mettre des exemples
comment as tu disposé tes feuilles ?
les categories de frais de port sont elles toutes les meme ?
...

n°270958
pierre_par​is
Posté le 16-12-2002 à 20:16:08  profilanswer
 

oui et mets ton code !

n°270977
CharlieB
Posté le 16-12-2002 à 21:37:12  profilanswer
 

Kel code?
Mes feuilles: produit, fournisseur, commande, calculs, résultats
produits/fournisseur: ts les renseignements relatifs aux produits/fournisseurs
commande: feuille sur laquelle je rentre les codes produits et les quantités voulues
Calculs: feuille sur laqeulle je répértorie ts les couples produits-fournisseurs
résultats: toutes les combinaisons possibles (ex: articleA-fournisseur1+articleB-fournisseur2 ou articleA-fournisseur2+ articleB-fournisseur2)

n°270978
CharlieB
Posté le 16-12-2002 à 21:40:12  profilanswer
 

Nan, les frais de port st différents pr chaque fournisseur. Ils peuvent être de 5 niveaux différents maxi...
Ds ma feuille fournisseur, pr chaque fournisseur (sur chaque ligne), g un mini de cde et 4 bornes pr créer les 5 niveaux...

n°270999
pierre_par​is
Posté le 16-12-2002 à 22:18:35  profilanswer
 

quand je parle du code c'est le programme que tu as ecris, mets le qu'on le voit !

n°271005
pierre_par​is
Posté le 16-12-2002 à 22:22:44  profilanswer
 

pour compter tes lignes il suffit de mettre un compteur non?  :ouch:  
tu as fais le plus dur on dirait

n°271152
CharlieB
Posté le 17-12-2002 à 10:27:07  profilanswer
 

Sub analyse_du_meilleur_achat()
 
'effacer la feuille calcul
 
 
'création de toutes les possibilités
 
ligneco = 1
ligneca = 1
lignef = 1
 
Do
 
ligne = 1
 
ligneco = ligneco + 1 'ligne de commande
 
    Do
    ligne = ligne + 1   'ligne de produit
        'si le code produit de la commande est égal au code produit de la feuille produit
        If Sheets("commande" ).Cells(ligneco, 1).Value = Sheets("produit" ).Cells(ligne, 1).Value Then
            ligneca = ligneca + 1 ' ligne de calcul
            lignef = lignef + 1 'ligne fournisseur
            'récupérer le numero du fournisseur
            Sheets("calculs" ).Cells(ligneca, 3).Value = Sheets("produit" ).Cells(ligne, 3).Value
            'récupérer le code de l'article
            Sheets("calculs" ).Cells(ligneca, 1).Value = Sheets("produit" ).Cells(ligne, 1).Value
            'récupérer la quantite voulue de l'article
            Sheets("calculs" ).Cells(ligneca, 7).Value = Sheets("commande" ).Cells(ligneco, 2).Value
            'récupérer le code produit fournisseur
            Sheets("calculs" ).Cells(ligneca, 4).Value = Sheets("produit" ).Cells(ligne, 4).Value
            'récupérer le prix unitaire
            Sheets("calculs" ).Cells(ligneca, 6).Value = Sheets("produit" ).Cells(ligne, 5).Value
            'récupérer le nom du fournisseur
'                If Sheets("calculs" ).Cells(ligneca, 1).Value = Sheets("fournisseur" ).Cells(lignef, 1).Value Then
'                    lignef = lignef + 1    'ligne fournisseur
'                    Sheets("calculs" ).Cells(ligneca, 5).Value = Sheets("fournisseur" ).Cells(lignef, 2).Value
            'récupérer le mini de facturation
             
            'récupérer le coût de port
             
         End If
    Loop Until IsEmpty(Sheets("produit" ).Cells(ligne, 1))
Loop Until IsEmpty(Sheets("commande" ).Cells(ligneco, 1))
 
 
ligneca = 1     'ligne résultats 1
compteur = 0    'compteur
n = 0           'compteur
 
'compter le nombre de solutions: nombre d'artciles*nombre de fournisseur/artcile
    'nombre d'articles
    ligneca = ligneca + 1
    Do
        If Sheets("calculs" ).Cells(ligneca, 1).Value = Sheets("calculs" ).Cells(ligneca + 1, 1).Value Then
        compteur = compteur + 1
        n = n + 1
        End If
    Loop Until Sheets("calculs" ).Cells(ligneca, 1).Value <> Sheets("calculs" ).Cells(ligneca + n, 1).Value
   
 
'conserver le résultat pour lequel le total de la commande est minimum
 
 
End Sub
 
Bein, g réussi à compter mes lignes ms après, je ne c pas comment faire pr connaître le nombre de combinaisons possibles...

n°271160
pierre_par​is
Posté le 17-12-2002 à 10:48:00  profilanswer
 

Pour avoir le nombre de combinaisons je pense qu'il faut multiplier a chaque fois le nombre de fournisseurs possibles pour un produit  
 
par exemple si  
produit A ->3fournisseurs
produit B ->2fournisseurs
produit C ->3fournisseurs
 
le nombre de combinaisons est 3*2*3=18
 

n°271551
pierre_par​is
Posté le 17-12-2002 à 16:10:24  profilanswer
 

en fait si j'ai bien compris tu as reussi a avoir des lignes avec toutes les possibilites de commandes selon les fournisseurs.
Il ne te reste plus qu'a completer cette ligne avec les couts, pour ce la il faut faire des couts intermediaires par fournisseur pour calculer les ports, et ensuite les couts globaux de chaque commande.
Puis tu cherche le montant mini et tu recuperes la ligne correspondante  :bounce:

n°271675
CharlieB
Posté le 17-12-2002 à 17:56:20  profilanswer
 

Bein, g les lignes de chaque couple "article-fournisseur"
Ms mnt, je dois tt regrouper pr avoir les combinaisons pr ma liste de produits en comande.  :p  
T collègues ont pas eu le tps de regarder?

n°271683
nur
Posté le 17-12-2002 à 18:07:08  profilanswer
 

pierre_paris a écrit :

Salut une copine a un probleme pour son devoir d'informatque qu'elle doit rendre la semaine prochaine et je n'ai pas reussi a l'aider, je ne connais pas le vba !
voici l'enoncé :
 
On dispose des données suivantes :
 
· Une liste des fournisseurs avec :
· Le numéro (code)
· Le nom
· L?adresse
· Le minimum de facturation
· Un tableau de 5 niveaux de coût de port par rapport au montant de la facture
 
· Une liste de produits avec :
· Un code produit
· Un libellé
· Une quantité à commander
· Pour 10 fournisseurs possibles par produit :
· Le numéro du fournisseur
· Le code produit pour le fournisseur
· Le prix unitaire
 
 
Le nombre maximum d?éléments dans chacune des deux listes est de 100.
 
Il faut déterminer quelle est la meilleure solution de commande(au moindre coût), et mettre en page les bons de commande.
 
A noter qu?il n?est pas question de couper la commande d?un produit et que l?on acceptera une méthode d?optimisation par étape, sans retour en arrière sur les étapes.
 
La projet consiste donc à :
· La définition précise de la feuille fournisseur
· La définition précise de la feuille produits à commander
· La définition précise de la mise en forme des bons de commande
· La définition et la réalisation des algorithmes demandés
 
 
 
-> on a fait les feuilles demandées, on arrive a avoir la liste des fournisseurs qui possèdent le produit d'une commande donnée.
Problème : on ne sait pas comment générer l'ensemble des possibilités de commande, pour une commande donnée plusieurs fournisseurs peuvent avoir le produit et en plus les frais de port sont variables selon la quantitee demandée pour chaque fournisseur, ce qui fait que le probleme n'est pas lineaire..
on galere..help please
comment coder en vba l'ensemble de possibilités ?

j'ai fait un fichier excel trop compliqué a expliquer si ça t'interesse je peux  te l'envoyer par mail demain
tu n'as qu'a me donner ton adresse par MP

n°271807
pierre_par​is
Posté le 17-12-2002 à 20:58:27  profilanswer
 

nur a écrit :

j'ai fait un fichier excel trop compliqué a expliquer si ça t'interesse je peux  te l'envoyer par mail demain
tu n'as qu'a me donner ton adresse par MP


cool !
envoie le a : charlotte_bonamour@hotmail.com et pierremiquel@hotmail.com

n°271848
CharlieB
Posté le 17-12-2002 à 22:38:20  profilanswer
 

COOL!
Merci bcp!
 :D

n°272003
nur
Posté le 18-12-2002 à 11:26:29  profilanswer
 

pierre_paris a écrit :


cool !
envoie le a : charlotte_bonamour@hotmail.com et pierremiquel@hotmail.com

c'est envoyé

n°272153
pierre_par​is
Posté le 18-12-2002 à 14:14:15  profilanswer
 

t'as assuré grave !
tu l'as pas fait expres pour nous quand meme ?
je viens de jeter un coup d'oeil rapide car je suis au boulot la mais ca a l'air d'etre exactement ca, à part que les seuils de frais de port sont en pourcentage et pas en prix fixe, merci encore.
 :bounce:

n°272163
pierre_par​is
Posté le 18-12-2002 à 14:31:38  profilanswer
 

en fait apres avoir regardé de plus pres, il y a une difference quand meme par rapport a notre enonce :
toi tu cherches le prix de port mini par produit commandé, alors que nous, c'est le port mini par commande globale, c'est à dire que tu ne fait pas toutes les combinaisons de commandes avec les prix globaux correspondant.
 :??:

n°272187
pierre_par​is
Posté le 18-12-2002 à 15:29:22  profilanswer
 

en fait il manque cette partie du programme :
 
on a une commande de differents produits A B C D et des fournisseurs qui possedent 1 ou plusieurs de ces produits
 
par exemple :
 
fournisseur 1 produit A,B
fournisseur 2 produit B
fournisseur 3 produit B,C,D
fournisseur 4 produit A,B,C
fournisseur 5 produit A,C
 
on voudrait faire toutes les combinaisons de commandes possibles pour les produits A,B,C,D
 
Par exemple la commande peut etre faite comme ca :
 
fournisseur 1 produit A - fournisseur 3 produit B,C,D
 
il faudrait pouvoir faire toutes les combinaisons ( et apres calculer les prix des commandes correspondantes car les prix des produits sont differents selon les fourniseurs..mais ca c'est une autre histoire)
 
faites passer ce message a des gens qui connaissent le vba, please, c'est super urgent, une copine doit rendre son projet demain soir !
 :na:

n°272317
nur
Posté le 18-12-2002 à 18:54:25  profilanswer
 

bon admettons que ds feuil1 tu as:
en A2 >"F1" A3>"F2" ... A6>"F2"
en B1>produitA  C1> produitB .... E1 >produitD
ds ce tableau tu as des "x" pour montrer quel produit possede tel fournisseur
(le resultat des combinaisons ds la colonne G)
 
 
voici le code:
 
sub test()
dim pa(),pb(),pc(),pd()
dim nb(3)
sheets("feuil1" ).select
for j=0 to 3
for i=0 to 4
if range("B2" ).offset(i,j)="x" then
nb(j)=nb(j)+1
endif
next
next
redim pa(nb(0)-1)
redim pb(nb(1)-1)
redim pc(nb(2)-1)
redim pd(nb(3)-1)
c=0
for i=0 to 4
if range("b2" ).offset(i)="x" then
pa(c)=range("a2" ).offset(i)
c=c+1
endif
next
 
c=0
for i=0 to 4
if range("b2" ).offset(i,1)="x" then
pb(c)=range("a2" ).offset(i)
c=c+1
endif
next
 
c=0
for i=0 to 4
if range("b2" ).offset(i,2)="x" then
pc(c)=range("a2" ).offset(i)
c=c+1
endif
next
 
c=0
for i=0 to 4
if range("b2" ).offset(i,3)="x" then
pd(c)=range("a2" ).offset(i)
c=c+1
endif
next
 
debut=0
for i=0 to ubound(pa)
for j=0 to ubound(pb)
for k=0 to ubound(pc)
for l=0 to ubound(pd)
temp=pa(i) & "  " & pb(j) & "  " & pc(k) & "  " pd(l)
sheets("feuil1" ).range("G1" ).offset(debut)=temp
debut=debut +1
next
next
next
next
 
end sub
 
 
 
 
 
(j'ai tapé a la main )

n°272620
pierre_par​is
Posté le 19-12-2002 à 10:53:51  profilanswer
 

merci beaucoup mais on a rien compris  :ouch:  :ange:

n°272628
pierre_par​is
Posté le 19-12-2002 à 10:57:57  profilanswer
 

moi j'avais pensé faire un truc comme ca :
 
creer une fonction recursive combi(x) que tu vas appliquer sur ta
feuille
calculs triee par produits
tu appelles combi(premier produit ici VL01)
 
combi(x)
pour chaque ligne
       si la ligne contient le produit en parametre (x)
             copier la ligne dans la feuille combi dans un emplacement vide
                   si un produit suivant existe (dans la feuille
commande)
                   passer au produit suivant (feuille commande)
                   appeller la fonction combi(x=produit suivant)
             fin pour
       fin si
fin pour

n°272678
nur
Posté le 19-12-2002 à 11:35:36  profilanswer
 

pierre_paris a écrit :

merci beaucoup mais on a rien compris  :ouch:  :ange:  

il faut tester sur une feuille (feuil1)

n°272796
pierre_par​is
Posté le 19-12-2002 à 14:14:24  profilanswer
 

la ligne  
temp = pa(i) & "  " & pb(j) & "  " & pc(k) & "  " pd(l)
ne passe pas a la compilation, je ne sais pas pourquoi, je pense que tu veut mettre dans la variable temp les resultats concatenes issus des tableaux pa pb pc pd mais ca ne marche pas, meme en declarant aussi temp en dim enfin bon je comprends pas.
desole je ne connais vraiùment rien a vba..

n°272814
CharlieB
Posté le 19-12-2002 à 14:47:13  profilanswer
 

Oué, bein ça presse là et je suis tjs autant ds la merde!
HELP!!!
 :cry:

n°272817
pierre_par​is
Posté le 19-12-2002 à 14:51:32  profilanswer
 

cherche un peu charlotte !
si il t'as filé ce projet c'est que tu dois pouvoir le faire !
je regarde la la combinaison que tu dois faire ca erssemble a un arbre binaire vous avez vu ca en cours ?
 :bounce:  :non:

n°272932
nur
Posté le 19-12-2002 à 15:36:56  profilanswer
 

pierre_paris a écrit :

la ligne  
temp = pa(i) & "  " & pb(j) & "  " & pc(k) & "  " pd(l)
ne passe pas a la compilation, je ne sais pas pourquoi, je pense que tu veut mettre dans la variable temp les resultats concatenes issus des tableaux pa pb pc pd mais ca ne marche pas, meme en declarant aussi temp en dim enfin bon je comprends pas.
desole je ne connais vraiùment rien a vba..


j'avais oublié un "&":
 
 
 
temp=pa(i) &  "  "  &  pb(j) &  "  "  &  pc(k) & "  " & pd(l)
tes explications sont correctes

n°273107
pierre_par​is
Posté le 19-12-2002 à 16:55:36  profilanswer
 

ah ben oui effectivement ca marche comme ca !
merci :hello:  
ca y est charlotte tu as ta combinaison, t'as plus qu'a continuer...

n°273567
Cyrille999
Cyrille
Posté le 20-12-2002 à 10:44:20  profilanswer
 

Utilise le solveur. C'est peut être l'outil adapté pour ton problème (et non pas le gestionnaire de scénarios);
 
C'est le même outil que "valeur cible" sauf que valeur cible est approprié pour une donnée, solveur pour de nombreuses.
 
L'utilisation du solveur est "simple": il faut ajouter des contraintes (qui sont comme des règles de gestion mathématiques, par exemple quel telle cellule doit être plus grande que 5, etc...), puis il te donnera le résultat immédiatement que tu pourras sauvegarder ainsi.
 
Soit on peut utiliser des fonctions telles que RECHERCHEH (ou RECHERCHEV) qui t'évite de passer à du code VBA.
 
Voilà quelques pistes...


---------------
L'imagination est plus importante que le savoir. Albert Einstein
n°273576
CharlieB
Posté le 20-12-2002 à 10:49:37  profilanswer
 

Pr recherchev, je l'ai pas mal utiliser ms le solveur... Je sé pas faire du tt...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  probleme sujet programation excel........help

 

Sujets relatifs
pb de génération de combinaisons sur vba (excel)probleme de string
probleme de hierarchie de classes et copie profonde. [urgent]Problème sur un devoir en assembleur [Help : c'est pas simple <:'o( ]
question bete : probleme dans la déclaration d'un tableauhelp liens,frames,cadres,cells,tabl es
[ACCESS] Problème de requetteRequête SQL sur controle ADO - Problème
[JAVA] Problème avec javax.servlet :/ 
Plus de sujets relatifs à : probleme sujet programation excel........help


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR