Modification d’une multitude de liaisons

Bonjour,

Mes connaissances en VBA étant quasi nulle et la recherche sur le forum n’ayant rien donné de probant, je fais appel à vous.

Je vous explique la situation :

Je souhaite créer un PowerPoint à partir d’un fichier Excel, jusque-là j’ai réussi, si je modifie le .xlsm, le .pptx est modifié à son tour.

Le chemin de mon fichier Excel de base est le suivant :

C:\XXX\AAA\BBB\!Document de base\CCC\Source.xlsm

Celui de mon fichier PowerPoint est le suivant :

C:\XXX\AAA\BBB\!Document de base\XXX - 19 - Compte rendu.pptx

Ces deux fichiers sont ensuite copiés dans un autre dossier pour être modifié pour chaque Entreprise, voici le chemin de celui-ci :

C:\XXX\AAA\BBB\NomDel’entreprise\NomDeLentreprise – Année - Source.xlsm

C:\XXX\AAA\BBB\NomDel’entreprise\NomDeLentreprise – Année - Compte rendu.pptx

Je souhaite donc avoir un moyen de modifier l’ensemble des 50 liaisons de graphique provenant du fichier excel vers le fichier PowerPoint en évitant le fastidieux « modifier la source »*50.

Merci d’avance pour vos réponses, si vous souhaitez plus de précisions n’hésitez pas à me contacter.

Windows 8.1

Excel 2016

Bonjour,

Je suppose que tu as déclaré dans ton code VBA le chemin pour le fichier pptx en variable ?

chemin="C:\XXX\AAA\BBB\!Document de base\"

Le plus simple est de lui dire d'utiliser le même chemin que l'endroit ou se trouvera le fichier "Source"

Dim NOMFICHIER As String
Dim CHEMIN As string
Dim adressemonppt as string

NOMFICHIER = "\Compte rendu.pptx"
CHEMIN=ThisWorkbook.Path

adressemonppt  = CHEMIN + NOMFICHIER

Bonjour,

Je suppose que tu as déclaré dans ton code VBA le chemin pour le fichier pptx en variable ?

chemin="C:\XXX\AAA\BBB\!Document de base\"

Le plus simple est de lui dire d'utiliser le même chemin que l'endroit ou se trouvera le fichier "Source"

Dim NOMFICHIER As String
Dim CHEMIN As string
Dim adressemonppt as string

NOMFICHIER = "\Compte rendu.pptx"
CHEMIN=ThisWorkbook.Path

adressemonppt  = CHEMIN + NOMFICHIER

Merci pour votre réponse !

J'utilisais un code trouvé en cherchant sur internet que je n'ai pas réussis à adapter à mes besoins (J'y vais à tâtons en essayant des choses vu que je m'y connais en codage) mais ton idée me semble simple et efficace.

En sachant que la Source est le fichier Excel, ce ne serait pas plutôt ?

Dim NOMFICHIER As String
Dim CHEMIN As string
Dim adressemonppt as string

NOMFICHIER = "\NomDeLentreprise – Année - Source.xlsm"
CHEMIN=ThisWorkbook.Path

adressemonppt  = CHEMIN + NOMFICHIER

Ce serait donc le code vba à entrer dans mon PowerPoint pour modifier le chemin du fichier source de l'ensemble des liaisons ?

Une piste? => http://tatiak.canalblog.com/archives/2009/12/26/16285626.html

Merci pour ta réponse mais cela me parait trop compliqué au vu de mes connaissances dans le domaine du codage.

Je cherche une solution simple pour modifier l'ensemble des liaisons et les relier à un autre fichier Excel (Source) qui apparaitra dans le même dossier.

En sachant que la Source est le fichier Excel, ce ne serait pas plutôt ?

Dim NOMFICHIER As String
Dim CHEMIN As string
Dim adressemonppt as string

NOMFICHIER = "\NomDeLentreprise – Année - Source.xlsm"
CHEMIN=ThisWorkbook.Path

adressemonppt  = CHEMIN + NOMFICHIER

Ce serait donc le code vba à entrer dans mon PowerPoint pour modifier le chemin du fichier source de l'ensemble des liaisons ?

Je partais du principe que le codage vba se trouvait dans le fichier excel ?

Mais si il est dans le PPTX alors oui faut inverser .

Difficile de deviner exactement sans fichier test comment est réalisé votre code vba

Je me suis peut être mal exprimé, ces documents représentent les documents de base qui sont des documents que l'on copie/colle dans chaque dossier client.

Nous remplissons les données concernant chaque client dans le fichier Excel puis nous devons réaliser une restitution en PowerPoint.

Actuellement nous devons refaire chaque PowerPoint pour chaque client ce qui est une vraie perte de temps.

Ce PowerPoint contient toujours exactement les mêmes graphiques (Collage avec liaisons) provenant de ce fichier Excel, l'idée de modifier les liaisons à la main n'est pas une solution vu qu'il y en a plus d'une cinquantaine.

C'est pourquoi j'aimerai pouvoir changer le chemin de la source des liaisons du powerpoint pour qu'il soit créé automatiquement pour chaque client.

Je ne sais pas si ça vous parait plus clair maintenant, je ne peux malheureusement pas vous montrer quoi que ce soit vu qu'il s'agit de données sensibles soumises au secret professionnel.

Ma problématique se résume à pouvoir changer une multitude de liaisons qui pointent vers le même fichier en automatisant la démarche.

A oui alors là c'est complètement différent

cette phrase m'a induit en erreur :

"Je souhaite créer un PowerPoint à partir d’un fichier Excel, jusque-là j’ai réussi, si je modifie le .xlsm, le .pptx est modifié à son tour."

En fait le power point n'est pas créé à partir d'excel mais contient uniquement des liaisons qui viennent

d'un fichier exel.

Peut-être avec une macro dans le PPT alors

Sub ChgLiaisonOle()

   Dim Slde As Slide, Shpe As Shape, lNucar As Long, sNewFile As String, sFichierOLE As String, sNewOLE As String

   For Each Slde In ActivePresentation.Slides
      For Each Shpe In Slde.Shapes
         If Shpe.Type = msoLinkedOLEObject Then
            sFichierOLE = Mid(Shpe.LinkFormat.SourceFullName, InStrRev(Shpe.LinkFormat.SourceFullName, "\"))
            sNewOLE = Replace(sFichierOLE, "Documentbasesource", "EntrepriseXsource") 'pour le remplacement
            sNewFile = ActivePresentation.Path & sNewOLE
            Shpe.LinkFormat.SourceFullName = sNewFile
         End If
      Next Shpe
   Next Slde
   MsgBox sNewFile
End Sub

Je sentais bien que je m'étais mal exprimé !

En fait le power point n'est pas créé à partir d'excel mais contient uniquement des liaisons qui viennent

d'un fichier exel.

C'est exactement ca.

Merci pour le code, j'essayerai ça ce soir et je vous tiens au courant si cela fonctionne !

Bonjour à tous,

Désolé pour le temps de réponse mais la semaine dernière fut chargée !

Je viens d'essayer la macro et je me heurte à un code erreur:

Erreur d'exécution '-2147467259 (80004005)':

La méthode 'SourceFullName' de l'objet 'LinkFormat a échoué

Bonjour,

d'après tes images précédentes je dirai cette ligne à modifier

sNewOLE = Replace(sFichierOLE, "Documentsdebase Source V10.xlsm", "Entreprise X source V10.xlsm") 'pour le remplacement

il faut bien sur que ce fichier soit déjà existant dans le même répertoire (Entreprise X source V10.xlsm).

J'ai rajouté les "_" dans tous les fichiers dans mes dossiers pour le test

 sNewOLE = Replace(sFichierOLE, "TEST - 1819 - Documentsdebase_Source_V10.xlsm", "XXX - 18 - Entreprise_X_Source_V10.xlsm") 'pour le remplacement

Lorsque l'outil de débogage apparait,

Shpe.LinkFormat.SourceFullName = sNewFile

Apparait en jaune, j'ai donc regardé la cible de Shpe.LinkFormat.sourceFullName et sNewFile

Shpe.LinkFormat.SourceFullName renvoit effectivement à C:\Users\XXX\Desktop\TEST\DocumentsDeBase\TEST - 1819 - Documentsdebase_Source_V10.xlsm cependant sNewFile renvoit à C:\Users\XXX\Desktop\TEST\Entreprise X\TEST - 1819 - Documentsdebase_Source_V10.xlsm alors qu'il devrait renvoyer à C:\Users\Guillaume\Desktop\TEST\Entreprise X\XXX - 18 - Entreprise_X_Source_V10.xlsm

Une idée de la raison ?

Sans fichier difficile de voir mais je ne comprend pas pourquoi il y aurait un répertoire différent

C'est quoi ce nouveau nom de ficjhier : "XXX - 18 - Entreprise_X_Source_V10.xlsm"

à chaque post il est différent un coup avec des espaces un coup avec des tirets

Le nom de la source à changé aussi ?

Essaies de lancer le code avec un point d'arrêt sur next shpe

SNewOLE= --> devrait retourner le nom du nouveau fichier vérifier si pas d'erreur ... "Entreprise

SNewFile = activerprésentation.path donc l'endroit ou ce trouve le ppt + le nouveau nom excel de la base.

Donc déjà là si SNewFile n'est pas à la "bonne adresse" c'est que le PPT n'est pas non plus à cette adresse.

Rechercher des sujets similaires à "modification multitude liaisons"