> 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

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 ?

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"

Publicité
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
Console Microsoft Xbox Series S + EA Sports FC 24 à 269,99 €
269,99 € 299,99 € -10% @Amazon

Amazon fait une belle promotion sur la console Xbox Series S avec le jeu EA Sports FC 24 à télécharger à 269,99 € au lieu de 299,99 €. Avec la Microsoft Xbox Series S, bénéficiez des performances de nouvelle génération dans la Xbox la plus compacte jamais conçue à ce jour. Avec des mondes plus dynamiques en 1440p, des temps de chargement réduits grâce à son SSD interne de 512 Go, la Xbox Series S offre une expérience unique.

Le pack Chasseur doré avec neuf produits cosmétiques en jeu et de monnaie virtuelle pour Fortnite, Rocket League et Fall Guys est également fourni.


Voir le bon plan
Fauteuil gaming Corsair TC100 Relaxed à 164,99 €
164,99 € 229,99 € -28% @Cdiscount

Cdiscount fait une promotion sur le fauteuil gaming Corsair TC100 Relaxed qui passe à 164,99 € avec le code 15DES149 alors qu'on le trouve ailleurs à partir de 229,99 €. Installez-vous confortablement pour jouer ou travailler avec le fauteuil RELAXED TC100 de CORSAIR - similicuir, qui présente un design inspiré de la course automobile, doté d'une surface d'assise plus large. L'extérieur en peluche du fauteuil vous permet de jouer dans un confort rafraîchissant. Avec un coussin lombaire amovible et un coussin pour la nuque en mousse à mémoire de forme inclus.


Voir le bon plan
Carte graphique Sapphire Radeon RX 6700 XT PULSE GAMING 12 Go à 324,99 €
324,99 € 380 € -14% @Cdiscount

Cdiscount fait une promotion sur la carte graphique Sapphire Radeon RX 6700 XT PULSE GAMING 12 Go qui passe à 324,99 € avec le code 25DES299 au lieu de 380 €. En plus d'un affichage multi-écran, ce GPU offre d'excellents rendus visuels. Le jeu PC Starfield vous est également offert.


Voir le bon plan
Clé USB 3.0 SanDisk Ultra Flair 128 Go à 9 €
9,00 € 15 € -40% @Amazon

Amazon fait une promotion sur la clé USB 3.0 SanDisk Ultra Flair 128 Go qui passe à 9 € alors qu'on la trouve ailleurs à plus de 15 €. Cette clé USB offre des débits jusqu'à 150 Mo/s.


Voir le bon plan
Perceuse visseuse sans-fil Bosch Professional GSR 120-LI 12V + 2 batteries 2 Ah + coffret à 83,93 €
83,93 € 130 € -35% @Amazon Allemagne

Amazon Allemagne fait actuellement une belle promotion sur la perceuse visseuse sans-fil Bosch Professional GSR 120-LI 12V avec 2 batteries 2 Ah au lithium, un coffret de rangement et un chargeur à 76,26 €. Comptez 7,67 € pour la livraison en France soit un total de 83,93 € livré au lieu de 130 €.


Voir le bon plan
PC Portable 17.3 pouces Medion Erazer Defender P30 (FHD 144 Hz, Core i5 12450H, 16 Go, SSD 512 Go, GeForce RTX 4060) à 924,99 €
924,99 € 1199,99 € -23% @Cdiscount

Cdiscount fait une promotion sur le PC portable 17.3 pouces Medion Erazer Defender P30 qui passe à 924,99 € avec le code 25DES299 au lieu de 1199,99 €. Ce portable possède un écran FHD (1920x1080) à 144 Hz, un processeur Intel Core i5-12450H, 16 Go de RAM DDR5, un SSD 512 Go et une GeForce RTX 4060 8 Go.

L'ordinateur est livré sans OS mais vous pouvez facilement installer Windows 10/11 pour quelques euros.

Une bonne affaire pour un PC avec un grand écran et adapté à tout : multimédia, jeux, ...


Voir le bon plan

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