Snapshot une feuille et envoie vers un fichier extérieur

wolfloner

XLDnaute Nouveau
Bonjour tout le monde.

A croire que les vacances permettent d'exceller à fond.
Je reviens vers vous car dans la création de mon classeur, j'ai voulu ajouter une nouvelle option "le snapshot" d'un range.

Alors je vous explique mon problème.

En sheet6 (carte) nous obtenons donc une carte avec l'apparition d'étendards. Bon là tout va bien et Tototiti m'y a bien aider. En sheet1(accueil), j'ai rajouter un bouton (button_7), là ça va. Je l'ai lié avec une macro "runner" pour ouvrir un bouton flottant(userform2) qui permet de selectionné une Range de cellule.
La macro mise pour le bouton flottant est la suivante :

Private Sub CommandButton1_Click()
'auteur: cafeine
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 = "enGIF"
Charts.Add
ActiveChart.ChartType = xl3DArea
ActiveChart.SetSourceData r
ActiveChart.Location xlLocationAsObject, "enGIF"
' 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") & ".gif", _
"Fichiers GIF (*.gif), *.gif")
ActiveChart.Export varFullPath, "GIF"
ActiveChart.Pictures(1).Delete
ActiveWorkbook.Close False

End Sub

Donc lorsque je clique sur mon bouton flottant la msgbox "export image" s'affiche (voir le screen)



Je select la partie que je veux snapshoter, mais lorsque je valide j'obtient le message suivant :



Et le mode débug montre la ligne suivante :

' on effectue un redimensionnement
ActiveSheet.Shapes(Graph).ScaleWidth x / ActiveChart.ChartArea.Width, _
msoFalse, msoScaleFromTopLeft
ou celle-ci :
' copie de la plage en format image grâce à .CopyPicture
Selection.CopyPicture appearance:=xlScreen, Format:=xlBitmap

Bref, je patauge encore.
Bon pour bien comprendre ce que je cherche à faire car je suis pas toujours clair ^^
Je souhaite obtenir un bouton flottant que sur la sheet6("carte"), que ce bouton puisse prendre en snapshot une selection de cellules et créer un fichier bitmap (hors excel) avec comme nom la date pour y copier le snapshot. Ce que l'on fait normalement par "impécran" mais je voudrais automatiser le tout.

Je joins le lien à mon classeur : http://www.aht.li/2707620/Carte_ArmeeRR_version_beta_-_Copie.xlsm

D'avance merci de vos réponses
 

wolfloner

XLDnaute Nouveau
Re : Snapshot une feuille et envoie vers un fichier extérieur

Mince, il semblerai que mon cas pose problème puisque personne ne m'aide
vil2_bouee.gif
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 923
Membres
101 840
dernier inscrit
SamynoT