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 dessin en gif ou jpg


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut Exporter dessin en gif ou jpg
    Bonjour,

    J'ai crée un dessin sous excel (flèche, image gif, etc..) j'ai groupé l'ensemble et obtenu un objet. Comment l'exporter en format image ?
    D'autre part, est-ce que cet objet pourrait apparaitre quelque part dans l'éditeur VBA? (comme les sheet , contrôle...)
    Cordialement.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour l'exporter en tant qu'image tu dois coller ton dessin dans un graphique vide. Cafeine a écrit quelque chose là-dessus que tu devrais retrouver soit dans la FAQ, soit dans ses tutos.
    Je regarde mais cherche de ton côté.
    Si on ne trouve pas, je dois avoir ça dans un coin
    A+

    J'ai trouvé mais je ne me souvenais pas qu'il s'agissait d'une plage de cellules.
    http://www.developpez.net/forums/sho...&highlight=gif
    Par contre, je suppose (puisque je l'ai fait avec des photos) que tu peux obtenir une copie de ton dessin et la coller dans le graphe afin de l'enregistrer au format voulu.
    Doit falloir le sélectionner, puis le copier, sélectionner le graphe et le coller dedans.
    Avant de le coller, tu dois connaître ses dimensions afin d'avoir un graphe de la même taille.
    Jète déjà un oeil à l'url ci-dessus et reviens avec tes questions

    J'ai également trouvé une variante ici
    Le principe reste le même sauf qu'il s'agit là d'une copie d'écran.
    Edit
    Les éléments de ton dessin doivent être groupés si tu ne veux pas le coller par petits bouts

    Je réponds à la question que tu ne m'as pas encore posée : Pourquoi dans un graphe ? Parce qu'il n'y a que lui qui dispose de la méthode Export pour une image.

  3. #3
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Dim chO As ChartObject
     
        If TypeName(Selection) = "GroupObject" Then
            Set chO = Sheets(1).ChartObjects.Add(0, 0, Selection.Width, Selection.Height)
            chO.Visible = False
            Selection.Copy
            chO.Chart.Paste
     
            chO.Chart.Export "E:\truc1.jpg", "JPEG"
            chO.Delete
        End If

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut
    Pas mal, ça marche plutot bien,
    mais j'ai un autre pb,

    si j'insère un bouton de commande à côté pour créer mon image
    je selectionne tout avec Worksheets(1).Shapes.SelectAll

    .. la macro me prend aussi l'image du bouton. L'idéal est de déselectionner le controle mais pas possible. Autre solution, passer par cette macro trouvé sur le web que j'ai un peu modifiée:
    mais alors la selection est de type Drawingobjects et ta macro marche plus.

    Comment faire ? merci tout le monde pour vos contributions..

    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
    Sub GroupementShapes_Conditionnel()
        Dim Sh As object
        Dim Tableau() As variant
        Dim i As Integer
        i=0
        'Boucle sur les formes de la feuille active
        For Each Sh In ActiveSheet.Shapes
            'Vérifie si le nom de la forme n'est pas le bouton
            If Left(Sh.Name, 3) = "Commandbutton1" Then
                i = i + 1
                'Redéfinit la taille du tableau et intègre le nom de la forme.
                ReDim Preserve Tableau(1 To i)
                Tableau(i) = Sh.Name
            End If
        Next
     
        'On sort si le tableau est vide.
        If i = 0 Then Exit Sub
     
        'Regroupe les formes dont le nom se trouve dans le tableau
        Set Sh = ActiveSheet.Shapes.Range(Tableau)
     
        Sh.select ' et là c'est un drawingobjects !
     
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut
    Le message plus haut fait suite à la macro de darkvader

    La methode d'ouskelnor à l'avantage de gérer la selection mais il faut quand même intervention de l'opérateur pour dimensionner la plage séléctionnée..


  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Pour énumérer la collection des objects groupés d'une feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim sh As Worksheet, grpObj As GroupObject
     
        Set sh = Worksheets(1)
        For Each grpObj In sh.GroupObjects
            grpObj.Copy
            'ect
        Next
    Inutile de chercher GroupObject(s) dans l'aide en ligne, ce n'est pas documenté.

    Pour grouper un ensemble d'objects par leur nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    '.../...
        sh.Shapes.Range(Array(nom1, nom2, nomEtc)).Group

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Par défaut
    Bonjour à tous,
    Avec vos contributions j'arrive (enfin) à cette macro qui me satisfait :
    nota :
    -finalement j'ai pas besoin de grouper les objets pour obtenir mon image
    -je peux choisir les objets que je veux garder pour l'export en jpeg et en exclure d'autre (ici j'exclu un bouton qui se trouve sur ma feuille)
    -il reste le pb de la taille de la zone graphique choisi pour l'export qui est pré-défini dans mon exemple Set chO = Sheets(1).ChartObjects.Add(0, 0, 350, 310) 'taille arbitraire


    merci à tous

    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
    Sub essai_dessin()
     Dim chO As ChartObject
     Dim sh As Worksheet, Obj As Shape
     Dim Tableau() As Variant
     
     Dim i As Integer
     Dim num_obj As Integer
     
        i = 0
        Set sh = Worksheets(1)
     
     
        For Each Obj In sh.Shapes 'on recense toutes les formes de la feuille
            If Obj.Name <> "Commandbutton1" Then 'on exclu la forme bouton de l'image final
                i = i + 1
                'Redéfinit la taille du tableau et intègre le nom de la forme.
                ReDim Preserve Tableau(1 To i)
                Tableau(i) = Obj.Name
     
            End If
        Next
        'On retient le nombre de formes
        num_obj = i
     
     
        'on creer la carte en jpg
            Set chO = Sheets(1).ChartObjects.Add(0, 0, 350, 310) 'taille arbitraire
            For i = 1 To num_obj
                   sh.Shapes(Tableau(i)).Copy
                   chO.Chart.Paste
                   chO.Chart.Export "C:\truc.jpg", "JPEG"
     
            Next
            chO.Delete
     
     
     
    End Sub

Discussions similaires

  1. [Traitement d'image] Transformer un fichier html en Gif ou jpg
    Par PrinceMaster77 dans le forum Webdesign & Ergonomie
    Réponses: 6
    Dernier message: 03/08/2006, 13h20
  2. Réponses: 1
    Dernier message: 19/06/2006, 19h47
  3. Afficher tout type d'image (gif ,png, jpg...)
    Par jfb53 dans le forum C++Builder
    Réponses: 22
    Dernier message: 20/07/2005, 14h52

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