|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : mai 2007 Messages : 314 ![]() |
Bonjour,
j'ai un userform dans laquelle j'affiche et j'actualise un graphe par code vba et ce graphe est lié a une série de cellules dans lesquelles il y a des formules le problème est que des-fois le graphe s'affiche avant que les formules ne soient actualisées (calcule automatique des formules) donc le graphe affiche les anciennes données avant le calcul y a t-il le moyen de démarrer l’exécution du code vba après le calcul automatique des formules ? Merci pour votre aide |
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Inscription : janvier 2003 Messages : 254 ![]() |
Bonjour,
Je te propose avant de lancer ton affichage de vérifier que les formules se soient executés. Si une des formules affiche une valeur à la fin des process de calcul automatique, tu peux t'en servir comme condition. Sinon tu peux créer ta propre formule dans un module. Code :
(en plus tu pourrais vérifier que les autres fonctions sont passées avant que Verif s'execute) Et dans ton code de graphe du vérfie la valeur de la cellule nommée "TestFin".. Voila. Ca devrait le faire. |
||
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : mai 2007 Messages : 314 ![]() |
Merci pour ta réponse,
je trouve l’idée inintéressante mais je n'arrive pas a utiliser la fonction et quand je fais des changements et j'actualise les formules rien ne se passe et la fonction '=verif' renvoi #NOM? merci pour votre aide |
|
|
00
|
|
|
#4 | ||
|
Membre régulier
![]() Inscription : janvier 2003 Messages : 254 ![]() |
Bonjour,
J'ai oublié de faire une fonction correcte, qui doit renvoyer une valeur Voilà la correction Code :
verif() étant une fonction que tu dois glisser dans un module de code. (insertion->Module dans VBE) Voilà bonne semaine. |
||
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : mai 2007 Messages : 314 ![]() |
merci
ça ne marche pas ou bien je n'arrive pas a afficher le graphe après l'actualisation des formules est ce que je peux faire quelque chose avec Worksheet_Calculate ?? merci pour votre aide |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : janvier 2003 Messages : 254 ![]() |
Bonjour,
Est ce que tu as bien posé une condition dans ton graphe qui implique la création du graphe une fois qu'une formule a rendu son résultat ? Le Worksheet.calculate peut effectivement forcer le calcul. On peut aussi mettre application.calculation=xlCalculationAutomatic au démarrage de ton code. En souhaitant que cela marche. Sinon soumet nous le code de ton graphe pour voir comment l'activer en fonction d'un résultat extérieur. Bye. |
|
|
00
|
|
|
#7 | ||||||
|
Membre habitué
![]() Inscription : mai 2007 Messages : 314 ![]() |
slt
au fait le graph a actualiser est sur un userform et que j'actualise a partir d'une liste déroulante la fonction 'Verif' est dans lacellule et pointe dans la cellule Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Et si tu fais tout simplement
Avant de tracer ton graph ? |
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : mai 2007 Messages : 314 ![]() |
merci ZebreLoup
non ca ne régle pas le problème des fois le calcul des formules est rapide donc lors de l'affichage du graphe il prend les bonnes données mais des fois le calcule prend un peut plus de temps je ne sais pas pourquoi ??? le graphe prend les données avant actualisation donc lors de l’exécution de le code continu et affiche le graphe en même temps que l'actualisation des formules d'ou le probleme merci pour votre aide !! |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je vais regarder de plus près car il me semblait que ça attendait la fin du recalcul avant de continuer. Tu es bien en mode calcul manuel ?
|
|
|
00
|
|
|
#11 | ||
|
Membre régulier
![]() Inscription : janvier 2003 Messages : 254 ![]() |
As tu essayé en mode debug pour voir comment il se comportait ?
Je n'avais pas compris que tu voulais qu'il y ait une mise à jour en direct de ton UserForm qui restait ouvert. Le application.calculate est une bonne idée. Tu pourrais faire dans le code du UserForm Code :
|
||
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je viens de vérifier chez moi, si tu es en mode calcul manuel, le code VBA attend bien la fin du calcul lancé par Application.Calculate pour continuer à s'exécuter. Tu lances bien le calcul au bon moment ? (Après avoir modifier toutes les valeurs dont dépendent les calculs).
@comme de bien entendu : Je ne comprends pas bien ce que tu proposes. Tester une valeur pour savoir si le calcul est terminé pourrait être une solution mais il faudrait savoir à l'avance le résultat qu'on attend dans la cellule et être sûr que ce soit la dernière valeur calculée. Ca doit être faisable mais je ne pense pas que ce soit nécessaire, c'est un peu l'artillerie lourde. Et en tout cas boucler sur un Application.Calculate au mieux ne marchera pas ou bloquera l'application, au pire fera planter Excel. Il faut d'abord lancer le calcul et ensuite boucler pour attendre le résultat. Même si une fois encore je ne pense pas que ce soit nécessaire. @LaPanic : Tu as l'air d'utiliser pleins de variables globales. Peut-être qu'un code complet ou un fichier exemple pourra nous aider à mieux cerner le problème. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com