[VBA] - Exporter une image des cellules au format .jpg
Fermé
AelithX
Messages postés
4
Date d'inscription
jeudi 27 juillet 2017
Statut
Membre
Dernière intervention
28 juillet 2017
-
27 juil. 2017 à 15:36
Krp753 - 24 mai 2018 à 13:25
Krp753 - 24 mai 2018 à 13:25
A voir également:
- [VBA] - Exporter une image des cellules au format .jpg
- Telecharger format factory - Télécharger - Conversion & Codecs
- Format epub - Guide
- Excel additionner des cellules - Guide
- Image iso - Guide
- Verrouiller des cellules excel - Guide
5 réponses
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
Modifié le 27 juil. 2017 à 18:14
Modifié le 27 juil. 2017 à 18:14
Bonjour,
Sous Windows10 et Excel 2007, cette macro fonctionne bien.
Une solution enregistrer ton classeur sous "Classeur Excel 97-2003"
Cette version fonctionne avec toutes les versions Office après 2003
Je m'en sers toujours pour envoyer des exemples car je suis sur que tout le monde pourra les ouvrir!
@+ Le Pivert
Sous Windows10 et Excel 2007, cette macro fonctionne bien.
Une solution enregistrer ton classeur sous "Classeur Excel 97-2003"
Cette version fonctionne avec toutes les versions Office après 2003
Je m'en sers toujours pour envoyer des exemples car je suis sur que tout le monde pourra les ouvrir!
@+ Le Pivert
AelithX
Messages postés
4
Date d'inscription
jeudi 27 juillet 2017
Statut
Membre
Dernière intervention
28 juillet 2017
28 juil. 2017 à 13:34
28 juil. 2017 à 13:34
Bonjour cs_Le Pivert,
Merci pour ta réponse rapide.
En enregistrant le classeur sous excel 97-2003, ca marche bien chez moi (excel 2013), mais toujours pas sur excel 2016. Le fichier final est toujours désespérément vierge.
Je suis en train de tester une solution en passant par Powerpoint :
au lieu de générer un fichier image .jpg, j'essaie de créer un ppt avec une seule slide contenant mon image. Normalement, les formats de fichiers .jpg et .ppt conviennent tous deux à mon chef, donc si ça marche ça devrait aller. Au pire, je sais qu'il est possible de créer un fichier .jpg depuis Powerpoint...
Je te tiens au courant de ce qui finit par fonctionner et posterai le code associé...
Merci pour ta réponse rapide.
En enregistrant le classeur sous excel 97-2003, ca marche bien chez moi (excel 2013), mais toujours pas sur excel 2016. Le fichier final est toujours désespérément vierge.
Je suis en train de tester une solution en passant par Powerpoint :
au lieu de générer un fichier image .jpg, j'essaie de créer un ppt avec une seule slide contenant mon image. Normalement, les formats de fichiers .jpg et .ppt conviennent tous deux à mon chef, donc si ça marche ça devrait aller. Au pire, je sais qu'il est possible de créer un fichier .jpg depuis Powerpoint...
Je te tiens au courant de ce qui finit par fonctionner et posterai le code associé...
cs_Le Pivert
Messages postés
7903
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 mars 2024
728
28 juil. 2017 à 13:58
28 juil. 2017 à 13:58
J'ai trouvé cela:
A essayer
Public Sub SaveRangeAsImage() Dim r As Range Dim x As Integer, y As Integer Dim varFullPath As Variant Dim Graph As String ' selection de la plage par une InputBox Set r = Application.InputBox("Sélectionnez la plage à exporter", _ "Export Image", Selection.AddressLocal, Type:=8) r.Select ' copie de la plage en format image grâce à .CopyPicture Selection.CopyPicture appearance:=xlScreen, Format:=xlBitmap x = Selection.Width y = Selection.Height ' on utilise l'objet Chart pour sa facilité d'export ' création du graphique Workbooks.Add (1) ActiveSheet.Name = "enJPG" Charts.Add ActiveChart.ChartType = xl3DArea ActiveChart.SetSourceData r ActiveChart.Location xlLocationAsObject, "enJPG" ' le graph n'est là que comme réceptacle de l'image, on le vide avec .ClearContents ActiveChart.ChartArea.ClearContents ' on colle l'image qui réside dans le presse papier ActiveChart.Paste ' redimensionnement ' on récupére le nom du graph de la collection Shapes Graph = Mid(ActiveChart.Name, Len(ActiveSheet.Name) + 1) ' on effectue un redimensionnement 'ActiveSheet.Shapes(Graph).ScaleWidth x / ActiveChart.ChartArea.Width, _ ' msoFalse, msoScaleFromTopLeft 'ActiveSheet.Shapes(Graph).ScaleHeight y / ActiveChart.ChartArea.Height, _ ' msoFalse, msoScaleFromTopLeft ' export varFullPath = Application.GetSaveAsFilename("C:\Temp\export-" & Format(Now, "yyyymmddhhnn") & ".jpg", _ "Fichiers JPG(*.jpg), *.jpg") ActiveChart.Export varFullPath, "JPG" ActiveChart.Pictures(1).Delete ActiveWorkbook.Close False End Sub
A essayer
AelithX
Messages postés
4
Date d'inscription
jeudi 27 juillet 2017
Statut
Membre
Dernière intervention
28 juillet 2017
28 juil. 2017 à 14:49
28 juil. 2017 à 14:49
Re-hello,
Ta solution fonctionne en effet bien sur mon excel 2013.
Il faudra, la semaine prochaine, que je la teste sur un excel 2016.
Merci tout de même pour l'aide :)
Ta solution fonctionne en effet bien sur mon excel 2013.
Il faudra, la semaine prochaine, que je la teste sur un excel 2016.
Merci tout de même pour l'aide :)
zlatooob69
Messages postés
1
Date d'inscription
jeudi 7 septembre 2017
Statut
Membre
Dernière intervention
7 septembre 2017
7 sept. 2017 à 15:55
7 sept. 2017 à 15:55
Bonjour
merci pour vos contributions
Elle fonctionne bien chez moi sur 2016 par contre la qualité de l'image n'est pas top , tu aurais une idée pour l'améliorer ? :)
merci pour vos contributions
Elle fonctionne bien chez moi sur 2016 par contre la qualité de l'image n'est pas top , tu aurais une idée pour l'améliorer ? :)
yg_be
Messages postés
22723
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 avril 2024
1 476
Modifié le 28 juil. 2017 à 14:53
Modifié le 28 juil. 2017 à 14:53
j'ai exactement le même problème, et le soucis n'est pas dans l'export: l'image n'est pas correcte avant l'export.
et rien trouvé pour éviter cela.
et rien trouvé pour éviter cela.
AelithX
Messages postés
4
Date d'inscription
jeudi 27 juillet 2017
Statut
Membre
Dernière intervention
28 juillet 2017
28 juil. 2017 à 14:18
28 juil. 2017 à 14:18
En ce qui me concerne, l'image apparait bien comme ok lors de la copie...
Peut-être deux problèmes différents ?
Quelle config as-tu ?
Avec la solution de l'export via ppt ça convient à mon boss donc ça me va.
Je testerai la solution de cs_Le Pivert pour voir si ca répond mieux à la demande.
Peut-être deux problèmes différents ?
Quelle config as-tu ?
Avec la solution de l'export via ppt ça convient à mon boss donc ça me va.
Je testerai la solution de cs_Le Pivert pour voir si ca répond mieux à la demande.
yg_be
Messages postés
22723
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 avril 2024
1 476
>
AelithX
Messages postés
4
Date d'inscription
jeudi 27 juillet 2017
Statut
Membre
Dernière intervention
28 juillet 2017
28 juil. 2017 à 15:50
28 juil. 2017 à 15:50
avec Excel 2016, j'ai supprimé la copie en ligne 6, qui, je pense, ne sert à rien. la copie en ligne 9 ne fonctionne pas (sauf en pas à pas).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
PhilippeF75
Messages postés
3
Date d'inscription
mercredi 18 avril 2018
Statut
Membre
Dernière intervention
17 décembre 2018
7
18 avril 2018 à 00:54
18 avril 2018 à 00:54
Bonjour,
Pour ma part, j'ai exactement le même problème d'exportation d'image sous Excel 2016 et VBA 7.1.
ça marche très bien en pas à pas mais l'image est vide en exécution de la macro.
J'arrive à cerner le problème sur le dernier .paste avant le .exporte.
J'en déduis que l'image n'a pas le temps de se copier avant d'être exportée. Mais même en ajoutant un DoEvents ou un Sleep entre les deux, ça ne fonctionne pas...
Qui a résolu le problème ?
Pour ma part, j'ai exactement le même problème d'exportation d'image sous Excel 2016 et VBA 7.1.
ça marche très bien en pas à pas mais l'image est vide en exécution de la macro.
J'arrive à cerner le problème sur le dernier .paste avant le .exporte.
J'en déduis que l'image n'a pas le temps de se copier avant d'être exportée. Mais même en ajoutant un DoEvents ou un Sleep entre les deux, ça ne fonctionne pas...
Qui a résolu le problème ?