VBASupprimer toute les images d'une slide PPT
RodyRody
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
RodyRody Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
RodyRody Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
Bonjour le forum,
Existe t-il un code VBA pr supprimer depuis Excel toutes les images d'une slide PPT.
Je ne veux pas utiliser de reférence absolue de type
Dim Pptdoc As Powerpoint.Presentation
Pptdoc.Slides(6).Shapes("Picture 9").Delete
car le nom de ma picture variera tous les mois. Ce mois ci c'est (Picture 9) mais le mois prochain ca sera ("Picture X")
Merci d'avance de votre aide
R
Existe t-il un code VBA pr supprimer depuis Excel toutes les images d'une slide PPT.
Je ne veux pas utiliser de reférence absolue de type
Dim Pptdoc As Powerpoint.Presentation
Pptdoc.Slides(6).Shapes("Picture 9").Delete
car le nom de ma picture variera tous les mois. Ce mois ci c'est (Picture 9) mais le mois prochain ca sera ("Picture X")
Merci d'avance de votre aide
R
A voir également:
- VBASupprimer toute les images d'une slide PPT
- Ppt viewer - Télécharger - Présentation
- Des images - Guide
- Ppt en portrait - Guide
- Extraire les images d'un pdf - Guide
- Légender une image - Guide
3 réponses
Bonjour,
Il n'existe pas UN code... le VBA est un langage de programmation, il faut donc l'écrire.
Et pour savoir l'écrire, il faut être précis dans ce qu'on souhaite.
Tu parles d'image à supprimer (shapes).
Mais Shapes c'est un peu tout ce qu'on veut : images, dessins, formes automatiques, en-têtes et pdp, un tableau Excel, etc.
Donc, oui on peut supprimer toutes les "shapes" de la diapo... Mais dans ce cas, autant remplacer la diapo par une diapo vierge !!
Maintenant on peut éventuellement filtrer en fonction de la shape à supprimer.
m@rina
Il n'existe pas UN code... le VBA est un langage de programmation, il faut donc l'écrire.
Et pour savoir l'écrire, il faut être précis dans ce qu'on souhaite.
Tu parles d'image à supprimer (shapes).
Mais Shapes c'est un peu tout ce qu'on veut : images, dessins, formes automatiques, en-têtes et pdp, un tableau Excel, etc.
Donc, oui on peut supprimer toutes les "shapes" de la diapo... Mais dans ce cas, autant remplacer la diapo par une diapo vierge !!
Maintenant on peut éventuellement filtrer en fonction de la shape à supprimer.
m@rina
Bonjour Marina,
Merci de ta réponse. Désolé, je vais essayer d'être plus précis.
Je cherche à automatiser une présentation PPT qui s'actualise tous les mois en fonction d'un fichier excel. Je ne peux pas travailler avec des liens entre excel et PPT parce que ceux ci alourdissent trop la présentation. L'idée est donc de passer par VBA. Une fois que le fichier xls est à jour, j'appuis sur un bouton qui lance une macro qui :
1) Ouvre le PPT
2) Supprime les anciens tableaux
3) Colle avec collage spéciale metafichier elaboré les nouveaux tableaux.
4) Enregistre, puis ferme le nouveau PPT.
Mon problème se trouve sur le point numéro 2. En effet, pour le moment je passe par une référence absolue. Voici le début de mon code
1) => Ouvre le fichier
Set Pptdoc = _
PPT.Presentations.Open("U:\Prive\Finance Team\Rodrigo\Automatisation des présentations\PEMJP_pres\Rapport Mensuel_04-2012.ppt")
2) =>Supprime les anciens tableaux
ptdoc.Slides(6).Shapes("Picture 9").Delete
3=>Colle avec collage spéciale metafichier elaboré les nouveaux tableaux.
Sheets("ITC_Periodic").Range("A13:BR32").Copy
Pptdoc.Slides(6).Shapes.PasteSpecial ppPasteEnhancedMetafile
Le souci est qu'une fois que la macro a supprimé Picture 9 et a recollé le tableau, son nom PPT change et devient Picture 10.
Je voulais contourner le problème en écrivant une ligne de code qui demande à PPT de supprimer toutes les images de la slide 6 afin de ne pas avoir à modifier le code à chaque update.
Si je supprime la diapo est la remplace par une vierge je devrais réécrire le titre.
J'espère avoir réussi à clarifier mon problème.
Qu'en penses tu ?
Merci d'avance à tous.
Merci de ta réponse. Désolé, je vais essayer d'être plus précis.
Je cherche à automatiser une présentation PPT qui s'actualise tous les mois en fonction d'un fichier excel. Je ne peux pas travailler avec des liens entre excel et PPT parce que ceux ci alourdissent trop la présentation. L'idée est donc de passer par VBA. Une fois que le fichier xls est à jour, j'appuis sur un bouton qui lance une macro qui :
1) Ouvre le PPT
2) Supprime les anciens tableaux
3) Colle avec collage spéciale metafichier elaboré les nouveaux tableaux.
4) Enregistre, puis ferme le nouveau PPT.
Mon problème se trouve sur le point numéro 2. En effet, pour le moment je passe par une référence absolue. Voici le début de mon code
Dim PPT As Powerpoint.Application Dim Pptdoc As Powerpoint.Presentation Dim nbshpe As Byte Set PPT = CreateObject("Powerpoint.Application") PPT.Visible = True
1) => Ouvre le fichier
Set Pptdoc = _
PPT.Presentations.Open("U:\Prive\Finance Team\Rodrigo\Automatisation des présentations\PEMJP_pres\Rapport Mensuel_04-2012.ppt")
2) =>Supprime les anciens tableaux
ptdoc.Slides(6).Shapes("Picture 9").Delete
3=>Colle avec collage spéciale metafichier elaboré les nouveaux tableaux.
Sheets("ITC_Periodic").Range("A13:BR32").Copy
Pptdoc.Slides(6).Shapes.PasteSpecial ppPasteEnhancedMetafile
Le souci est qu'une fois que la macro a supprimé Picture 9 et a recollé le tableau, son nom PPT change et devient Picture 10.
Je voulais contourner le problème en écrivant une ligne de code qui demande à PPT de supprimer toutes les images de la slide 6 afin de ne pas avoir à modifier le code à chaque update.
Si je supprime la diapo est la remplace par une vierge je devrais réécrire le titre.
J'espère avoir réussi à clarifier mon problème.
Qu'en penses tu ?
Merci d'avance à tous.
Bonsoir,
Le plus simple est de donner toujours le même nom au tableau.
Pour cela, après avoir collé, on prendra le dernier objet et on lui donnera le nom choisi.
Ainsi dans la macro, il suffira de supprimer l'objet de ce nom et de renommer avec ce même nom, ce qui donnerait :
m@rina
Le plus simple est de donner toujours le même nom au tableau.
Pour cela, après avoir collé, on prendra le dernier objet et on lui donnera le nom choisi.
Ainsi dans la macro, il suffira de supprimer l'objet de ce nom et de renommer avec ce même nom, ce qui donnerait :
dim tablo As Shape, nb 'suppression du tableau On Error Resume Next 'au cas où le tablo n'existerait pas Set tablo=Pptdoc.Slides(6).Shapes("tablo") tablo.Delete On Error Goto 0 'on colle le tableau Pptdoc.Slides(6).Shapes.PasteSpecial ppPasteEnhancedMetafile 'on compte le nb de shapes nb = Pptdoc.Slides(6).Shapes.Count 'on donne le nom tablo au dernier : Pptdoc.Slides(6).Shapes(nb).Name = "tablo"
m@rina