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 :

[VBA-E] Image d'une plage de cellule [Trucs & Astuces]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de flogreg
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 432
    Points : 392
    Points
    392
    Par défaut [VBA-E] Image d'une plage de cellule
    Je sais que l'on peut enregistrer un graphique en image. Je voudrais savoir si on pouvait créer un fichier image d'un tableaux Excel par exemple je voudrais dire que de A1 à C6 doit etre sauvegardé en image. Pour l'instant, pour créer l'image j'utilise la table de données du graph mais bon c'est un peu bancal comme solution!!!

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    J'ai encore plus tordu : en utilisant un ShapeRange

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim wsh As Worksheet, sh As Shape, myplage As Range
    Set wsh = Worksheets("Feuil1")
    Set sh = wsh.Shapes.AddShape(msoShapeRectangle, 0, 0, 10, 10)
    Set myplage = wsh.Range("A1:C6")
    myplage.Copy
    sh.Select (myplage)
    wsh.Paste
    sh.Delete
    mais la méthode a l'avantage de produire un gif transparent
    dont on peut à loisir choisir le fond (même texturé) etc.

  3. #3
    Membre averti Avatar de flogreg
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 432
    Points : 392
    Points
    392
    Par défaut
    Merci c'est exactement ce que je voullais car j'utilise ces tableau pour les afficher sur l'intranet et ma solution m'oblige à faire des découpage à l'affichage donc ce n'est pas viable comme solution!!!
    par contre comment faire pour l'enregistrer en fichier image?Il faut le publier? Créer une procédure pour le sauvegarder?

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Sers-toi du presse papier et d'un controle Image
    (ou à défaut d'un object chart qui se comporte comme tel)

    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
    Sub Export_RangeAsImage(MyPlage As Range, FullFileName As String, Optional ImageFilter As String = "GIF")
        Dim wsh As Worksheet, sh As Shape, ch As ChartObject
        Set wsh = MyPlage.Worksheet
        Set sh = wsh.Shapes.AddShape(msoShapeRectangle, 0, 0, 10, 10)
        sh.Select (MyPlage)
     
        MyPlage.Copy
        wsh.Paste
        sh.Delete
     
        Selection.Copy
        Set ch = ActiveSheet.ChartObjects.Add(0, 0, Selection.Width, Selection.Height)
        ch.Border.LineStyle = 0
        ch.Chart.Paste
        Selection.Delete
     
        ch.Chart.Export Filename:=Split(FullFileName, ".")(0) & "." & ImageFilter, FilterName:=ImageFilter
        ch.Delete
    End Sub

  5. #5
    Membre averti Avatar de flogreg
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 432
    Points : 392
    Points
    392
    Par défaut
    c'es parfait ca roule. Me reste plus qu'à integrer cette procédure au reste pour l'automatiser et ce sera bon!!!! Merci

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

Discussions similaires

  1. VBA-merge/unmerge d'une plage de cellule
    Par gwen.s dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2010, 10h20
  2. [VBA-E] Exporter une plage de cellule en image GIF
    Par cafeine dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2007, 17h12
  3. Réponses: 2
    Dernier message: 27/09/2006, 19h41
  4. [VBA] Parcourir une plage de cellule
    Par Dinytro dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/09/2005, 08h18
  5. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 11h28

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