Liaisons pwpt - Excel

gui

XLDnaute Nouveau
Bonjour à tous,

Je poste un petit message n'ayant pas encore trouvé de solutions à un problème de liaisons entre Excel et Pwpt.

J'ai un fichier excel dans lequel se trouvent des graphiques et tableaux. Je les ai liées à mon fichier powerpoint, jusque là pas de problème. A chaque modification j'actualisais les liens et tout se passait bien.

J'ai eu la "brillante" idée de déplacer mon fichier excel sur un autre disque. Du coup les liens ne s'actualisent plus puisque le fichier est introuvable pour powerpoint. En allant sur "prepare - Edit links" tout mes liens sont effectivement vers l'ancien emplacement.

Le problème c'est qu'il existe un lien par graphique/tableau (alors que la source est identique) et je me vois obliger de changer manuellement tout ces liens (en leur indiquant le bon emplacement).

N'y a t-il pas un moyen de changer seulement le fichier source, ou de changer tous les liens en même temps ?
Ca me parait étrange que ça n'existe pas,

Merci d'avance pour votre aide,

Guillaume
 

PMO2

XLDnaute Accro
Re : Liaisons pwpt - Excel

Bonjour,

Une piste avec la démarche suivante.

1) Faites une copie de votre PPT
2) Copiez y le code suivant
Code:
Sub ChangerLiaisonsOLElinked()

'### Constante à adapter (nouveau chemin et/ou nouveau nom du classeur source) ###
Const NEW_PATH As String = "c:\1111base PPT.xls"
'#################################################################################

Dim SL As Slide
Dim SH As Shape
Dim LF As LinkFormat
Dim A$
Dim PathLink$
Dim ClasseurSource$
Dim OleObjectRefer$
Dim NewClasseur$
'---
For Each SL In ActivePresentation.Slides
  For Each SH In SL.Shapes
    If SH.Type = msoLinkedOLEObject Then
      Set LF = SH.LinkFormat
      '--- Source actuelle ---
      A$ = LF.SourceFullName
        '°°° Le chemin du classeur source °°°
      PathLink$ = Mid(A$, 1, InStr(1, A$, "!") - 1)
        '°°° Le classeur source °°°
      If InStr(1, A$, "[") > 0 Then
        ClasseurSource$ = Mid(A$, InStr(1, A$, "[") + 1)
        ClasseurSource$ = Mid(ClasseurSource$, 1, InStr(1, ClasseurSource$, "]") - 1)
      End If
        '°°° L'objet source (graphique, tableau, ...) °°°
      OleObjectRefer$ = Mid(A$, Len(PathLink$) + 1)
      '--- Nouvelle source (classeur source et objet source) ---
      If InStr(1, A$, "[") > 0 Then
        NewClasseur$ = Mid(NEW_PATH, InStrRev(NEW_PATH, "\") + 1)
        OleObjectRefer$ = Replace(OleObjectRefer$, ClasseurSource$, NewClasseur$)
      End If
      LF.SourceFullName = NEW_PATH & OleObjectRefer$
      LF.Update
    End If
  Next SH
Next SL
End Sub
3) Adaptez la constante Const NEW_PATH par le chemin et nom du classeur Excel source concerné
4) Lancez la Sub ChangerLiaisonsOLElinked
 

m@rina

XLDnaute Nouveau
Re : Liaisons pwpt - Excel

Bonjour,

Pour commencer, il faut vraiment éviter de faire des liens entre des fichiers issus de versions différentes. Donc, commence par enregistrer ton fichier Excel au format xlsx. Office n'aime pas bien les mélanges.

Ensuite, envoie les deux fichiers zippés. A l'ouverture, les liens se mettront d'aplomb. Si l'un des documents est ensuite déplacé, tu peux prévoir cette macro ici qui remet à jour les liens à l'ouverture.

Liens relatifs

Ne pas perdre de vu que la mise à jour des liens prendra à chaque fois un certain temps car il y en a pas mal.

Cela étant, je ne comprends pas ta démarche. Le contenu des deux fichiers (Word et Excel) est identique. Quel intérêt de faire ça ? C'est lourd et source d'erreur à cause des trop nombreux liens. Pourquoi aller saisir les infos dans le tableau Excel des données à récupérer dans Word, avec exactement la même préentation ?

Au pire des cas, faire un seul lien de tout le tableau Excel vers Word. Je dirais même que ce serait mieux d'incorporer le fichier Excel dans le fichier Word, ce qui éviterait d'avoir deux fichiers avec toutes ces histoires de liens.

m@rina
 

Discussions similaires

Réponses
8
Affichages
285

Statistiques des forums

Discussions
312 416
Messages
2 088 247
Membres
103 784
dernier inscrit
Métro-logue