Lien depuis cellule Excel

Fermé
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 - 16 juil. 2020 à 17:27
m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 - 20 juil. 2020 à 16:13
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 ?
A voir également:

6 réponses

m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
16 juil. 2020 à 18:33
Bonjour,

Peux-tu être plus clair ? Je n'ai pas compris ce que tu veux faire...

m@rina
0
F60lebaladinverni
16 juil. 2020 à 19:09
Bonjour,

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 ») ?
0
m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
16 juil. 2020 à 19:48
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
0
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
Modifié le 17 juil. 2020 à 09:11
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
0
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2 > F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023
17 juil. 2020 à 09:39
Pour le VBA, j'ai trouvé ce code sur le web que j'ai mis dans la macro sur PPT
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.
0
m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
17 juil. 2020 à 18:12
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.

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

0
F60lebaladinverni
17 juil. 2020 à 20:09
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
0
F60lebaladinverni
17 juil. 2020 à 23:06
A oui, autre question qui me vient : quand c’est écrit dans le code « = Range(«A1») », a aucun moment on précise à quel classeur Excel ça fait référence ... comment le code vba le saurait ?
Où il faut « lier » ce classeur Excel à la présentation power point au préalable ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
18 juil. 2020 à 00:23
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
0
m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
20 juil. 2020 à 00:18
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
0
F60lebaladinverni Messages postés 126 Date d'inscription samedi 28 janvier 2017 Statut Membre Dernière intervention 7 avril 2023 2
20 juil. 2020 à 09:40
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 :
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.

0
m@rina Messages postés 20169 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 6 mai 2024 11 278
20 juil. 2020 à 16:13
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 :
.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
0