Aide pour recréer la fonction "valeur cible" d'Excel sur VB 6.

Signaler
Messages postés
2
Date d'inscription
mardi 5 juillet 2005
Statut
Membre
Dernière intervention
6 juillet 2005
-
Messages postés
38
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
20 septembre 2006
-
Bonjour a tous, j ai besoin de votre aide pour résoudre le probleme suivant:

Comment recréer sur Visual Basic 6 la fonction "valeur cible" ou "solveur" d' Excel ?

Merci de vos reponses nombreuses

Guillaume

5 réponses

Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
26
Bonjour,

C'est quoi la fonction "Valeur cible" ??, un exemple s'il te plais.

jpleroisse
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
Tu veux dire... sous Excel VBA ???



Sinon, décrit-nous les contrôles que tu as parce que ce n'est pas compliqué !!!



Sous Excel, c'est pas si simple que ça... Déjà, si tu as une feuille il
ne faut pas qu'elle soit modale! Ce qui, comme tu peux te l'imaginer
peut poser pas mal de problèmes entre autre pour sa réaparition!!!



Pour la gérée, pas d'autre solution que de passer par les procédures événementielles "SelectChange" de chaque feuille!!!



En fait, le coeur du programme consiste simplement à récupérer la
cellule actuellement sélectionnée (ActiveCell.Value si je dis pas de
bétises [à vérifier]).



Mais avant de continuer, il me semble en effet que des précisions
s'imposent quant à ce que tu cherche à faire et comment tu cherches à
le faire!!!


Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse accé
Messages postés
2
Date d'inscription
mardi 5 juillet 2005
Statut
Membre
Dernière intervention
6 juillet 2005

Tout d'abord une petite explication de la "valeur cible" sous excel.

Elle permet de faire tendre une cellule vers une valeur numérique (derriere cette cellule I26 , il y a une formule faissant intervenir d'autres cellules dont I32).
Cette fonctionnalité va permettre de modifier la cellule I32 et de lui donner une nouvelle valeur.

Je ne sais pas si c'est tres clair.

Et ce que j aimerai savoir c'est: est-ce possible de retouver cette fonctionnalité sous VB 6 (pas VBA) sans ouvrir une feuille excel ?
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
Non, pas très je trouve!!!



Alors déjà, qu'entends-tu par "faire tendre une cellule vers une valeur numérique" ???



Tu nous parles de cellules, de VB6 et le tout sans ouvrir une feuille
Excel!!! Alors question : comment veux-tu travailler sur des cellules
sans ouvrir un feuille Excel (au moins vierge!) ???



Autrement dit, est-ce que tu as insérer un "objet Excel" dans ton
projet VB6 ou pas ? Si oui, il fonctionne exactement pareil et il faut
donc faire usage du VBA. Sinon, je ne comprends vraiment pas ce que tu
cherches à faire et surtout, comment tu comptes le faire!!!

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse accé
Messages postés
38
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
20 septembre 2006

Bonjour à tous.


Il cherche à recréer la macro "Valeur cible" en VB6.


La macro "valeur cible" est une fonction qui cherche à déterminer la valeur à mettre dans une cellule source pour obtenir un certain résultat dans une cellule cible.


La macro modifie la cellule source, recalcule la feuille en son entier, compare la valeur de la cellule cible avec la valeur recherchée, et continu jusqu'a avoir trouvé. (enfin presque).


Pour réaliser cette fonction, il faut déterminer le sens d'action des modifications de la cellule source. ( c'est pourquoi en cas de calcul trop complexe, la fonction se plante).
V = valeur cible.
Mettre une valeur faible (S1) dans la cellule source, recalculer, noter la valeur de la cellule cible (C1).
Mettre une valeur forte (S2) dans la cellule source, recalculer, noter la valeur de la cellule cible (C2).


Si C1>C2 alors la fonction est directe.
Si C1<C2 alors la fonction est inverse.
Si C1=C2, ben c'est que la feuille ne calcule pas la cellule cible. ;-)


Si directe:
si C>V alors prendre le milieu entre S et sa valeur précédente.
si C<V alors augmenter S par exemple en le multipliant par 2.


Si inverse:
si C<V alors prendre le milieu entre S et sa valeur précédente.
si C>V alors augmenter S par exemple en le multipliant par 2.


Boucler jusqu'à résultat.


Attention à mettre un compteur, qui arrétera la fonction au bout d'un temps, car, par la calcul pourrait parfois s'éterniser. :-)

J'attend vos remarques et suggestions.

Virtuellement vôtre !!! ;-))