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.