Équivalent de la touche F9 dans une macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonsoir, ou plutôt bonjour,

Je suis confronté à un petit problème de ce que l'on pourrait appeler "actualisation d'une feuille".

Comment, dans une macro, forcer à ce que le contenu de la feuille se mette automatiquement à jour ?
La macro se déroule bien dans un premier temps, mais le contenu de la feuille ne s'adapte pas aux modifications qui découlent de la macro.
J'appuie sur la touche F9 et la feuille s'actualise.

J'ai bien essayé de finir la macro par :
ActiveSheet.Calculate

... mais sans succés.

Peut-être que l'un d'entre-vous connaît la réponse à cette énigme.

En vous remerciant d'avance.
 
Re : Équivalent de la touche F9 dans une macro

Bonsoir Magic_Doctor, le fil,

A tout hasard, essaye le code suivant :
Code:
    Application.MaxChange = 0.001
    ActiveWorkbook.PrecisionAsDisplayed = False
    Calculate

A la place de :
Code:
ActiveSheet.Calculate

Bonne fin de WE
 
Re : Équivalent de la touche F9 dans une macro

Bonjour Magic Doctor, Excel lent 🙂,
Si je me rappelle bien tes précédents posts, tu utilises pas mal de fonction VBA. Tes fonctions ont-elles toutes un
Code:
Application.Volatile
qui les faits recalculer ?
Buenas tardes 😎
 
Re : Équivalent de la touche F9 dans une macro

Bonjour,

Pourtant c'est bien update.
Tu n'aurais pas oublié de remettre application.screenupdating=true ?
Je me doute que oui mais ça me permettra de suivre les réponse ;-)
eric
 
Re : Équivalent de la touche F9 dans une macro

Bonjour tout le monde, bonjour JNP,

Effectivement ma feuille est truffée de fonctions VBA (une bonne quinzaine...). On s'enquiquine à rédiger une fonction, mais que c'est pratique et simple d'usage par la suite !!
J'avais déjà vu cet "Application.Volatile" et, dubitatif, me demandais ce que ça pouvait bien signifier.
Aucune des fonctions contient en effet cette sentence.
J'ai donc suivi le conseil de JNP et placé cette sentence ainsi (pour l'une des fonctions) :

Function PromedioGlicemias(NomPlage As String, Optional JourSemaine As Integer = 0) As Variant

Application.Volatile

blablabla

End Function

Malheureusement ça ne marche toujours pas.

-----------------------------------------------------------------

J'explique plus en détail le problème.

J'ai une ComboBox à laquelle correspond une série d'items qui apparaissent évidemment dans la liste déroulante et une cellule où apparaît l'item choisi dans ladite liste.
Jusque là je pense que tout est clair. Toutes les CombBox fonctionnent ainsi.
Suivant les événements, certains items disparaissent. Pour éviter que dans la liste de la ComboBox il y ait des vides entre les items j'ai donc dû trouver une astuce.
Dans une deuxième colonne seuls les items qui n'ont pas disparu apparaissent sans blancs entre eux évidemment. La ComboBox récupère en fait les items de cette 2ème colonne, et sa longueur s'adapte automatiquement au nombre d'items (toujours pour qu'il n'y ait pas de blancs).
Jusqu'à présent tout fonctionne bien.
Supposons que mes items soient :
matin
midi
soir

Je choisis par exemple "midi" et toute une série de calculs via FONCTIONS se font en fonction du paramètre "midi".

Par la suite il se trouve que l'item "midi" disparaît. Dans la liste déroulante j'aurai en conséquence :
matin
soir

Le problème est qu'est toujours affiché "midi" dans la ComboBox, puisque c'était le dernier item choisi. Pour contourner le problème, quand un item doit disparaître, je copie le premier item de la 2ème colonne (celle qui s'actualise en permanence en fonction des événements) et, par un collage spécial (---> uniquement valeurs), le colle dans la cellule où est inscrit l'item choisi dans la ComboBox.
Évidemment ce copié-collé se fait automatiquement par macro :

[W23].Copy '1er item de la 2ème colonne ---> liste déroulante
[W22].Select 'cellule où est récupéré l'item sélectionné dans la liste déroulante
Selection.PasteSpecial Paste:=xlPasteValues

Ça marche : dans la ComboBox apparaît le 1er item de la liste actualisée.
Le problème, et pas des moindres, est que les fonctions ne s'actualisent pas et dans toutes les cellules qui leur correspond apparaît un message d'erreur. Je choisi en autre item dans la ComboBox et toutes les fonctions se remettent à marcher.

Je ne sais pas si j'ai été très clair...???...

J'aurais bien voulu vous adresser ma feuille, le problème est qu'elle dépasse largement les 48,2 Ko auxquels on a droit.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour