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

WinDev Discussion :

Copier cellule Excel en tant qu'image [WD16]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 22
    Points
    22
    Par défaut Copier cellule Excel en tant qu'image
    Salut à tous!

    Je suis actuellement entrain de me prendre la tête sur une méthode qui dans une classe de pilotage Excel copie une plage de cellule en tant qu'image, la colle dans un graphe puis enregistre cette image en tant que GIF.

    Le but final de cette méthode est de me renvoyer cette image que je stockerai dans un mémo binaire pour l'enregistrer dans ma base de donnée.

    Le seul problème c'est que l'image ainsi renvoyée à une taille qui ne correspond pas à la taille du graphe et donc l'image souhaité de la plage de cellule est trop petite.

    Quelqu'un aurait-il une solution?

    Merci

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    bonjour,

    tu peux nous dire exactement comment tu procèdes et si il y a du code ce que tu utilises ? Qu'entends-tu par Graphe ?

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 22
    Points
    22
    Par défaut
    Oui c'est vrai que sa va être difficile sans code lol !

    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
    PROCEDURE SaveRangeAsImage(sPlage = "")
     
    nLargeur 		est un entier
    nHauteur 		est un entier
    sGraph est une chaîne
     
     
    SI sPlage <> "" ALORS
    	:SelectionnerCellules(sPlage)
    FIN
     
    QUAND EXCEPTION DANS
    	//Paramètre 1 : 1 correspondant à xlScreen
    	//Paramètre 2 : 2 correspondant à xlBitmap
    	:m_pautExcel>>Selection>>CopyPicture(1,2)
    FAIRE
    	:MsgErreur("Impossible de sélectionner la plage en tant qu'image.", ExceptionInfo())
    FIN
     
    nLargeur = :m_pautExcel>>Selection>>Width
    nHauteur = :m_pautExcel>>Selection>>Height
     
    QUAND EXCEPTION DANS
     
    	:m_pautExcel>>Charts>>Add()
     
    	// -4098 correspond à xl3DArea
    	:m_pautExcel>>ActiveChart>>ChartType = -4098
     
     
     
    FAIRE
    	:MsgErreur("Impossible de créer le graphe.", ExceptionInfo())
    	RETOUR
    FIN
     
    QUAND EXCEPTION DANS
     
    	//paramètre 1 : xlLocationAsObject = 2
    	:m_pautExcel>>ActiveChart>>Location(2, :m_pautExcel>>ActiveSheet>>Name)
    FAIRE
    	//Rien car exception non fatale
    FIN
     
    //On vide le graphe car il n'est la que pour réceptacle de l'image
    :m_pautExcel>>ActiveChart>>ChartArea>>ClearContents
    //On colle l'image qui se trouve dans le presse papier
    :m_pautExcel>>ActiveChart>>Paste
     
    sGraph = :m_pautExcel>>Mid(:m_pautExcel>>ActiveChart>>Name, :m_pautExcel>>Len(:m_pautExcel>>ActiveSheet>>Name)+1)
     
    //Puis on exporte cette image en tant que GIF
    :m_pautExcel>>ActiveChart>>Export("current_Picture.gif","GIF")
    Voila, cette méthode fait partie intégrante de la classe CExcel et m_pautExcel est un OLE automation.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 22
    Points
    22
    Par défaut
    Ah oui et la ligne
    sGraph = :m_pautExcel>>Mid(:m_pautExcel>>ActiveChart>>Name, :m_pautExcel>>Len(:m_pautExcel>>ActiveSheet>>Name)+1)

    ne fonctionne pas!
    Je l'avais rajouté entre temps pour essayer quelque chose qui n'a visiblement pas fonctionné!!!

  5. #5
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    je te donne une autre méthode en passant par un champ image windev (qui peut être invisible) et le presse-papier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ExcelObj  est un objet OLE "Excel.Application"
    ExcelObj>>Application>>Visible = True
    ExcelObj>>Workbooks>>Open("f:\classeur1.xls")
    ExcelObj>>Range("A1:C2")>>Copy()
    Image1..Largeur = PressePapierLargeur()
    Image1..Hauteur = PressePapierHauteur()
    PressePapier(Image1)
    dSauveImagePNG(Image1,"F:\MesCellules.png")
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 46
    Points : 22
    Points
    22
    Par défaut
    Encore une fois J-P tu m'impressionne!!

    Merci beaucoup en tout cas!

    Cordialement,
    Jiybee

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

Discussions similaires

  1. VBA - Copier tableau excel dans Word en Image
    Par pofito dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/02/2014, 18h20
  2. Copier cellule Excel vers table Access
    Par HERBAG dans le forum Général VBA
    Réponses: 1
    Dernier message: 09/12/2013, 11h21
  3. Copier cellule Excel dans un champ de formulaire
    Par AAS31 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/05/2012, 19h41
  4. Réponses: 4
    Dernier message: 26/04/2011, 13h29
  5. VBA -Copier cellules Excel vers outlook
    Par Rdesfx dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/11/2008, 16h29

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