IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Imprimer feuille Excel en JPG


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Imprimer feuille Excel en JPG
    Bonjour à tous,

    Je suis un grand débutant dans le mode de la macro (je n'en ai jamais fait), mais j'ai exceptionnellement un besoin qui nécessite ce type d'outil. J'ai bien conscience que l'idéal serait de me former à la programmation, ou à minima à la compréhension du code VBA, mais le temps m'en empêche pour ce besoin précis.

    A partir d'un classeur excel comprenant plusieurs feuilles, je souhaiterais sur chacune d'entre elles avoir un bouton permettant d'enregistrer automatiquement la feuille dans un dossier défini au format JPG. Le nom devrait être celui du classeur, et s'il peut être suivi par celui de la feuille ça serait parfait.

    A ce niveau, ce que je sais, c'est qu'il est possible d'insérer une forme, cliquer droit dessus et mettre associer à une macro. Je sais aussi que PDFcreator permet d'enregistrer sous forme JPG. Mais mes connaissances s'arrêtent là. En cherchant sur le forum, j'ai trouvé plusieurs codes permettant d'enregistrer ne serait-ce qu'en pdf. Mais je dois mal m'y prendre pour l'insérer dans un fichier excel car quand j'appuie sur le petit bouton play de "Visual Basic pour Applications", il me met systématiquement une erreur. Par exemple, "Un composant ActiveX ne peut pas créer d'objet".

    Bref, je m'en excuse, mais il me faudrait de l'aide pour intégrer ça à partir du début, car j'ai peur qu'un "simple" code ne me permette pas d'arriver à une solution fonctionnelle.

    Je vous remercie d'avance.

  2. #2
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 566
    Points : 2 525
    Points
    2 525
    Par défaut
    Bonjour M1k3_38,
    une petite recherche renvoi ce lien... L'as-tu déjà testé ?

    https://excel-malin.com/vba-astuces/excel-vers-jpg/
    Curt
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  3. #3
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 566
    Points : 2 525
    Points
    2 525
    Par défaut
    Et au cas où tu ne t'en sortes pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Public Function ExporterPlageCommeImage(PlageAExporter As Range)
     
    On Error GoTo FonctionErreur
     
        'cacher ou afficher les lignes de grille
        ActiveWindow.DisplayGridlines = False ' or True
     
        'Copier la PlageAExporter comme image dans le Presse-papier
        PlageAExporter.CopyPicture Appearance:=xlScreen, Format:=xlPicture
     
        'Créer un nouveau  "graphique" temporaire qui servira de support - avec la taille exacte de la plage à exporter
        With ActiveSheet.ChartObjects.Add(Left:=PlageAExporter.Left, Top:=PlageAExporter.Top, _
            Width:=PlageAExporter.Width, Height:=PlageAExporter.Height)
            .Name = "ExportImage"
            .Activate
        End With
     
        'Copier l'image dans le graphique, ouvrir le dialog de "Sauvegarder sous", sauvegarde le fichier et supprime le graphique temporaire
        ActiveChart.Paste
        FichierImage = Application.GetSaveAsFilename(InitialFileName:="*.jpg", FileFilter:="Image file (*.jpg), *.jpg")
        If FichierImage = False Then Exit Function
        ActiveSheet.ChartObjects("ExportImage").Chart.Export FichierImage
        ActiveSheet.ChartObjects("ExportImage").Delete
     
    Exit Function
     
    FonctionErreur:
     
        MsgBox "Une erreur est survenue..."
     
    End Function
     
    Sub test()
     
        ExporterPlageCommeImage (ActiveSheet.UsedRange)
     
    End Sub
    Et comme disait DEGAULLE : des Chercheurs on en trouve - Des Trouveurs on en cherche
    Curt
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  4. #4
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup curt pour ton aide!

    Le code parait plus simple que d'essayer de passer par pdf creator! Et en essayant au boulot ce matin, il se trouve que ça fonctionne! Arès avoir bataillé un moment, j'ai trouvé que pour identifier une plage de cellules il fallait utiliser Range("A1:I52") par exemple, à la place de PlageAExporter.

    Ce que je n'ai pas encore réussi, c'est à donner un nom à mon fichier. J'ai tenté de remplacer les * devant les .jpg du code par test par exemple, mais ça me renvoi une erreur lorsque j'execute la macro. Idéalement en fait, j'aimerais que ça me reprenne le texte d'une cellule. Vu que je n'ai pas encore réussi à intégrer dans le code un texte simple, je ne me suis pas encore aventuré à essayer d'intégrer des choses que j'ai pu trouver sur le forum pour reprendre le texte d'une cellule...

    Merci encore!

  5. #5
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 566
    Points : 2 525
    Points
    2 525
    Par défaut
    Bonjour M1k3_38,

    à priori, tu ne maitrises pas VBA (mais ce n'est pas grave)
    La procédure TEST permettait une approche générique de faire une photo de l'ensemble de la plage de la feuille utilisée. Tu préfères fixer la plage dans le code, pourquoi pas sus réserve qu'elle ne change jamais.
    Pour fixer un nom au fichier jpg, il faut déclarer une variable est l'alimenter avec le contenu d'une cellule (ou autre chose comme le nom de la feuille, ou le nom du fichier Excel)
    Le forum ne manque pas d'exemple sur le sujet.

    Curt
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  6. #6
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Re bonjour curt,

    Merci pour tes encouragements. En effet je n'y connais rien. Quand j'aurai le temps il faudra que j'apprenne les bases. En attendant je me casse les dents.

    J'ai fixé une plage de cellules car je souhaite restreindre l'enregistrement à la zone d'impression (ce qui se passait quand je passais manuellement par pdfcreator). Ma plage varie d'une feuille à une autre, mais s'il n'y a pas la possibilité de le faire en fonction de la zone d'impression je ferai comme ça.

    Concernant l'enregistrement en prenant le nom d'une cellule, en cherchant un peu, j'ai vu qu'il fallait créer et définir une variable. J'ai donc rajouté, après la ligne Public Function, les deux lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim NomComplet
    NomComplet = Range("L9").Value
    Mais comment dire à ma macro d'utiliser ensuite cette variable comme nom de fichier avant le .jpg?

    Merci d'avance pour votre patience!

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à toi, Bonjour le orum,

    Brut de décoffrage.

    Ce code génère l'export d'une plage (champcop) de la feuille "lawks" vers un fichier .jpg enregistré dans le répertoire du classeur utilisé sous un nom comportant le nom de celui-ci concaténé au nom de la feuille.

    (Je l'utilise pour la génération automatique de plusieurs mails Outlook, l'image correspondant au corps de texte)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Option Explicit
     
    Public Sub essai_image()
     
    Dim champcop As Range
    Dim fullname_jpg As String
    Dim lechart As Object
    Dim hPicAvail As Long
     
    With Worksheets("lawks")
     
        Set champcop = .Range("A1:B10")
     
        fullname_jpg = ThisWorkbook.Path & Application.PathSeparator & Replace(ThisWorkbook.Name, ".xlsm", "") & "_" & .Name & ".jpg"
     
        Set lechart = .ChartObjects.Add(0, 0, 1, 1).Chart
     
             CreateObject("htmlfile").parentwindow.clipboardData.clearData ("Text")  'on vide le clipboard entre chaque copie pour tester vraiment le available
     
            With lechart.Parent
     
                     .Width = champcop.Width
                     .Height = champcop.Height
                     .Left = champcop.Left + champcop.Width + 20
     
                     champcop.CopyPicture Appearance:=xlScreen, Format:=xlPicture
     
                     Do
                           DoEvents
                           hPicAvail = IsClipboardFormatAvailable(14)
                     Loop While hPicAvail = 0    'Or (Timer - T) > 1000
     
                     .Select
     
                     Do
                           DoEvents
                     Loop Until .Chart.Pictures.Count = 0
     
                     .Chart.Paste
     
                     Do
                           DoEvents
                     Loop While .Chart.Pictures.Count = 0
     
                     With .Chart
                           .Export FileName:=fullname_jpg, FilterName:="jpg"
                           '.Pictures(1).Delete    'on delete a chaque fois l'image collée (important si les champcops capturées sont differentes en terme de dimension)
                     End With
     
                     .Delete
     
               End With
     
          Set lechart = Nothing
          Set champcop = Nothing
     
    End With
     
    End Sub

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  8. #8
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 566
    Points : 2 525
    Points
    2 525
    Par défaut
    Bonjour M1k3_38,

    Dans la Feuille concernée (VBA) tu mets le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Public Function ExporterPlageCommeImage(PlageAExporter As Range, LignesDeGrille As Boolean, nomfeuille As String)
     
    On Error GoTo FonctionErreur
     
        Application.ScreenUpdating = False
     
        'cacher ou afficher les lignes de grille
        ActiveWindow.DisplayGridlines = LignesDeGrille
     
        'Copier la PlageAExporter comme image dans le Presse-papier
        PlageAExporter.CopyPicture Appearance:=xlScreen, Format:=xlPicture
     
        'Cr?er un nouveau  "graphique" temporaire qui servira de support - avec la taille exacte de la plage ? exporter
        With ActiveSheet.ChartObjects.Add(Left:=PlageAExporter.Left, Top:=PlageAExporter.Top, _
            Width:=PlageAExporter.Width, Height:=PlageAExporter.Height)
            .Name = "ExportImage"
            .Activate
        End With
     
        'Copier l'image dans le graphique, ouvrir le dialog de "Sauvegarder sous", sauvegarde le fichier et supprime le graphique temporaire
        ActiveChart.Paste
        ActiveSheet.ChartObjects("ExportImage").Chart.Export ThisWorkbook.Path & "\" & nomfeuille & ".jpg" 'FichierImage
        ActiveSheet.ChartObjects("ExportImage").Delete
     
        Application.ScreenUpdating = True
    Exit Function
     
    FonctionErreur:
        Application.ScreenUpdating = True
        MsgBox "Une erreur est survenue..."
     
    End Function
     
    Sub test()
     
        Dim NomComplet As String
        NomComplet = Range("L9").Value
     
        If InStr(Selection.Address, ",") > 0 Then
            tempo = Left(Selection.Address, InStr(Selection.Address, ",") - 1)
        Else
            tempo = Selection.Address
        End If
     
        Select Case MsgBox("Afficher le quadrillage ?", vbYesNo, "Information !")
            Case vbYes
                ExporterPlageCommeImage Range(tempo), True, NomComplet
            Case vbNo
                ExporterPlageCommeImage Range(tempo), False, NomComplet
        End Select
     
    End Sub
    Comme cela fonctionne :
    - ton titre (pour le fichier .jpg) est en L9 sur ta feuille
    - tu sélectionnes ta plage avec la souris
    - Alt F8 et lance la macro TEST
    - Valides si tu souhaites ou pas le quadrillage

    Résultat :
    - l'image de la plage sélectionnée est dans le dossier en cours avec le nom.jpg de la cellule L9

    Pour parfaire la chose, tu pourrais penser à mettre cette feuille en macro complémentaire pour pouvoir l'utiliser sur n'importe quelle feuille Excel….
    Curt
    Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
    ---------------------------------------------------------------------
    Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
    Et si vous faisiez un bon geste en 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  9. #9
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Tout d'abord, merci MarcelG pour ta proposition. J'avoue être un peu perdu car le code est très différent de celui sur lequel je travaillais.

    Curt, un très grand merci car grâce à toi, voilà la première fois que je parviens à intégrer une macro dans une feuille excel, et qui répond à mon besoin initial!

    Maintenant qu'on en est là, j'avoue observer quelques petites limites à cette méthode :
    - la capture intègre tous les accessoires normalement non présents lors d'une impression (coin rouge pour les cases contenant des commentaires...)
    - il faut définir la plage à capturer, alors que par impression la zone d'impression est automatiquement sélectionnée
    - par impression il est possible de jouer sur la qualité du résultat obtenu

    Ainsi, pensez-vous qu'il soit possible de transposer le travail réalisé jusqu'à présent (enregistrement jpg, dans le dossier qui va bien, nom de fichier en L9...) mais en demandant à la macro qu'elle imprime un jpg grâce à mon profil standard pdfcreator?

    Les choses que j'ai pu croiser sur les forums ne fonctionnent pas, pour différentes raisons si j'ai bien compris (développées pour des versions très anciennes de pdfcreator, ou encore pour des versions excel 32bits...).

    Merci d'avance, en espérant que ce soit pas un trop gros challenge...!

    P.S : ca correspond nu plus ni moins qu'à automatiser ce que je fais aujourd'hui manuellement : imprimer en jpg grâce à pdf creator chacune de mes feuilles excel

  10. #10
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    Exemple simple d'export d'un champ en JPG

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub ExportZoneTableau()
      Set f = ActiveSheet
      fichier = ThisWorkbook.Path & "\exportimage.jpg"
      f.Range("A1").CurrentRegion.Select
      Set champExport = Selection
      champExport.CopyPicture xlScreen, xlBitmap
      With champExport.Parent.ChartObjects.Add(0, 0, champExport.Width, champExport.Height).Chart
        While .Shapes.Count = 0
            DoEvents
            .Paste
        Wend
        .Export fichier, "Jpg"
        .Parent.Delete
      End With
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  11. #11
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci boisgontierjacques. C'est en effet un code qui m'a l'air simple, et qui reprend le principe de fonctionnement du précédent que j'ai réussi à faire fonctionner. Malheureusement, il en reprend les inconvénients aussi. Avez-vous une solution pour passer l'export par pdfcreator?

    Merci à vous

  12. #12
    Membre expérimenté
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 747
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour à tous,

    Sinon, peut-être installer une imprimante virtuelle qui fait ça ?
    https://code-industry.net/imageprinter/

  13. #13
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonsoir,

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
          Répertoire & NomFichier & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
          IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
    Boisgontier
    Fichiers attachés Fichiers attachés

  14. #14
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message
    Bonjour à tous,

    Sinon, peut-être installer une imprimante virtuelle qui fait ça ?
    https://code-industry.net/imageprinter/
    Tout à fait!

    C'est pourquoi j'ai pdfcreator qui me permet justement cet export en jpg, et qui me convient parfaitement en terme de rendu obtenu. C'est juste l'automatisation qui me manque. En gros je voudrais qu'en cliquant sur un bouton, pdfcreator soit automatiquement sollicité pour imprimer la zone d'impression de la feuille active en jpg avec les profils par défaut de pdfcreator. Ca me permettrait d'éviter la démarche manuelle qui me prend beaucoup de temps sur chacune des feuilles.

  15. #15
    Membre expérimenté
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 747
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour à tous,

    C'est pourquoi j'ai pdfcreator qui me permet justement cet export en jpg
    De la lecture proposée, alors... : https://www.developpez.net/forums/d1...interface-com/

  16. #16
    Membre habitué
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2019
    Messages : 151
    Points : 185
    Points
    185
    Par défaut
    Bonjour à tous

    si çà peut intéresser
    Nota: la plage des feuilles est à adapter


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Sub SauvegardeJPG()
     
    Dim Plage As Range, Feuille As String
    Dim NomFeuille As String
    Dim NBfeuille As Integer
    Dim i As Integer
     
    NBfeuille = Worksheets.Count
        For i = 1 To NBfeuille
            Worksheets(i).Activate
            Feuille = ActiveSheet.Name
            Set Plage = Range("A1:D20") ' à adapter
     
            Application.ScreenUpdating = False
            Workbooks.Add
            Plage.CopyPicture
            ActiveSheet.Paste
                With ActiveSheet.ChartObjects.Add(0, 0, _
                    Selection.Width, Selection.Height).Chart
                    .Paste
                    .Export ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.Name & "-" & Feuille & ".jpg", "JPG"
                End With
            ActiveWorkbook.Close False
        Next
     
    End Sub

  17. #17
    Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci TonyNiort79.

    Ce code reprend celui de Curt qui fonctionne très bien (mais ne répond pas parfaitement à mon besoin).

    Il faut que je prenne le temps de lire le lien de tototiti2008 en espérant comprendre un minimum pour l'appliquer chez moi, et je reviens vers vous :-)

    Merci

Discussions similaires

  1. [XL-2003] imprimé feuille excel directement d'un userform avec combobox
    Par tazko dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/01/2011, 23h35
  2. imprimer feuille excel bouton/macro
    Par shaku dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/02/2009, 15h47
  3. [POI][JDIC] Imprimer plusieurs "feuilles" Excel
    Par nesbla dans le forum Documents
    Réponses: 2
    Dernier message: 22/02/2008, 12h27
  4. Réponses: 21
    Dernier message: 18/05/2007, 09h44
  5. imprimer feuille excel depuis access
    Par Jean Bonnisme dans le forum Access
    Réponses: 3
    Dernier message: 18/11/2004, 08h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo