Recalcul automatique par macro qui ne fonctionne pas

Bonsoir.

Je rencontre des difficultés avec la commande ou l'instruction ".Calculate". Dans une de mes feuilles de calcul, il y a des cellules pour lesquelles des fonctions ont été définies. J'utilise une macro commande associée à un bouton qui me permet de demander de calculer de nouveau l'ensemble de ces cellules. En effet, mon fichier étant très volumineux, le calcul automatique devenait problématique ce qui a amené à le désactiver et à basculer sur le calcul manuel (et l'usage de la touche F9 lorsqu'il est nécessaire de tout recalculer). Cependant, cette solution n'était pas satisfaisante non plus car elle demande à recalculer tout le fichier, ce qui est très long actuellement (environ 20 minutes). C'est pourquoi j'en suis venu à utiliser l'instruction ".Calculate" pour me permettre de calculer de nouveau certaines cellules seulement.

Quel est donc mon problème ? Lorsque j'appuie sur le bouton associée à la macro commande qui permet de calculer de nouveau les cellules choisies, elles prennent chacune la valeur "#NOM?". J'ai beau appuyer de nouveau sur le bouton, rien n'y fait, cela ne change rien. En revanche, si je me positionne sur une cellule, que j'appuie sur "F2" puis sur "Entrée", la cellule affiche le résultat de la formule, à la suite de quoi en appuyant sur mon bouton (qui lance l'instruction ".Calculate" sur ces cellules), toutes les autres cellules font de même et affichent le résultat de leurs formules.

Je voudrais ne plus avoir à appuyer "F2" puis "Entrée" pour l'une des cellules pour pouvoir mettre à jour le contenu des autres. À cette fin, j'ai tenté d'utiliser l'instruction ".SendKeys" pour l'une des cellules (j'ai essayé toutes les possibilités d'écriture des arguments), mais je me suis heurté à de multiples erreurs d'exécution de la macro.

En désespoir de cause, je me tourne vers vous. Je sais bien qu'il faut en général joindre un petit fichier, ce que j'ai fait dans mes autres fils de discussions, mais pour celui-ci, je me suis dit que cela n'était pas forcément nécessaire. Toutes mes excuses par avance si je suis dans l'erreur et merci pour votre aide.

Bonsoir

Pas sur de ma réponse

Au début de tes fonctions personnalisées rajoute

Application.Volatile

Mais c'est peut-être fait

Pas d'autre idée en tout cas

Merci pour cette réponse. Je viens de faire les modifications en ajoutant l'instruction au début de chacune de mes fonctions, mais cela n'a pas eu d'effet. Je dois toujours faire "F2" puis "Entrée" pour l'une des cellules, et ensuite la macro fait correctement le calcul et "#NOM?" disparaît des cellules, remplacé par le résultat issu de l'évaluation de la formule.

D'après mes recherches sur internet, il semblerait que cela puisse être lié au fait que l'instruction ".Calculate" ne fonctionne que si un contenu a changé et pour lui signifier ce changement, il faut faire "F2" puis "Entrée" sur une cellule. Je l'avais lu sur un fil de discussion, mais je n'arrive plus à le retrouver. Si je remets la main dessus, je vous mettrai le lien.

La recherche d'une solution continue.

Bonsoir

En complément une copie de l'aide

Cette méthode marque comme volatile une fonction personnalisée. Une fonction volatile doit être recalculée chaque fois qu'un calcul est effectué dans une cellule quelconque de la feuille de calcul. Une fonction non volatile n'est recalculée qu'en cas de changement des variables d'entrée. Cette méthode est sans effet si elle ne se trouve pas à l'intérieur d'une fonction définie par l'utilisateur utilisée pour calculer une cellule de feuille de calcul.

A la place de F2 + Entrée essayes dans une cellule vide : Suppr (Del)

Bonjour,

Je gère moi aussi le calcul à la place d'excel sur des applications lourdes.

J'ai souvent réglé mes problèmes de recalculs avec ça à l'ouverture du classeur :

Private Sub Workbook_Open()
    Application.CalculateFull
    'ou
    Application.CalculateFullRebuild
End Sub
Rechercher des sujets similaires à "recalcul automatique macro qui fonctionne pas"