bonjour
j’ai cette macro qui fonctionne bien, mais il me sauvegarde en pdf mon fichier de capture
as t-il un moyen de changer pour le mettre en PNG
merci
Sub CapturerEtEnregistrer()
Dim ws As Worksheet
Dim rng As Range
Dim cheminFichier As String
' Définir la feuille "classement"
Set ws = ThisWorkbook.Sheets("classement")
' Définir la plage à capturer
Set rng = ws.Range("E1:H31")
' Changer le chemin du fichier selon votre besoin
cheminFichier = "D:\Documents\capture.png"
' Capturer la plage et l'enregistrer dans le dossier spécifié
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
With ThisWorkbook.Sheets.Add
.Paste
.ExportAsFixedFormat Type:=xlTypePNG, Filename:=cheminFichier, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
' Supprimer la feuille temporaire
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
Ce traitement semble fonctionner
Essaies et dis moi
Dim ws As Worksheet
Dim rng As Range
Dim cheminFichier As String
' Définir la feuille "classement"
Set ws = ThisWorkbook.Sheets("classement")
' Définir la plage à capturer
Set rng = ws.Range("E1:H31")
' Changer le chemin du fichier selon votre besoin
cheminFichier = "D:\Documents\capture.png"
' Capturer la plage et l'enregistrer dans le dossier spécifié
rng.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
With ThisWorkbook.Charts.Add
Application.Wait (Now + TimeValue("0:00:01"))
.Paste
.Export Filename:=cheminFichier, Filtername:="png"
End With
' Supprimer la feuille temporaire
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
les colonnes orange sont bien E1 : H31
et les lignes qu’on vois sur la droite font parti d’un graphique vierge qu’il me mets dans une feuille que la macro crée pour la capture
Je pense que le graphique fait partie de la zone définie (« E1:H31 ») même si ses lignes qui débordent de celle-ci n’en fait pas
Un graphique etant une construction entière qui ne peut être morcelé la moindre parcelle de celui-ci prise dans la capture entraine l’intégralité de sa composition dans celle-ci
Pas d’autre choix
il faut ralentir tout un petit peu, maintenant, c’est 300 msecondes dans la macro « Attendre »
si cela ne fonctionne pas augmenter vers 500 msec (=+0.5) ou …
s’il y a encore des problèmes ajoutez votre fichier
(PS. application.wait n’est pas assez précis)
Sub FFO()
Dim ws As Worksheet
Dim rng As Range
Dim cheminFichier As String
' Définir la feuille "classement"
Set ws = ThisWorkbook.Sheets("classement")
' Définir la plage à capturer
Set rng = ws.Range("E1:H31")
' Changer le chemin du fichier selon votre besoin
cheminFichier = "D:\Documents\capture.png"
' Capturer la plage et l'enregistrer dans le dossier spécifié
rng.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
With ThisWorkbook.Charts.Add
Attendre
.Paste
Attendre
.Export Filename:=cheminFichier, Filtername:="png"
Attendre
End With
' Supprimer la feuille temporaire
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Sub
Sub Attendre()
Dim t1, t2
t1 = Timer
t2 = Timer + 0.3 'delai de 300 mseconde
Do
DoEvents
Loop While t1 <= Timer And Timer <= t2
End Sub
vous avez raison, il y a 2 macros, mais vous voyez aussi 3 lignes avec « Attendre » dans la première macro, c’est le moment que a première macro saute vers la 2eme et attend 300 msec, normallement suffisant pour faire une mise à jour de la ligne précédente.