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.