Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 26/08/2008, 13h23   #1 (permalink)
Membre à l'essai
 
Date d'inscription: janvier 2007
Messages: 43
Par défaut incrémenter 3 séries en parallèle

Bonjour à tous !

J'ai un petit souci, je m'embrouille depuis un moment . En placant juste des boucles FOR, je n'ai pas ce q je veux... je n'arrive guere à trouver la solution ... j'espère q vos brillants esprits vont y parvenir.

Je souhaite incrémenter 3 séries en parallèle...
si, a, b et c sont mes valeurs à incrémenter, j'ai :

Nb1 = Nb1bis * a
Nb2 = Nb2bis * b
Nb3 = Nb3bis * c

Mon but est de calculer nbtot = nb1 + nb2 + nb3 et de trouver les coordonnées (a,b,c) telles que nbtot soit min....
Pour cela, il faut q a, puis b puis c soient incrémentés les uns après les autres et q à chaque element incrémenté, nbtot soit calculé... comment faire ?

J'espère q j'aurai été clair. Merci d'avance pour votre aide.

Dernière modification par Mourne ; 26/08/2008 à 13h55
Mourne est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/08/2008, 13h36   #2 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

Salut,

peux-tu préciser d'où viennent NB1bis, NB2bis, NB3bis

Et, surtout, merci de montrer ton code , quel qu'il soit !!!
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/08/2008, 13h41   #3 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Bonjour,
Citation:
Envoyé par Mourne Voir le message
J'espère q j'aurai été clair
Alors là......pas du tout.

Pour commencer, regarde la définition du mot "incrémenter", je n'ai pas l'impression qu'il s'agisse d'incrémentation dans ce cas ci.

Ensuite relis ce que tu as écrits
Citation:
Mon but est de calculer nbtot = nb1 + nb2 + nb3 et de trouver les coordonnées (a,b,c) telles que nbtot soit min....
Pour cela, il faut q a, puis b puis c les uns après les autres et q à chaque element incrémenté, nbtot soit calculé... comment faire ?
Cela te paraît limpide ?
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)

Dernière modification par AlainTech ; 26/08/2008 à 22h26
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/08/2008, 13h43   #4 (permalink)
Membre à l'essai
 
Date d'inscription: janvier 2007
Messages: 43
Par défaut

nb(i) et nb(i)bis sont des nombres q je récupère d'une feuille excel.

voici le code....

Code :
coutMDE_client = Range("E10:H10")
coutENR_NT_unit = Range("E16:H16")
coutENR_T_Eunit = Range("E21:H21")
coutENR_T_Punit = Range("E22:H22")
 
Nbclient_max() = Range("E12:H12")
PuissENR_NT_max() = Range("E19:H19")
ProdENR_T_max() = Range("E25:H25")
puissENR_T_max() = Range("E26:H26")
 
conso() = Range("E6:H6")
ecoMDE() = Range("E14:H14")
 
annee = 0
Nbclient = 0
 
For annee = 0 To 3
    For PuissENR_NT = 1 To puissENR_T_max(annee)
        For Nbclient = 1 To Nbclient_max(annee)
            coutMDE(annee) = coutMDE_client(annee) * Nbclient
            
           
            coutENR_NT(annee) = coutENR_NT_unit(annee) * PuissENR_NT
            coutENR_T(annee) = coutENR_T_Eunit(annee) * ProdENR_T + coutENR_T_Punit(annee) * puissENR_T
            
            coutTotal(annee) = coutMDE(annee) + coutENR_NT(annee) + coutENR_T(annee)
        Next Nbclient
    Next puissENR_T
 
coutTotal(annee) = coutMDE(annee) + coutENR_NT(annee) + coutENR_T(annee)
Next
J'avoue, c'est un peu compliqué... j'ai rajouté un mot que j'avais oublié... ds mon explication...

Citation:
mon but est de calculer nbtot = nb1 + nb2 + nb3 et de trouver les coordonnées (a,b,c) telles que nbtot soit min....
Pour cela, il faut q a, puis b puis c soient incrémentés les uns après les autres et q à chaque element incrémenté, nbtot soit calculé... comment faire ?
Le mieux c peut etre de prendre un exemple...

Itération 1 :
Nb1 = Nb1bis * 1
Nb2 = Nb2bis * 1
Nb3 = Nb3bis * 1
calcule de nbtot=f(nb1,nb2,nb3) et nboptimal = nbtot

Itération 2 :
Nb1 = Nb1bis * 2
Nb2 = Nb2bis * 1
Nb3 = Nb3bis * 1
calcule de f(nb1,nb2,nb3) => je stocke les valeurs a,b,c si nbtot est plus petit q ma valeur nboptimal puis nboptimal prend la nouvelle valeur nbtot.

Itération 3 :
Nb1 = Nb1bis * 2
Nb2 = Nb2bis * 2
Nb3 = Nb3bis * 1
calcule de f(nb1,nb2,nb3) => je stocke les valeurs a,b,c si nbtot est plus petit q ma valeur nboptimal puis nboptimal prend la nouvelle valeur nbtot.

Itération 4 :
Nb1 = Nb1bis * 2
Nb2 = Nb2bis * 2
Nb3 = Nb3bis * 2
calcule de f(nb1,nb2,nb3) => je stocke les valeurs a,b,c si nbtot est plus petit q ma valeur nboptimal puis nboptimal prend la nouvelle valeur nbtot.

Itération 5 :
Nb1 = Nb1bis * 3
Nb2 = Nb2bis * 2
Nb3 = Nb3bis * 2
calcule de f(nb1,nb2,nb3) => je stocke les valeurs a,b,c si nbtot est plus petit q ma valeur nboptimal puis nboptimal prend la nouvelle valeur nbtot.

etc....

j'espère q ce sera mieux...

Dernière modification par fring ; 26/08/2008 à 14h23 Motif: Fusion de 2 messages + ajout des balises [code]
Mourne est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/08/2008, 14h18   #5 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

Halte Stop....

Tu va dans tous les sens et tu ne respectes pas les regles du forum...

D'abord :
Ensuite Pour ce faire il faut prendre le temps de lire et appliquer les consignes présentées en haut de la page http://www.developpez.net/forums/f66...cel/vba-excel/

Ensuite dans ton code :
Code :
coutTotal(annee) = coutMDE(annee) + coutENR_NT(annee) + coutENR_T(annee)
Next Nbclient
Next puissENR_T

coutTotal(annee) = coutMDE(annee) + coutENR_NT(annee) + coutENR_T(annee)
Next
2 fois la meme instructions. La première est à sa place, je pense. l'autre est a supprimer.

Il te manque alors des instructions avant ton code du genre :
Code :
 
min = 99999999999 
min_a = 0
min_b = 0
min_c = 0
 
Et la fin de ton code devrait être quelquechose du genre
Code :
coutTotal(annee) = coutMDE(annee) + coutENR_NT(annee) + coutENR_T(annee)
If min > CoutOtal(annee) then
  min = CoutTotal(annee)
  min_a = annee
  min_b = .... ' je ne m'y retrouve pas dasn tes variables.....
  min_c = ....
endif
Next Nbclient
Next puissENR_T
 
Next
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.

Dernière modification par fring ; 26/08/2008 à 14h26 Motif: ajout des balises [code]
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide