Accepter les liaisons automatiquement

  • Initiateur de la discussion thierry13
  • Date de début
T

thierry13

Guest
A l'ouverture d'un classeur, du fait de nombreuses liaisons externes, EXCEL demande systématiquement si l'on souhaite activer les liaisons... Je voudrais pouvoir gérer la réponse positive à cette question par macro, est-ce possible ?
 
T

thierry13

Guest
Oups... Désolé de n'avoir pas mis la solution trouvée...

Private Sub Workbook_Open()
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
End Sub

ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources fonctionne si les feuilles de calcul ne sont pas protégées, faute de quoi il faut les déprotéger avant de lancer l'Update, puis les protéger de nouveau...

A la première ouverture du classeur, la question Mettre à jour est posée, il faut répondre 'Oui', ensuite elle n'est plus posée...

Voilà, ma solution vaut ce qu'elle vaut, mais elle fonctionne :)

PS : Encore désolé de n'avoir pas posté la soluce !
 
@

@+Thierry

Guest
Bonjour Thierry13, Jean-Marie et le Forum

C'est très gentil de faire partager ta solution Thierry, et je t'en remercie, ceci a pour l'avantage de faire avancer tout le monde... Et dans certains cas de corriger une erreur de concept, ce qui est le cas aujourd'hui...

En effet : Attention !!! la solution qui consiste à mettre :
Application.AskToUpdateLinks = False

Doit être absolument restaurée à True car c'est une paramétrage permanent et global d'Excel et si tu laisses ceci à False, Excel ne demandera plus dans le futur de mettre à jour les liens quelque soit le classeur... Ce qui peut-être extrèmement génant...

En prime ta solution est un leurre, car en fait c'est trop tard dans l'évènement ThisWorkBook "Private Sub Workbook_Open"... En fait çà te donne l'illusion de fonctionner car tu as donc virer l'option dans les paramètres globaux d'Excel comme expliqué ci-dessus...

Option qui d'ailleurs peut se faire manuellement car cette commande VBA équivaut en fait à aller dans :
=> Excel => Menu / Outils / Options / Onglet : "Edition" ("Modification")
=> Case à cocher "Ask to update automatic links" ("Confirmation de la mise à jour automatique des liens") non cochée.)

Donc Non ce n'est pas une solution VBA..... C'est juste un paramètre global d'Excel pour tous les Classeurs donc inutile de mettre çà dans ThisWorkBook de chacun...

Pour Conclure et afin de n'induire personne en erreur: Attention à tous ceux/celles qui chercheraient une solution et qui tomberaient sur ce fil[/b]

Non la seule méthode que je connaisse est celle décrite dans ce fil de discussion (à moins que quelqu'un en connaisse une autre)

Bon Dimanche à tous et toutes
@+Thierry
 
T

thierry13

Guest
Je suis au grand regret de constater que tu as raison (le contraire m'aurait quand même étonné, vu mon niveau en VBA :) !)

Le pb que j'avais avec le lien que tu cites est la fermeture du classeur...

En effet l'AutoOpen fonctionne parfaitement et lance le classeur B avec toutes les liaisons, qui lui, à son tour, ouvre les différents classeurs nécessaires au fonctionnement de l'appli.

Le pb est que c'est ce classeur B qui intègre une fermeture de tous les classeurs ouverts avec sauvegarde automatique de toutes les données, ne peut fermer le classeur AutoOpen (l'indice ne fait pas partie de la sélection)

Dès lors, comment dois-je faire pour fermer ce classeur ?

A part de tout cela...

La macro ci-dessous permet d'ouvrir le classeur B qui a un emplacement ne pouvant être défini en 'dur' car le user détermine lui-même le répertoire d'installation...

Private Sub Workbook_Open()
'Définition du Répertoire
Chemin = ActiveWorkbook.Path
Application.DefaultFilePath = Chemin
'Ouvrir classeur
Workbooks.Open "B.xls", 3
 
T

thierry13

Guest
C'est bon, je n'ai rien dit... J'avais oublié ce que tu as écrit hier, cher homonyme, savoir :

Sub Quitter()
Dim WB As Workbook
For Each WB In Workbooks
If Not WB Is ThisWorkbook Then WB.Close True
Next WB
ActiveWindow.DisplayWorkbookTabs = True
Application.ShowWindowsInTaskbar = True
Application.DisplayAlerts = True
Application.AskToUpdateLinks = True

Application.Quit
ThisWorkbook.Close True
End Sub

Dans le classeur AutoOpen, et non pas dans le classeur B !!!
Et là, tout fonctionne parfaitement (enfin, tout du moins comme je le souhaite :)
 
@

@+Thierry

Guest
Re bonjour Thierry13, Jean Marie, le Forum

Huum !! J'ai l'impression que tu te mélanges les pinceaux avec le fil d'hier soir Lien supprimé

Car dans ce fil de discussion le lien que je cites est Faire les mises à jour entre fichiers, qui montre donc les solutions trouvées pour établir ou nom les liaisons (avec ou sans message)...

Donc je ne comprends pas ta phrase "Le pb que j'avais avec le lien que tu cites est la fermeture du classeur..."

Enfin l'important est que tu t'en soies sorti !! LoL !!!

Bonne fin de Journée
@+Thierry
 

Discussions similaires

Réponses
6
Affichages
310
Réponses
4
Affichages
309

Statistiques des forums

Discussions
312 152
Messages
2 085 797
Membres
102 978
dernier inscrit
bkarbet