× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 Script pour mise en forme automatique d'imagesSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
alfredo2000
  Posté le 26/01/2015 @ 11:08 
Aller en bas de la page 
Petit astucien

Bonjour,

J'ai un document ppt de plusieurs dizaines de slides contenant des images.

Je dois mettre à jour les images des slides tout en gardant inchangées leurs positions.

Je joins un document en exemple : 3 slides (slides 2 et 3 contiennent des images)

L'idée étant d'avoir un script qui va parcourir les slides 1 à 1, pour chaque slide vérifier les images 1 à 1 et définir leur position

Merci pour votre aide.

PS : comment faire pour rajouter 1 piece jointe à ce message

Publicité
alfredo2000
 Posté le 26/01/2015 à 11:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

J'ai trouvé : lien pour accéder à l'exemple

http://cjoint.com/?EAAlxKEeDHv

w36xb2w
 Posté le 26/01/2015 à 12:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour

je ne comprends pas bien la question mais pour faire une lecture auto par la suite il suffit d'enregistrer sous le format pps

alfredo2000
 Posté le 26/01/2015 à 14:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je dois copier des images provenant d'autres sources et les coller dans les slides du document ppt.

L'idée étant une fois les images collées dans le ppt, je lance un script qui effectue le formatage à l'identique de ce que j'avais sur le document ppt.

alfredo2000
 Posté le 29/01/2015 à 16:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je ne sais pas si j’étais clair sur mon besoin.

Avez-vous des pistes ?

cseguenot
 Posté le 30/01/2015 à 00:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

L'approche par script est-elle vraiment nécessaire ? Comment mettez-vous à jour vos images ?

Un moyen simple pour le faire est d'utiliser le bouton "Remplacer l'image" qui se trouve dans le groupe "Ajuster" du ruban contextuel "Format" (ruban affiché lorsque l'image est sélectionnée).

Ce bouton permet précisément de remplacer l'image sans modifier sa taille ni sa position.

Si vous voulez vraiment utiliser un script vba, essayez une ligne du type :

ActivePresentation.Slides("Slide1").Shapes("My_Image").Fill.UserPicture ("D:\User\MyImage.jpg")

En espérant vous avoir aidé.

alfredo2000
 Posté le 30/01/2015 à 11:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Merci pour votre retour.

Cependant, je n'arrive pas à trouver "Remplacer l'image". Voici ce que j'ai en capture (voir PJ).

alfredo2000
 Posté le 30/01/2015 à 15:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

J'ai vu ce script sur le web qui semble faire ce que je souhaite :

==================================================================

Public Sub RedimImage()

' ===== déclaration des variables =====
Dim shp As Shape
Dim sld As Slide

' on boucle sur la collection des diapositives
For Each sld In Application.ActivePresentation.Slides
' on boucle sur la collection des shapes
For Each shp In sld.Shapes
' on test si c'est une shape de type image
If shp.Type = msoPicture Then
With shp
.LockAspectRatio = msoFalse
.Left = 0
'.Top = 25
.Width = ActivePresentation.PageSetup.SlideWidth + 0
'.Width = 250
.Height = shp.Height
End With
End If
Next shp
Next sld
End Sub
==================================================================

Ce que je souhaite faire c'est par exemple

Si diapo = 1, on boucle sur les images (1ere image on définit les coordonnées, 2e image on définit les coord, ....)

Si diapo = 2, on boucle sur les images (1ere image on définit les coordonnées, 2e image on définit les coord, ....)

Si diapo = 3, on boucle sur les images (1ere image on définit les coordonnées, 2e image on définit les coord, ....)

etc....

Comment peut-on le faire ?

w36xb2w
 Posté le 30/01/2015 à 15:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

alfredo2000 a écrit :

Bonjour,

Merci pour votre retour.

Cependant, je n'arrive pas à trouver "Remplacer l'image". Voici ce que j'ai en capture (voir PJ).

Bonjour

Tu as bien inséré 7 images

Il te suffit de cliquer sur une et faire insérer une nouvelle diapositive

exemple

Publicité
alfredo2000
 Posté le 30/01/2015 à 16:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

les images proviennent de fichiers Excel.

Je sélectionne le graphique dans Excel, je fais copier et puis dans mon doc ppt je fais collage special DIB pour substituer l'ancien graphique par le nouveau. Ce que je ne souhaite plus faire c'est modifier à chaque fois la "taille et position" vu le nombre de graphique à coller dans le document ppt.

Voilà mon besoin.

w36xb2w
 Posté le 31/01/2015 à 09:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour

Pour que je puisse faire un essai passe moi ton fichier excel si tu le veux bien, de toute manière je détruis tout une foi fait.

cseguenot
 Posté le 31/01/2015 à 16:10 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Le bouton "Remplacer l'image" se nomme "Modifier l'image" dans Office 2007.

C'est bien ce bouton que vous devez utiliser.

Il y a une autre solution simple et efficace à votre problème : utiliser des images liées. Pour cela :

1. enregistrez vos graphiques Excel en tant qu'images dans un répertoire de votre choix. Pour cela, il suffit de

  • copier le graphique (CTRL + C)
  • ouvrir Paint et le coller (CTRL + V)
  • enregistrer l'image au format png (vous aurez des images légères et de bonne qualité avec ce format)

2. Dans Power Point, insérez les images en gardant les liens avec les fichiers. Pour cela :

  • cliquez sur Insertion \ Images --> ceci ouvre la fenêtre de sélection d'image
  • sélectionnez l'image
  • Dépliez la liste déroulante du bouton "Insérer" et choisissez "Insérer et lier".

De cette façon, les images dans le fichier PowerPoint resteront liées aux fichiers d'images.

Vous pourrez donc remplacer simplement vos fichiers d'images; PowerPoint mettra automatiquement à jour les images à l'intérieur des slides, sans modifier leur position ni leur taille

Puisque votre Power Point existe déjà, pour ne pas avoir à le refaire, il vous suffit de sélectionner chaque image, de cliquer sur le fameux bouton "Modifier l'image" et de suivre la procédure ci-dessus pour insérer la nouvelle image en la liant au fichier.

Remarques :

  • Si vous mettez à jour les fichiers d'images, vous devez bien sûr garder les mêmes noms de fichiers pour que PowerPoint puisse les retrouver. Sinon, il ne mettra pas à jour les images dans les slides.
  • Vous pourriez automatiser encore plus la procédure en faisant une macro qui exporte tous les graphiques en tant que fichiers images. Votre fichier PowerPoint serait mis à jour en un seul clic...

Ceci répond-il à votre problématique ?

alfredo2000
 Posté le 01/02/2015 à 16:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour et merci pour vos retours.

La solution de "cseguenot" pourrait répondre à mon besoin par contre la question que je me pose est la suivante :

vu que je dois ensuite diffuser le doc ppt par mail à des dizaines de personnes, pourront-elles accéder aux images du doc ppt dans la mesures ou nous avons fait "Insérer et lier" ?

Merci pour votre aide.

cseguenot
 Posté le 03/02/2015 à 13:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Oui, avec l'option Insérer et lier, l'image est bien intégrée dans le fichiers. Ce dernier peut donc être diffusé sans problème.

Ce ne serait pas le cas si vous choisissiez simplement lier.

alfredo2000
 Posté le 03/02/2015 à 16:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Je l'ai testé et cela marche très bien. Un GRAND MERCI.

Vous ne pouvez savoir le gain de temps que je vais réaliser maintenant !

Vous avez proposé l'idée de macro pour exporter les graphiques en fichiers images. Je ferai un tour sur le forum Excel.

Avez-vous des exemples ou des liens qui pourraient m'aider sur la réalisation de cette macro ?

Merci.

cseguenot
 Posté le 04/02/2015 à 22:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Ravi de vous avoir aidé . J'imagine effectivement le gain de temps si vous avez des dizaines ou centaines d'images .

Tant qu'à faire, allons jusqu'au bout ! Pour l'exportation des images du classeur Excel, utilisez le script VBA suivant :

Sub ExportCharts()
Dim s As Long
Dim c As Long
Dim curChart As Chart
Dim curSheet As Worksheet
Dim sExportFolderPath As String
Dim sFileName As String

' Répertoire d'exportation des images
sExportFolderPath = "D:\Pictures" ' A modifier selon votre convenance

' On parcourt toutes les feuilles du classeur
For s = 1 To ActiveWorkbook.Worksheets.Count
Set curSheet = ActiveWorkbook.Worksheets(s)

'On parcourt les graphiques de la feuille courante
For c = 1 To curSheet.ChartObjects.Count
Set curChart = curSheet.ChartObjects(c).Chart

' On exporte le graphique courant sous forme d'image png
sFileName = curChart.Name + ".png"
curChart.Export Filename:=sExportFolderPath & "\" & sFileName, Filtername:="PNG"
Next c
Next s
End Sub

Ce script parcourt les feuilles du classeur Excel et exporte les graphiques qu'elles contiennent sous forme d'images png.

Avant de le lancer, vous devez faire 2 choses :

  • spécifier le chemin du répertoire d'exportation des images (en vert ci-dessus)
  • nommer vos graphiques (facultatif mais conseillé). Pour cela, cliquez sur chaque graphique et renseignez un nom dans la zone à gauche de la barre de formule.

Pour lancer le script, le plus simple est d'ajouter un bouton dans la première feuille du classeur et de lui affecter la macro ci-dessus (je présume que vous savez faire).

Les images seront exportées dans le répertoire que vous avez spécifié. Elles seront nommées de la façon suivante : "<nom de la feuille> <nom du graphique>.png"

Si vous ne spécifiez pas de nom, vous aurez par défaut "Feuil1 graphique 1.png"

N'hésitez pas si vous avez un problème de mise en place du script.

Au plaisir

alfredo2000
 Posté le 05/02/2015 à 14:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

J'ai essayé ce que vous avez indiqué ci-dessus mais quand je lance le script, rien ne se passe.

Je vous explique ce que j'ai fais :

J'ai d'abord créé une macro et j'ai inséré le code

Je l'ai lancé et rien ne s'est passé (répertoire "D:\Pictures" inexistant)

J'ai créé manuellement le répertoire "D:\Pictures" puis relancé la macro. Rien ne s'est passé ==> repertoire toujours vide .

J'ai finalement créé le bouton de commande et changé le nom du répertoire == > IDEM

Une idée ?

Publicité
cseguenot
 Posté le 05/02/2015 à 22:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

hmm oui, c'est votre capture d'écran qui m'a fait comprendre le problème.

Le script précédent n'exporte que les graphiques insérés à l'intérieur de feuilles de calculs, pas les graphiques indépendants. C'est en voyant les objets GraphX dans votre capture d'écran que j'ai compris que vous utilisiez ce type de graphiques.

Voici une nouvelle version qui vous permettra d'exporter tous les types de graphiques. J'ai également ajouté l'affichage d'un petit message à la fin de l'exportation.

Sub ExportCharts()
Dim s As Long
Dim c As Long
Dim curChart As Chart
Dim curSheet As Worksheet
Dim sExportFolderPath As String
Dim sFileName As String
Dim cnt As Long

' Répertoire d'exportation des images
sExportFolderPath = "D:\Pictures" ' A modifier selon votre convenance

' On parcourt toutes les feuilles du classeur
For s = 1 To ActiveWorkbook.Worksheets.Count
Set curSheet = ActiveWorkbook.Worksheets(s)

'On parcourt les graphiques de la feuille courante
For c = 1 To curSheet.ChartObjects.Count
Set curChart = curSheet.ChartObjects(c).Chart

' On exporte le graphique courant sous forme d'image png
sFileName = curChart.Name + ".png"
curChart.Export Filename:=sExportFolderPath & "\" & sFileName, Filtername:="PNG"
cnt = cnt + 1
Next c
Next s

' On parcourt tous les graphiques indépendants
For c = 1 To ActiveWorkbook.Charts.Count
Set curChart = ActiveWorkbook.Charts(c)

' On exporte le graphique courant sous forme d'image png
sFileName = curChart.Name + ".png"
curChart.Export Filename:=sExportFolderPath & "\" & sFileName, Filtername:="PNG"
cnt = cnt + 1
Next

' On affiche le nombre de graphes exportés
MsgBox CStr(cnt) + " graphiques exportés"
End Sub

NB/ Le répertoire d'exportation doit effectivement exister au préalable.

alfredo2000
 Posté le 06/02/2015 à 12:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

J'ai testé cette nouvelle version et ça marche maintenant. Tous les graphiques sont exportés dans le répertoire.

Par contre, tous les graphiques exportés ont un fond "bleu clair", alors que sous Excel le fond est "blanc"

Voir les 2 captures ci-dessous.

Y a t-il un paramètre à modifier ou autre chose à faire pour avoir les graphiques exportés à l'identique du graphique Excel ?

=================================================

Graphe sous Excel

Graphe exporté (format png)

Merci.

cseguenot
 Posté le 06/02/2015 à 14:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour,

Je ne reproduis pas le pb. Je pense que le bleu clair est la couleur de fond de votre thème Windows.

Les images png gérant la transparence, la couleur de fond est visible.

Une solution simple est d'affecter une couleur de fond blanche à vos graphiques dans Excel en utilisant le bouton "Remplissage de la forme" du ruban contextuel "Mise en forme" des outils de graphique.

alfredo2000
 Posté le 06/02/2015 à 14:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

J'ai changé le format "PNG" par "JPG" et cela marche. Tous les graphiques exportés ont un fond blanc.

Je passe par exemple d'un fichier de 86 ko en PNG à 126 ko en JPG.

Tous les graphiques sont à "Aucun remplissage"

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
55 €Microphone USB Bird UM1 à 55 €
Valable jusqu'au 31 Octobre

Amazon fait une vente flash sur le Microphone USB Bird UM1 qui passe à 55 € alors qu'on le trouve ailleurs à partir de 69 €. La livraison est gratuite. Le Bird UM1 est un micro de studio d'excellente qualité avec interface USB intégrée. C'est une solution idéale et tout-en-un qui évite d'avoir à acheter un préampli ou une interface audio supplémentaire.  Idéal pour le studio, YouTube ou l'animation de votre blog.


> Voir l'offre
84,99 €Souris gamer sans fil Logitech G502 Lightspeed à 84,99 € avec le code VIP15
Valable jusqu'au 30 Octobre

Boulanger propose actuellement la souris gamer Logitech G502 Lightspeed 84,99 € avec le code promo VIP15. On la trouve ailleurs autour de 130 €. Cette souris utilise la technologie sans fil Lightspeed pour une performance sans aucun temps de latence, possède un capteur HERO 16 000 dpi et dispose de 11 boutons que vous pouvez programmer et d'un éclairage RVB personnalisable avec jusqu'à 16,8 millions de couleurs. 


> Voir l'offre
299,95 €Ecran 31,5 pouces LG Ultragear 32GK650F-B (QHD, 144 Hz) à 299,95 €
Valable jusqu'au 31 Octobre

LDLC fait une promotion sur l'écran LG 31,5 pouces LG Ultragear 32GK650F-B qui passe à 299,95 € au lieu de 349 € ailleurs. Cet écran possède une dalle 31,5 pouces QHD (2560x1440) à 144 Hz, un temps de réponse de 5 ms. Il est compatible FreeSync.


> Voir l'offre

Sujets relatifs
aide pour une mise en forme conditionnelle
Mise en forme conditionnelle pour une autre cellul
mise en forme conditionelle ou macro pour bordure?
Sommaire automatique et problème de mise en forme
Ajouter des critères pour la mise en forme conditi
Recopier "que la Mise en forme Conditionnelle"
Mise en forme conditionnelle Excel 2010
Mise en forme conditionnelle
Mise en forme
Mise en page pour faire livret en A5 avec pagination
Plus de sujets relatifs à Script pour mise en forme automatique d''images
 > Tous les forums > Forum Bureautique