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 :

Comment sauvegarder un objet shape de type msopicture dans une variable


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment sauvegarder un objet shape de type msopicture dans une variable
    Bonjour,

    Je tente depuis pas mal de temps de convertir une image que j'ai dans un fichier Excel en type binary. J'ai fait un test avec un fichier jpg présent sur mon disque dur de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        ImgFile = "c:\pcotest.jpg"
     
        intFile = FreeFile
        Open ImgFile For Binary As #intFile
        ImgLen = LOF(intFile)
        ReDim ImgBuff(ImgLen) As Byte
        Get #intFile, , ImgBuff()
        Close #intFile
    J'aimerais maintenant remplacé le jpg pcotest par une image de mon fichier Excel que j'ai réussi a retrouvé en utilisant l'objet shape. Mon image est de type msopicture. Malheureusement, je n'ai pas réussi et je n'ai trouvé aucune information sur aucun forum qui couvrirait ce sujet.

    Quelqu'un peut-il m'aider ?

    Pascal

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as peut-être une solution en copiant l'image contenue dans le fichier Excel dans un chartGraph vide et en l'enregistrant en tant que jpg. Ça, c'est possible. Tordu mais possible. La solution a, me semble-t-il été donnée par Cafeine "yalonten"
    Tu dis

    "Une" solution...
    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
    Sub CopierImageEtEnregistrerEnJpg()
    Dim NomFich
    Dim FL1 As Worksheet
        NomFich = "D:\xls\Image.jpg" 'Nom de la "future" image
        Set FL1 = Worksheets("Feuil1")
        FL1.Select
        'Range("A1").Select
        FL1.Shapes(FL1.Shapes.Count).Select 'sélection de l'image
        Selection.Copy 'ou .cut
        For i = 1 To 50000 'laisse au système le temps de copier l'image
            DoEvents
        Next
        Set Graphe = Charts.Add 'insertion d'un graphe vide
        Graphe.ChartType = xlLineMarkers 'ou autre...
        Graphe.SetSourceData Source:=Sheets("Feuil1").Range("A1")
        Graphe.Location Where:=xlLocationAsObject, Name:="Feuil1"
     
        'La difficulté sera peut-être dans le redimensionnement du graphe
        FL1.ChartObjects(FL1.ChartObjects.Count).Height = 900 'largeur du graphe
        DoEvents
     
        FL1.ChartObjects(FL1.ChartObjects.Count).Select 'sélection du graphe
        ActiveChart.ChartArea.Select '
        ActiveChart.Paste 'collage de l'image dans le graphe
        DoEvents
     
        DoEvents
        Range("A1").Select
        FL1.Shapes(FL1.Shapes.Count).Select
        ActiveChart.Export NomFich, "JPG" 'Enregistrement de l'image
        DoEvents
        MsgBox "fini !"
     
        FL1.ChartObjects(FL1.ChartObjects.Count).Select
        Selection.Delete 'suppression du graphe avec son image
     
        'CONTRÔLE : L'image existe-t-elle bien ?
        FL1.Pictures.Insert("D:\xls\Image.jpg").Select 'insertion de l'image
     
        Set FL1 = Nothing
     
    End Sub
    C'est long, ça paraît compliqué... mais je n'ai pas mieux
    (De mémoire, d'après une idée de Cafeine)
    Testé avec une seule image dans la feuille de calcul. Si tu en as plusieurs, ça rique dêtre plus sioux

    Edit
    Bienvenue sur le forum

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/06/2012, 19h34
  2. Réponses: 1
    Dernier message: 23/05/2012, 22h41
  3. Comment lire un fichier XML et l'écrire dans une variable XML en C#
    Par Bonne Année dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/01/2009, 13h34
  4. Réponses: 0
    Dernier message: 16/01/2009, 15h15
  5. Mettre des fichier de type *.doc dans une variable
    Par Macandre dans le forum VBScript
    Réponses: 1
    Dernier message: 28/02/2007, 18h05

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