[COLOR=Black]Public [/COLOR][COLOR=Black]Sub SaveRangeAsImage()
'auteur: cafeine
[URL="http://www.developpez.net/forums/showpost.php?p=1636854&postcount=1"]'source[/URL]
[/COLOR] [COLOR=Black]Dim r [/COLOR][COLOR=Black]As Range
[/COLOR] [COLOR=Black]Dim x [/COLOR][COLOR=Black]As [/COLOR][COLOR=Black]Integer, y [/COLOR][COLOR=Black]As [/COLOR][COLOR=Black]Integer
[/COLOR] [COLOR=Black]Dim varFullPath [/COLOR][COLOR=Black]As [/COLOR][COLOR=Black]Variant
[/COLOR] [COLOR=Black]Dim Graph [/COLOR][COLOR=Black]As [/COLOR][COLOR=Black]String
[/COLOR] [COLOR=Black]' selection de la plage par une InputBox
[/COLOR] [COLOR=Black]Set r = application.InputBox([/COLOR][COLOR=Black]"Sélectionnez la plage à exporter", _
[/COLOR][COLOR=Black]"Export Image", Selection.AddressLocal, Type:=[/COLOR][COLOR=Black]8)
r.[/COLOR][COLOR=Black]Select
[/COLOR] [COLOR=Black]' copie de la plage en format image grâce à .CopyPicture
Selection.CopyPicture appearance:=xlScreen, Format:=xlBitmap
x = Selection.Width
y = Selection.Height
[/COLOR] [COLOR=Black]' on utilise l'objet Chart pour sa facilité d'export
[/COLOR] [COLOR=Black]' création du graphique
Workbooks.Add ([/COLOR][COLOR=Black]1)
ActiveSheet.Name = [/COLOR][COLOR=Black]"enGIF"
Charts.Add
ActiveChart.ChartType = xl3DArea
ActiveChart.SetSourceData r
ActiveChart.Location xlLocationAsObject, [/COLOR][COLOR=Black]"enGIF"
[/COLOR] [COLOR=Black]' le graph n'est là que comme réceptacle de l'image, on le vide avec .ClearContents
ActiveChart.ChartArea.ClearContents
[/COLOR] [COLOR=Black]' on colle l'image qui réside dans le presse papier
ActiveChart.Paste
[/COLOR] [COLOR=Black]' redimensionnement
[/COLOR] [COLOR=Black]' on récupére le nom du graph de la collection Shapes
Graph = [/COLOR][COLOR=Black]Mid(ActiveChart.Name, Len(ActiveSheet.Name) + [/COLOR][COLOR=Black]1)
[/COLOR] [COLOR=Black]' on effectue un redimensionnement
ActiveSheet.Shapes(Graph).ScaleWidth x / ActiveChart.ChartArea.Width, _
msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes(Graph).ScaleHeight y / ActiveChart.ChartArea.Height, _
msoFalse, msoScaleFromTopLeft
[/COLOR] [COLOR=Black]' export
varFullPath = _
application.GetSaveAsFilename([/COLOR][COLOR=Black]"C:\Temp\export-" & Format(Now, [/COLOR][COLOR=Black]"yyyymmddhhnn") & [/COLOR][COLOR=Black]".gif", _
[/COLOR][COLOR=Black]"Fichiers GIF (*.gif), *.gif")
ActiveChart.Export varFullPath, [/COLOR][COLOR=Black]"GIF"
ActiveChart.Pictures([/COLOR][COLOR=Black]1).Delete
ActiveWorkbook.Close [/COLOR][COLOR=Black]False
[/COLOR] [COLOR=Black]End [/COLOR][COLOR=Black]Sub