Excel VBA : fonction indiquant #value au démarrage

Excel VBA : fonction indiquant #value au démarrage - VB/VBA/VBS - Programmation

Marsh Posté le 29-10-2019 à 00:22:58    

Bonjour,
 
J'ai une feuille excel relativement simple, mais j'ai juste eu besoin d'utiliser une fonction personnalisée créée dans VBA.
J'utilise ma feuille, tout fonctionne, tout va bien.  
Il y a des cellules dans la feuille qui ont la fonction, et elles fonctionnent.
 
Par contre, quand je ferme le fichier xlsm et que je le réouvre, tout se met en #value ! Evidemment la feuille ne fonctionne plus.
Pour la refaire marcher, je dois aller dans chaque case où j'ai mis la fonction, et simplement cliquer sur la formule et "entrer" pour forcer la cellule à se recalculer.
Le #value disparait et je dois recommencer ça sur toutes les autres cellules ensuite..
Si je fais glisser à partir d'une première cellule fonctionnelle, cela fonctionne également
 
Comment faire pour résoudre ce problème ?
J'ai essayé de toucher au trust center et de modifier les paramètres des macros : tout accepter, et ça ne résout pas le souci.
 
Merci

Reply

Marsh Posté le 29-10-2019 à 00:22:58   

Reply

Marsh Posté le 19-11-2019 à 08:13:22    

Salut !
 
Est-ce que le mode de calcul est bien sur automatique ?
Ça ressemble à ce qui arrive quand il est sur manuel.
 
Sinon as-tu bien indiqué l'instruction suivante au début de ta fonction ?

Code :
  1. application.volatile


Message édité par jojozekil le 19-11-2019 à 08:13:34

---------------
Le topic de mon feedback ici - Je suis rarement connecté le WE - Mes ventes sont également sur d'autres sites/forums
Reply

Marsh Posté le 19-11-2019 à 18:45:08    

Et oui, on est bien sur automatique, et application.volatile je l'avais rajouté en tentant de débugger mais ça n'a pas marché..
Normalement c'était pas censé être nécessaire.
 
Sinon, je me dis qu'il y a peut-être une couille avec les liens à d'autres classeurs (la macro est entièrement incluse dans ce classeur là, mais sait-on jamais) : comment peut-on facilement voir l'ensemble des liens à d'autres classeurs ?

Reply

Marsh Posté le 27-11-2019 à 13:58:48    

           Bonjour,

 

           quel est le format de fichier du classeur ?


Message édité par Marc L le 27-11-2019 à 14:00:02
Reply

Marsh Posté le 28-11-2019 à 09:11:01    

                     XLSM d'après le premier post.
 
Tu as essayé en essayant d'arriver à quelque chose de plus simple ? (pas de dépendance à des classeurs extérieurs, moins de données...)
Au démarrage la macro semble s'exécuter ?  
Pas moyen de savoir sur quoi elle bloque ?


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 29-11-2019 à 23:53:03    

Bonjour,
 
en mettant un point d'arrêt au début du code de ta fonction personnalisée tu pourrais suivre pas à pas la première exécution et voir où ça coince.
 
Cluedo

Reply

Marsh Posté le 01-12-2019 à 14:13:19    

Je vais essayer de mettre un point d'arrêt, mais vu les symptômes je pense que le poiny d'arrêt ne sera même pas atteint.

Reply

Marsh Posté le 01-12-2019 à 23:59:52    

Le point d'arrêt disparait quand on ferme excel.. donc je ne peux pas faire fonctionner cette méthode de test.
 
Impossible de simplifier l'outil, c'est un truc hyper complexe en soi.
 
J'en reviens à une autre question : est-ce qu'il existe un moyen de lister simplement les dépendances à d'autres classeurs ?
 
Enfin, dans mon cas ça ne devrait pas poser de problème, vu que le classeur est capable de calculer les cellules c'est qu'il a tout ce qu'il lui faut.
Il faudrait juste trouver un moyen de le forcer à tout recalculer.

Reply

Marsh Posté le 02-12-2019 à 14:08:14    

Au lieu d'un point d'arrêt, il suffit d'ajouter une ligne d'arrêt :
Stop


---------------
Cordialement, Patrice
Reply

Marsh Posté le 02-12-2019 à 18:28:42    

Hum..
J'ai mis la ligne stop.
 
Sans surprise : la macro n'est même pas calculée. Le point d'arrêt n'arrête rien du tout.
Le classeur s'ouvre avec toutes mes cases sur "#value"
Et quand je clique sur la formule et que je fais entrée, là on rentre dans le code et on rencontre le point d'arrêt.

Reply

Marsh Posté le 02-12-2019 à 18:28:42   

Reply

Marsh Posté le 04-12-2019 à 16:33:06    

Peut-être :

Code :
  1. Private Sub Worksheet_Activate()
  2.   Application.Calculate
  3. End Sub


---------------
Cordialement, Patrice
Reply

Marsh Posté le 05-12-2019 à 19:35:28    

Toujours pas..

 

Il faudrait peut-être trouver un moyen de réécrire les formules éventuellement au prix d'une macro supplémentaire.

 

Edit : j'ai fait ça, tout simplement.
Range(machintruc).formula = maformule avec la macro
J'ai mis ça dans un workbook_open pour minimiser l'emmerdement.
Et ça marche.

 

Par contre c'est une jambe de bois, je serais vraiment curieux de savoir pourquoi ça déconnait !


Message édité par Laska- le 05-12-2019 à 19:54:35
Reply

Marsh Posté le 06-12-2019 à 15:16:20    

Quelle version d'Excel utilises-tu ?
Je me souviens d'un tel bug avec les premières versions de 2003, qui avais était corrigé par une des mises à jour (KB ?????).
J'utilisais :

Code :
  1. Worksheets("Feuil1" ).UsedRange.Replace What:="=", Replacement:="=", LookAt:=xlPart


Message édité par patrice33740 le 06-12-2019 à 15:18:04

---------------
Cordialement, Patrice
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed