Lien depuis cellule Excel
F60lebaladinverni
Messages postés
128
Date d'inscription
Statut
Membre
Dernière intervention
-
m@rina Messages postés 23911 Date d'inscription Statut Contributeur Dernière intervention -
m@rina Messages postés 23911 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai une présentation PowerPoint.
Est-ce que je peux écrire le nom du dossier dans la cellule A1 d'un fichier Excel et que ça se change automatiquement dans mon PowerPoint et que je puisse choisir la mise en forme dans le PPT ?
J'ai une présentation PowerPoint.
Est-ce que je peux écrire le nom du dossier dans la cellule A1 d'un fichier Excel et que ça se change automatiquement dans mon PowerPoint et que je puisse choisir la mise en forme dans le PPT ?
A voir également:
- Lien depuis cellule Excel
- Lien url - Guide
- Excel cellule couleur si condition texte - Guide
- Créer un lien pour partager des photos - Guide
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
6 réponses
Bonjour,
Sans macroter, il faut que tu copies ta cellule et tu la colles avec lien (onglet Accueil, bouton Coller => Collage spécial => Coller le lien). La mise à jour est automatique.
Pour la mise en form;e, c'est limité avec PowerPoint... Tu pourras mettre un contour, avec la couleur et l'épaisseur de ton choix. Si ta cellule Excel n'a pas de fond de couleur, tu pourras en mettre un dans PowerPoint (Format de la forme). En revanche, tu ne pourras pas changer la police, mais tu pourras agrandir la forme, et la police s'agrandira également.
Tes modifs de mise en forme resteront après mise à jour.
m@rina
Sans macroter, il faut que tu copies ta cellule et tu la colles avec lien (onglet Accueil, bouton Coller => Collage spécial => Coller le lien). La mise à jour est automatique.
Pour la mise en form;e, c'est limité avec PowerPoint... Tu pourras mettre un contour, avec la couleur et l'épaisseur de ton choix. Si ta cellule Excel n'a pas de fond de couleur, tu pourras en mettre un dans PowerPoint (Format de la forme). En revanche, tu ne pourras pas changer la police, mais tu pourras agrandir la forme, et la police s'agrandira également.
Tes modifs de mise en forme resteront après mise à jour.
m@rina
Bonjour et merci pour ta réponse.
Je connais déjà cette version mais comme tu dis, la mise en forme est limitée...
voici en photo ce que ça fait : j'ai collé "avec lien" par dessus une zone de texte bleu.
Je n'arrive pas à retirer le contour même si dans Excel, je mets "sans contour".
Avez-vous une solution peut-être avec macro ? je connais un peu avec Excel et je pense que je saurai adapter :)
Merci

Je connais déjà cette version mais comme tu dis, la mise en forme est limitée...
voici en photo ce que ça fait : j'ai collé "avec lien" par dessus une zone de texte bleu.
Je n'arrive pas à retirer le contour même si dans Excel, je mets "sans contour".
Avez-vous une solution peut-être avec macro ? je connais un peu avec Excel et je pense que je saurai adapter :)
Merci
Pour le VBA, j'ai trouvé ce code sur le web que j'ai mis dans la macro sur PPT
J'ai par contre une erreur sur cette ligne :
Après je trouve ça normal car il ne sait pas dans quel classeur Excel chercher l'information.

Sub ModifierPresentationExistante() Dim PptApp As PowerPoint.Application Dim PptDoc As PowerPoint.Presentation Set PptApp = CreateObject("Powerpoint.Application") PptApp.Visible = True Set PptDoc = PptApp.Presentations.Open("C:\Users\flavien\Desktop\Restitution_type_v2.ppt") With PptDoc 'insère le contenu de la cellule A1 dans la deuxième zone de texte, 'du 3eme slide .Slides(1).Shapes(1).TextFrame.TextRange.Text = Range("A1") 'sauvegarde la présentation .Save End With 'ferme la présentation PptDoc.Close 'ferme powerpoint PptApp.Quit End Sub
J'ai par contre une erreur sur cette ligne :
.Slides(1).Shapes(1).TextFrame.TextRange.Text = Range("A1")
Après je trouve ça normal car il ne sait pas dans quel classeur Excel chercher l'information.
Bonjour,
Je ne pense pas que l'erreur se situe au niveau de Range.
Vérifie dans ta présentation PPT ce qu'est Slides(1).Shapes(1)...
Dans PowerPoint, tout est Shape. Si le Shapes(1) est une photo par exemple, ça va provoquer une erreur.
Par ailleurs, si tu veux que la màj se fasse automatique dans ton PowerPoint dès que tu modifies la cellule, il faut faire une macro événementielle.
Essaie de mettre ça dans la feuille en question et non pas dans un module. La macro se lancera automatiquement lorsque tu modfieras la valeur de la cellule A1.
Tu remarqueras que je n'utilise pas Open mais GetObject qui n'ouvre pas la présentation car a priori tu n'en n'as pas besoin car tu l'ouvres, et tu la fermes...
Par ailleurs, avec Open, au cas où la présentation serait ouverte, ça posera problème car PowerPoint ouvrirait une deuxième fois la présentation qui serait alors en lecture seule.
m@rina
Je ne pense pas que l'erreur se situe au niveau de Range.
Vérifie dans ta présentation PPT ce qu'est Slides(1).Shapes(1)...
Dans PowerPoint, tout est Shape. Si le Shapes(1) est une photo par exemple, ça va provoquer une erreur.
Par ailleurs, si tu veux que la màj se fasse automatique dans ton PowerPoint dès que tu modifies la cellule, il faut faire une macro événementielle.
Essaie de mettre ça dans la feuille en question et non pas dans un module. La macro se lancera automatiquement lorsque tu modfieras la valeur de la cellule A1.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PptDoc As Object
Dim texte As String
Set PptDoc = GetObject("C:\xxxx\yyyy.pptx")
texte = Range("A1")
With PptDoc
.Slides(1).Shapes(1).TextFrame.TextRange.Text = texte
.Save
End With
End Sub
Tu remarqueras que je n'utilise pas Open mais GetObject qui n'ouvre pas la présentation car a priori tu n'en n'as pas besoin car tu l'ouvres, et tu la fermes...
Par ailleurs, avec Open, au cas où la présentation serait ouverte, ça posera problème car PowerPoint ouvrirait une deuxième fois la présentation qui serait alors en lecture seule.
m@rina
Merci m@rina pour ta réponse détaillée :)
Alors par contre, je ne pourrai pas faire de test avant lundi car c’est sur mon ordinateur pro désolé... mais j’ai hâte d’essayer :)
Effectivement je te rejoins avec Open à chaque fois ça ouvre en double et en lecture seule ce qui n’est pas terrible.
D’autre part, comme savoir le numéro de ma zone de texte pour le « shapes(x) ? J’ai cherché un paramètre mais je n’ai pas trouvé.
Ou est-ce que je vérifie ce qu’est Shapes(1) 2, 3 etc ... ?
Je pense que tu m’as bien orienté :) hâte de faire le test lundi, je te tiendrai au courant.
Bon week-end
Alors par contre, je ne pourrai pas faire de test avant lundi car c’est sur mon ordinateur pro désolé... mais j’ai hâte d’essayer :)
Effectivement je te rejoins avec Open à chaque fois ça ouvre en double et en lecture seule ce qui n’est pas terrible.
D’autre part, comme savoir le numéro de ma zone de texte pour le « shapes(x) ? J’ai cherché un paramètre mais je n’ai pas trouvé.
Ou est-ce que je vérifie ce qu’est Shapes(1) 2, 3 etc ... ?
Je pense que tu m’as bien orienté :) hâte de faire le test lundi, je te tiendrai au courant.
Bon week-end
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
Alors pour Range("A1") : à partir du moment où tu mets le code dans la page du classeur, il n'y a pas de doute, car c'est une macro événementielle qui va se déclencher lorsque la cellule A1 de cette page de ce classeur sera modifiée. Tu peux faire clic droit sur l'onglet de la feuille => Visualiser le code et c'est à que tu mets ton code.
Tu ne lies pas, puisque (je me répète) c'est juste une macro événementielle.
m@rina
Alors pour Range("A1") : à partir du moment où tu mets le code dans la page du classeur, il n'y a pas de doute, car c'est une macro événementielle qui va se déclencher lorsque la cellule A1 de cette page de ce classeur sera modifiée. Tu peux faire clic droit sur l'onglet de la feuille => Visualiser le code et c'est à que tu mets ton code.
Tu ne lies pas, puisque (je me répète) c'est juste une macro événementielle.
m@rina
Oublié de répondre à ta question concernant les Shapes : le premier de la liste c'est Shapes(1) etc.
Mais, le mieux est de nommer ta zone de texte ou ton espace.
https://faqword.com/index.php/office-et-les-objets-graphiques/1036-comment-connaitre-et-modifier-le-nom-d-un-objet
m@rina
Mais, le mieux est de nommer ta zone de texte ou ton espace.
https://faqword.com/index.php/office-et-les-objets-graphiques/1036-comment-connaitre-et-modifier-le-nom-d-un-objet
m@rina
Bonjour m@rina,
J'ai fait le test et il est concluant !! :)
Tant sur la macro événementielle que sur la Shapes. D'ailleurs à ce propos, je les ai renommé et mon rectangle bleu je l'ai appelé "titre" et et du coup dans ma macro j'ai ceci :
Merci beaucoup pour ton aide
Dernière question avant de clore le sujet si c'est possible :
Dans ma zone de texte je veux écrire :
"NOM DU DOSSIER" (à la ligne)
Compte rendu de notre audit" comme indiqué sur la photo
Y a t il moyen de n'écrire que le nom du dossier dans la cellule A1 et que cela se concatène avec "compte rendu de notre audit" qui est déjà écrit dans le PPT ? Du coup j'ai essayé en écrivant ceci directement dans le code :
ça fonctionne mais bon ...
Je te remercie d'avance.

J'ai fait le test et il est concluant !! :)
Tant sur la macro événementielle que sur la Shapes. D'ailleurs à ce propos, je les ai renommé et mon rectangle bleu je l'ai appelé "titre" et et du coup dans ma macro j'ai ceci :
titre = Range("A1") plan = Range("A2") With PptDoc .Slides(1).Shapes("titre").TextFrame.TextRange.Text = titre .Slides(1).Shapes("plan").TextFrame.TextRange.Text = plan .Save End With
Merci beaucoup pour ton aide
Dernière question avant de clore le sujet si c'est possible :
Dans ma zone de texte je veux écrire :
"NOM DU DOSSIER" (à la ligne)
Compte rendu de notre audit" comme indiqué sur la photo
Y a t il moyen de n'écrire que le nom du dossier dans la cellule A1 et que cela se concatène avec "compte rendu de notre audit" qui est déjà écrit dans le PPT ? Du coup j'ai essayé en écrivant ceci directement dans le code :
With PptDoc .Slides(1).Shapes("titre").TextFrame.TextRange.Text = titre & "Compte rendu de notre audit" .Save End With
ça fonctionne mais bon ...
Je te remercie d'avance.
Bonjour,
Je ne comprends pas ton "mais bon..." :))
Ton code est bon à partir du moment où le texte est toujours ce texte. Il faut juste ajouter un retour paragraphe après le nom du dossier :
Bien sûr tu pourrais récupérer dans la macro ce texte mais ce serait intéressant seulement si ce texte changeait. Auquel cas :
Mais, là, c'est moi qui dis "mais bon..." ! :)
m@rina
Je ne comprends pas ton "mais bon..." :))
Ton code est bon à partir du moment où le texte est toujours ce texte. Il faut juste ajouter un retour paragraphe après le nom du dossier :
.Slides(1).Shapes("titre").TextFrame.TextRange.Text = titre & chr(13) & "Compte rendu de notre audit"
Bien sûr tu pourrais récupérer dans la macro ce texte mais ce serait intéressant seulement si ce texte changeait. Auquel cas :
With PptDoc.Slides(1).Shapes("titre").TextFrame.TextRange
textppt = .Paragraphs(2) 'récup du 2e para
.Text = titre & Chr(13) & textppt
End With
Mais, là, c'est moi qui dis "mais bon..." ! :)
m@rina
J’écris « test » dans la cellule A1 d’un fichier Excel.
J’ai un PPT avec une zone de texte.
Est ce que la zone de texte peut prendre automatiquement la valeur de la cellule A1 (« test ») ?