XL 2019 Faire une capture d'écran d'une feuille Excel

mike888

XLDnaute Nouveau
Salut !

Je cherche comment réaliser une capture d'écran de ma feuille Excel, en sachant que le contenu de la feuille dépasse vers le bas (donc un bête "print screen" ne m'est pas utile...) ?

Merci !
 
C

Compte Supprimé 979

Guest
Bonjour Mike888

Voici ;)
VB:
Sub Range_To_Image()
  Dim ObjChrt As Chart
  Dim RngImage As Range
  Dim strFile As String

  On Error GoTo ErrExit
  With ActiveSheet
    Set RngImage = .Range("A1:L150")
    RngImage.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
    strFile = "C:\Users\TOTO\Desktop\Plage.jpg"
    Set ObjChrt = .ChartObjects.Add(RngImage.Left, RngImage.Top, RngImage.Width, RngImage.Height).Chart
    With ObjChrt
        .Parent.Activate
        .ChartArea.Format.Line.Visible = msoFalse
        .Paste
        .Export strFile
        .Parent.Delete
    End With
  End With

ErrExit:
  Set ObjChrt = Nothing
  Set RngImage = Nothing
End Sub

A+
 

Efgé

XLDnaute Barbatruc
Bonjour Mike888, bonjour BrunoM45.
Selection de la zone puis
Accueil / copier / Copier comme image /
Choisir les optios (Bitmap fonctionne généralement mieux) / ok
L'image est dans ton presse papier et tu peux la coller ou tu veux avec un simple Ctrl+V
Cordialement
 

Victor21

XLDnaute Barbatruc
Bonjour, @mike888 Bonjour à tous.
Pour compléter, vous pouvez aussi ajuster le zoom à la zone à copier, avant un bête "print screen".
:)
1639038458950.png

ou
1639038588924.png
 

patricktoulon

XLDnaute Barbatruc
Bonjour à tous


  1. Attention à l'image blanche dans certaines versions et/ou (association excel/windows) récentes la latence du clipboard a triplé depuis 2016
  2. Attention aussi a une éventuelle précédente capture ou image qui se trouverait dans le clip (c'est elle qui sera coller dans le chart pas la capture !!!)
  3. on généralise la base chemin avec environ (ou autres methodes)
  4. le format export en gif est plus net(on le vois quand on zoom fort après sur l'image
VB:
Sub Range_To_Image()
    Dim RngImage As Range, strFile As String
    strFile = Environ("userprofile") & "\Desktop\Plage.gif"    'on exporte en gif c'est plus nette qu'en jpg
    On Error GoTo ErrExit    ' je laisse la gestion d'erreur au cas ou il y aurait une protection par exemple
    With ActiveSheet
        Set RngImage = .Range("A1:L150")
        Application.CutCopyMode = False    ' on vide la memoire au cas ou une precedente capture serait dans le clip( NON GARANTIE !!!!!pas tout le temps effectif seules les apis pourront vider réellement le clip)
        RngImage.CopyPicture    ' on copy en WMF plus rapide
        With .ChartObjects.Add(10, 10, RngImage.Width, RngImage.Height).Chart
            .Parent.Activate
            .ChartArea.Format.Line.Visible = msoFalse
            .Paste
            ' on évite d'avoir une image blanche sur certaines versions d'office récentes en attendant qu'il y est une image collée dans le chart
            Do While .Pictures.Count = 0: DoEvents: Loop
            .Export strFile
            .Parent.Delete
        End With
    End With

ErrExit:
    Set ObjChrt = Nothing
    Set RngImage = Nothing
End Sub
 

Roro711

XLDnaute Nouveau
Voici ;)
VB:
Sub Range_To_Image()
  Dim ObjChrt As Chart
  Dim RngImage As Range
  Dim strFile As String

  On Error GoTo ErrExit
  With ActiveSheet
    Set RngImage = .Range("A1:L150")
    RngImage.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
    strFile = "C:\Users\TOTO\Desktop\Plage.jpg"
    Set ObjChrt = .ChartObjects.Add(RngImage.Left, RngImage.Top, RngImage.Width, RngImage.Height).Chart
    With ObjChrt
        .Parent.Activate
        .ChartArea.Format.Line.Visible = msoFalse
        .Paste
        .Export strFile
        .Parent.Delete
    End With
  End With

ErrExit:
  Set ObjChrt = Nothing
  Set RngImage = Nothing
End Sub

A+
Bonjour BrunoM45,

Petite question, et si je veux sélectionner une plage qui sera variable comment je dois faire ?
Explication, c’est un tcd le nombre de colonne sera toujours identique mais les lignes non, du coup j’ai essayé avec :
Range("B5: D5").Select
Range(Selection,Selection.End(xlDown)).Select
Mais ça ne fonctionne pas,
Help me please
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
354
  • Question
Microsoft 365 Excel365
Réponses
2
Affichages
154
Réponses
9
Affichages
259

Statistiques des forums

Discussions
311 712
Messages
2 081 802
Membres
101 819
dernier inscrit
lukumubarth