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 :

Exporter des images en vba [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Exporter des images en vba
    bonjour,
    je suis débutant en vba et j'essaie d'exporter 2 résultats en image jpg
    le programme fonctionne pour la 1ere exportation mais pas pour la seconde où ca coince au niveau de chart2.Paste

    quelqu'un aurait il la solution
    merci

    mon programme :
    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
    Sub exporte_image()
    Dim Plage1 As Range
    Dim Plage2 As Range
    Dim chart1 As Object
    Dim chart2 As Object
    With Sheets("Feuil1")
        Set Plage1 = .Range("A2:K68")
        Plage1.CopyPicture
        Set chart1 = .ChartObjects.Add(Plage1.Left, Plage1.Top, Plage1.Width, Plage1.Height).Chart
        chart1.Paste
        chart1.Export "d:\image_1.jpg", "jpg"
        .ChartObjects.Delete
     
        Set Plage2 = .Range("A69:K180")
        Plage2.CopyPicture
        Set chart2 = .ChartObjects.Add(Plage2.Left, Plage2.Top, Plage2.Width, Plage2.Height).Chart
        chart2.Paste
        chart2.Export "d:\image_2.jpg", "jpg"
    End With
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A partir d'une adaptation du code trouvé dans la FAQ
    http://excel.developpez.com/faq/?pag...apier#Snapshot

    J'ai décomposé votre code en deux macros. L'une pour générer une image, l'autre pour lancer cette macro et l'appliquer sur vos deux zones.


    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
    Sub Tester_Exporte_Image()
     
    Dim AireACopier As Range
    Dim RepertoireSauvegarde As String
    Dim NomDeLImageASauvegarder As String
     
      RepertoireSauvegarde = "C:\Users\Eric\Documents\VBA Excel\Développez-Com\Images\Sauvegarde d'images\"
     
      Set AireACopier = ActiveSheet.Range("A2:K68")
      NomDeLImageASauvegarder = "Image1.jpg"
     
      Call Exporte_Image(AireACopier, RepertoireSauvegarde, NomDeLImageASauvegarder)
     
      Set AireACopier = Nothing
     
      Set AireACopier = ActiveSheet.Range("A69:K180")
      NomDeLImageASauvegarder = "Image2.jpg"
     
      Call Exporte_Image(AireACopier, RepertoireSauvegarde, NomDeLImageASauvegarder)
     
     Set AireACopier = Nothing
     
     
     
    End Sub
     
     
    Sub Exporte_Image(PlageACopier As Range, Chemin As String, NomImage As String)
     
    Dim ShapeImage As Shape
    Dim Chart1 As Chart
     
     
     
        With ActiveSheet
     
                PlageACopier.CopyPicture
                .Paste
                Set ShapeImage = .Shapes(.Shapes.Count)
     
                Set Chart1 = .ChartObjects.Add(ShapeImage.Left, ShapeImage.Top, ShapeImage.Width, ShapeImage.Height).Chart
                With Chart1
                    .Paste
                    .Export Chemin & NomImage, "jpg"
                End With
     
                .ChartObjects(ActiveSheet.ChartObjects.Count).Delete
                .Shapes(ActiveSheet.Shapes.Count).Delete
     
                Set Chart1 = Nothing
                Set ShapeImage = Nothing
     
       End With
     
    End Sub
    Cordialement.

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    cela marche

    merci beaucoup

  4. #4
    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 Plage blanche
    Bonjour Eric, Bonjour le Forum,

    (désolé pour mon absence)

    Eric,

    J'ai testé ton code pour un champ contenant un shape et du texte
    La première fois : impeccable
    A partir de la deuxième fois : la zone est blanche ?

    En exécutant pas à pas, une image est bien créée mais
    à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Chart1 = .ChartObjects.Add(ShapeImage.Left, ShapeImage.Top, ShapeImage.Width, ShapeImage.Height).Chart
    une autre, blanche, apparaît et c'est elle qui est exportée.

    Voici le code

    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
    Sub Tester_Exporte_Image()
     
    Dim AireACopier As Range
    Dim RepertoireSauvegarde As String
    Dim NomDeLImageASauvegarder As String
     
      RepertoireSauvegarde = ThisWorkbook.Path
     
      Set AireACopier = Worksheets("Utilitaires").Range("en_tête_évol_CA")
      NomDeLImageASauvegarder = "Image1.jpg"
     
      Call Exporte_Image(AireACopier, RepertoireSauvegarde, NomDeLImageASauvegarder)
     
     
     Set AireACopier = Nothing
     
     
     
    End Sub
     
     
    Sub Exporte_Image(PlageACopier As Range, Chemin As String, NomImage As String)
     
    Dim ShapeImage As Shape
    Dim Chart1 As Chart
     
         With ActiveSheet
     
                PlageACopier.CopyPicture
                .Paste
                Set ShapeImage = .Shapes(.Shapes.Count)
     
                Set Chart1 = .ChartObjects.Add(ShapeImage.Left, ShapeImage.Top, ShapeImage.Width, ShapeImage.Height).Chart
                With Chart1
                    .Paste
                    .Export Chemin & "\" & NomImage, "jpg"
                End With
     
                .ChartObjects(.ChartObjects.Count).Delete
                .Shapes(.Shapes.Count).Delete
     
                Set Chart1 = Nothing
                Set ShapeImage = Nothing
     
       End With
     
    End Sub
    Quelque chose doit m'échapper.

    Merci par avance

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Bonjour,

    Ta zone Range("en_tête_évol_CA") correspond bien à la zone que tu veux exporter ?

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    tient tient 2010 aussi ?????
    aurais tu W10 comme system d'exploitation?
    toujour est il que le probleme est l'acces au chart apres sa creation qui semble perturbé dans les versions 2016 2013 et maintenant 2010 quand elle tournent avec Windows 10
    d'ou cette image blanche

    j'ai mis cela dans les contributions qui semble fonctionner de 2017 a 2016 sur W 7,8,10
    https://www.developpez.net/forums/d1.../#post10176781

  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
    Hé, Salut Patrick!

    B... de M.....!!!

    J'ai essayé 10 fois et cela fonctionne!

    Dans mes - modestes - réponses, je dis toujours
    Relis le code, ligne par ligne, presque mot à mot, en t'octroyant tous les moyens pour comprendre et reviens si nécessaire
    Autant te dire "A l'année prochaine"

    Les Array, Dictionnaires, Formulaires..., je veux bien mais là!

    Merci Patrick.

    Bon week-end à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Trier et exporter des données en VBA
    Par nesta09 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 25/01/2013, 11h14
  2. Exporter des images sous word
    Par Donutsdog dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/01/2011, 14h38
  3. Exporter des images en CMJN avec imagecreatetruecolor
    Par cassandremorales dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/05/2010, 09h05
  4. exporter des images depuis excel
    Par LiBasic dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 17/04/2008, 14h07

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