Ne pas màj les liaisons à l'ouverture de fichier avec VBA 2010
cs_Soun77
Messages postés8Date d'inscriptionjeudi 25 mars 2010StatutMembreDernière intervention12 septembre 2013
-
10 sept. 2013 à 16:00
jordane45
Messages postés38109Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention28 mars 2024
-
12 sept. 2013 à 14:26
Bonjour,
J'ai créé une macro il y a quelques années sous Office 2007. Depuis je l'utilise mensuellement sans problème.
Seulement, depuis que je suis passée sous Excel 2010, l'instruction "application.displayalerts" que j'utilisais pour ne pas avoir de demande de mise à jour à l'ouverture de fichiers ne fonctionne plus...
Quelqu'un aurait une idée ?
Sachant que la macro crée 100 fichiers avec des liaisons, les sauve, les ferme, fait d'autres choses, puis réouvre ces 100 fichiers... C'est à ce moment que je craque en cliquant 100 fois sur "ne pas mettre à jour"!
Un grand merci d'avance !!!
A voir également:
Ne pas màj les liaisons à l'ouverture de fichier avec VBA 2010
Bonjour,
Je ne crois pas que (comme supposé) l'absence de cet affichage résultait de l'utilisation, à False, de la propriété DisplayAlerts.
Il est par contre assez vraisemblable qu'avait tout simplement été décochée (dans les options de Excel) la case ad hoc correspondante.
C'est ce que fait d'ailleurs (elle décoche) l'instruction proposée par jordane45, que je salue au passage.
Attention, cependant : l'éthique impose, si l'appli doit être distribuée :
- de relever la valeur de cette propriété avant de la modifier
- de le restituer in fine
A ne pas procéder ainsi, on s'expose aux foudres éventuelles de l'utilisateur final.
Même ainsi : cette propriété concerne l'Application. Seront donc "touchées" toutes les applis Excel ouvertes alors que l'est celle exécutant cette instruction. ===>>> Le "client" pourrait ne pas "apprécier" ce "forcing".
cs_Soun77
Messages postés8Date d'inscriptionjeudi 25 mars 2010StatutMembreDernière intervention12 septembre 2013 12 sept. 2013 à 12:05
Un grand Merci Jordane ! Cela fonctionne !!!
Ucfoutu,
Je ne sais pas où se trouve cette fameuse case dans 2010, mais si tu as raison, elle est décochée de base... car je ne suis pas aller la décocher.
Pas d'inquiétude à avoir quant aux documents que j'envoie : au moment de leur création, ils contiennent des liaisons, pour des raisons d'efficacité, je les ferme, puis les ré-ouvre pour modifier les sources et rompre ces liaisons... Aucune instruction ni liaison chez le client final! of course!
Merci à vous
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 12 sept. 2013 à 13:27
"Je ne sais pas où se trouve cette fameuse case dans 2010, mais si tu as raison, elle est décochée de base... car je ne suis pas aller la décocher."
Euh ... Tu l'as précisément décochée en exécutant la ligne de code de jordane45, pardi (relis ce que j'en ai dit plus haut). !
cs_Soun77
Messages postés8Date d'inscriptionjeudi 25 mars 2010StatutMembreDernière intervention12 septembre 2013 12 sept. 2013 à 13:37
Ok, je n'avais pas compris... Et je suis très étonnée qu'une instruction donnée dans le cadre de l'ouverture d'un fichier en particulier modifie les options générales d'Excel... En conséquence, tu devines mes nouvelles questions : comment relever la valeur d'origine de la propriété, et la restituer ?
Merci !!
jordane45
Messages postés38109Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention28 mars 2024344 12 sept. 2013 à 13:38
Je ne sais pas où se trouve cette fameuse case dans 2010
Dans les options / Options avancées / Lors du calcul de ce Classeur, il y a la case :
Mettre à jour les liaisons vers d'autres documents.
Pour rassurer Ucfoutu (que je salue au passage :-) ), il te suffit de mettre à FALSE la commande que je t'ai donné au lancement de ton programme, puis de la remettre à sa valeur initiale une fois le travail terminé (ce qu'Ufoutu t'avait indiqué dans un message précédent ^^ )
Exemple :
Sub test()
'Valeur initiale
ValUpdateLinks = Application.AskToUpdateLinks
'passage à false
Application.AskToUpdateLinks = False
'......
' traitements à effectuer
'...
'Remise à sa valeur initiale
Application.AskToUpdateLinks = ValUpdateLinks
End Sub
Modifié par ucfoutu le 10/09/2013 à 19:04
Je ne crois pas que (comme supposé) l'absence de cet affichage résultait de l'utilisation, à False, de la propriété DisplayAlerts.
Il est par contre assez vraisemblable qu'avait tout simplement été décochée (dans les options de Excel) la case ad hoc correspondante.
C'est ce que fait d'ailleurs (elle décoche) l'instruction proposée par jordane45, que je salue au passage.
Attention, cependant : l'éthique impose, si l'appli doit être distribuée :
- de relever la valeur de cette propriété avant de la modifier
- de le restituer in fine
A ne pas procéder ainsi, on s'expose aux foudres éventuelles de l'utilisateur final.
Même ainsi : cette propriété concerne l'Application. Seront donc "touchées" toutes les applis Excel ouvertes alors que l'est celle exécutant cette instruction. ===>>> Le "client" pourrait ne pas "apprécier" ce "forcing".
12 sept. 2013 à 12:05
Ucfoutu,
Je ne sais pas où se trouve cette fameuse case dans 2010, mais si tu as raison, elle est décochée de base... car je ne suis pas aller la décocher.
Pas d'inquiétude à avoir quant aux documents que j'envoie : au moment de leur création, ils contiennent des liaisons, pour des raisons d'efficacité, je les ferme, puis les ré-ouvre pour modifier les sources et rompre ces liaisons... Aucune instruction ni liaison chez le client final! of course!
Merci à vous
12 sept. 2013 à 13:27
Euh ... Tu l'as précisément décochée en exécutant la ligne de code de jordane45, pardi (relis ce que j'en ai dit plus haut). !
12 sept. 2013 à 13:37
Merci !!
12 sept. 2013 à 13:38
Dans les options / Options avancées / Lors du calcul de ce Classeur, il y a la case :
Mettre à jour les liaisons vers d'autres documents.
Pour rassurer Ucfoutu (que je salue au passage :-) ), il te suffit de mettre à FALSE la commande que je t'ai donné au lancement de ton programme, puis de la remettre à sa valeur initiale une fois le travail terminé (ce qu'Ufoutu t'avait indiqué dans un message précédent ^^ )
Exemple :