Probleme de "temps de reponse" sur Excel VBA
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Probleme de "temps de reponse" sur Excel VBA



  1. #1
    invite2313209787891133
    Invité

    Probleme de "temps de reponse" sur Excel VBA


    ------

    Bonjour

    Je suis actuellement ne train de faire un calculateur sur une feuille Excel.
    Cette feuille contient un très grand nombre de données: Des tables, des lignes de calcul qui renvoie à d'autres tables etc.
    On peut considérer ce système comme une "boite noire": On fixe des paramètres de fonctionnement, on entre une valeur variable et la feuille calcule une valeur de sortie. Je précise que tous ces calculs sont uniquement effectués avec des fonctions natives de Excel et des calculs; il n'y a pas une seule ligne de code.

    Afin de chercher la solution optimale je voudrais effectuer une boucle qui permet de faire varier la valeur d'entrée, récupérer la valeur de sortie, puis ajuster la nouvelle valeur d'entrée de façon à faire tendre la valeur de sortie vers une valeur cible (effectuer un solveur en quelque sorte).

    Le problème qui se pose est que le code semble s’exécuter plus vite que le calcul effectué par la feuille; les valeurs de sortie que je récupère ne sont pas liées au valeurs d'entrée de la boucle.

    Comment faire pour "faire patienter" l’exécution du code le temps que les calculs effectués sur la feuille soient terminés ?

    En vous remerciant d'avance.

    -----

  2. #2
    Xoxopixo

    Re : Probleme de "temps de reponse" sur Excel VBA

    Bonjour,

    Citation Envoyé par Dudulle
    Comment faire pour "faire patienter" l’exécution du code le temps que les calculs effectués sur la feuille soient terminés ?
    Une solution consisterait à lancer le calcul lorsque la valeur de la cellule en entrée change.
    Le calcul se lance au changement -> le résultat change la cellule -> le calcul se lance etc..

    Le tout c'est d'inclure dans la procedure événement Private Sub Worksheet_Change(ByVal Target As Range)
    - un test qui vérifie si target=cellule entrée
    - Si c'est le cas, lancer le calcul si le calcul doit encore être lancé une fois de plus. (donc tester la necessité de relancer le test ici, utiliser une variable "compteur" par exemple initialisée lors de la première saisie).

    Utiliser une cellule "entrée" suplémentaire, afin de copier la valeur entrée à la main dans celle-ci vers la cellule entrée initialement prévue, en une fois par recopie (utiliser un bouton par exemple).
    Sinon, à chaque caractère entré dans la cellule (il me semble) l'évènement Worksheet_Change va se lancer pour rien.

    Il faudrait faire des tests, mais ça devrait fonctionner avec une méthode de ce genre.
    En bon vivant, rien ne vaut un bonne logique ternaire.

  3. #3
    invite2313209787891133
    Invité

    Re : Probleme de "temps de reponse" sur Excel VBA

    Merci pour ta réponse

    En fait j'ai trouvé une solution sans le vouloir; je stocke le résultat de toutes mes itérations sur une colonne directement sur la feuille excel, et du coup le programme patiente le temps d'écrire la valeur. Apparemment ça fonctionne de cette façon.

Discussions similaires

  1. Avis sur "une brève histoire du temps" de Hawking
    Par Vianhou dans le forum Archives
    Réponses: 2
    Dernier message: 28/12/2009, 08h03
  2. problème utilisation VBA sur excel 2007
    Par invite7b559047 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 16/02/2007, 00h00
  3. Et si le temps était raporté sur un "axe cyclique"???
    Par mayedi roland franck dans le forum Physique
    Réponses: 3
    Dernier message: 09/08/2006, 15h47