fredAC
Messages postés2Date d'inscriptionmardi 27 janvier 2009StatutMembreDernière intervention29 janvier 2009
-
27 janv. 2009 à 08:49
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 2010
-
29 janv. 2009 à 01:58
Bonjour,
Je sais que le pb a déjà été posté, mais j'ai vraiment un soucis de rafraichissement de feuille Excel.
En fait, dans la feuille qui pose problème, je n'ai que des formules "=LireData(LIGNE();COLONNE())", et cette fonction VBA va rechercher en auto des données dans d'autres feuilles qui contiennent des Tab croisés dynamiques liés à des requetes SQL
Qd je lance les fonctions 'Calculate' ou 'RefreshAll', il met bien à jour les requetes mais pas mon feuillet principal, car il ne détecte aucune modif
J'ai beau faire 'calculer maintenant' ou meme creer un bouton 'rafraichir', mais rien n'y fait.
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 27 janv. 2009 à 20:41
J'ai une idée, qui vaut ce qu'elle vaut, pour forcer Excel à recalculer une cellule même si les données sous-jacentes n'ont pas changé : c'est de changer sa formule.
Excel est bien obligé d' "exécuter" la formule pour mettre à jour la cellule A, que les données sous-jacentes aient changé ou non, tu crois pas ?
Donc en généralisant cette méthode à toutes les cellules comportant une formule par une boucle For Each, ça devrait tirer Excel de sa torpeur.
On peut pousser le raisonnement plus loin : partant de l'hypothèse que l'accès en écriture à la propriété Formula est suffisant pour qu'Excel rafraîchisse le contenu de la cellule, le code précédent pourrait se résumer à :
fredAC
Messages postés2Date d'inscriptionmardi 27 janvier 2009StatutMembreDernière intervention29 janvier 2009 29 janv. 2009 à 00:21
Salut,
Merci pour vos réponses,
Bonne idée OroHena, j'y avait pensé mais pas encore exploité avant d'avoir vos avis.
Mais c'est Jack qui m'a mis sur la piste. En effet, comme mon feuillet est considéré comme 'Propre', Excel ne le recalcule pas, meme avec la fonction 'Calculate'.
J'appelle la méthode 'Dirty ' qui 'salit' la feuille et lui permet de se recalculer.
Grand merci jack et mention particulière à Orohena pour les bons conseils
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 29 janv. 2009 à 01:58
La méthode Dirty, je n'y aurais jamais pensé. C'est bon à savoir pour recalculer un Worksheet.
Bravo encore une fois, Jack . Si tu sais pas où passer tes prochaines vacances, je connais une petite île avec plein de jolies demoiselles mais, hélas, sans Internet .
Amicalement
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 27 janv. 2009 à 09:12
Salut
Et quel est ton problème ?
Est-ce parce qu'il ne te demande pas de sauvegarder avant de quitter ?
Recherche parmi tes macros s'il y aurait le mot "dirty" : en le passant à False, la feuille est considérée comme propre, c'est à dire sans besoin d'enregistrement.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)