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

VB 6 et antérieur Discussion :

[VB6]Insertion image dans Excel


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Points : 77
    Points
    77
    Par défaut [VB6]Insertion image dans Excel
    Bonjour,
    Je suis pas sure de poster au bon forum, alors désolé par avance si ca n'a rien à voir.

    A partir d'une appli vb6, je voudrais ouvrir un doc excel et y mettre dedans une image à une certaine place. L'ouverture se fait bien mais c'est pour positionner l'image que ca coince... J'ai en table acces le chemin ou allez chercher l'image et j'ouvre un doc excel2000.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveSheet.Shapes.AddPicture(SLogo, msoFalse, msoCTrue, 40, 50, 120, 40).Name = "monimage"
    Là, ca marche mais ca déforme l'image, alors pour essayer de donner un cadre j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ActiveSheet.Shapes.AddPicture(SLogo, msoFalse, msoCTrue, 40, 40).Name = "monimage"
    With ActiveSheet.Shapes("monimage")
            .Top = Range("d4").Top
            .Left = Range("d4").Left
            .Height = Range("d4:d7").Height
            .Width = Range("d4:f4").Width
    End With
    Là, ca voudrait marcher mais bizarrement, j'obtiens une largueur démesurée !!! et si j'inverse .height et .width, c'est une hauteur démesurée que j'obtiens !!!
    Bon alors j'ai trouvé aussi l'utilisation de ; ActiveSheet.Pictures.Insert
    Mais là curieusement, avec mon excel, la propriété 'Pictures' n'existe pas !!!??? et je ne peux donc pas utiliser cette solution, alors comment faire ? avez-vous une idée ?
    Merci beaucoups.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    (...)
    With ActiveSheet.Shapes("monimage")
              .LockAspectRatio = msoFalse
             .Top = Range("d4").Top
    (..)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Points : 77
    Points
    77
    Par défaut
    Merci Bbil, désolé de répondre si tardivement. J'ai rajouté la ligne que tu m'as conseillé et ca marche. Enfin en partie ....
    Disons que ca ne marche qu'une fois. Si je relance la validation de la frm qui génère le doc excel avec donc l'image insérée, là ca plante ! comme ci il ne voulait plus recréer une image déjà en place ;(
    (l'idée c'est de mettre en 'paramètre' sur une frm un certain nb d'info, dont 1 image, et à la validation de ce frm => ca genere la feuille excel)

    Alors en cherchant j'ai vu que l'on pouvait aussi utiliser l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveSheet.Pictures.Insert("image")
    Mais en testant chez moi, je n'ai pas la propriété 'Pictures" qui est proposée !!!??? est-ce que ce serait pas un probleme de versions ? j'utilise excel2000

    Merci de vos réponses ;-)

  4. #4
    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
    Où se trouve ton image ?
    Si dans "image" tu as mis le chemin et le nom du fichier, ça devrait fonctionner sans rien changer.
    Si ce n'est pas le cas, essaie de désigner la feuille de calcul à la place de activesheet (???) à tout hasard, il nous faudrait plus de code

    A+


    NB - "Chez toi, tu ne dois pas avoir validé la bonne référence dans VB.
    Vérifie qu'une référence n'est pas marquée "MANQUANT" dans l'éditeur VB -> Outils -> Références

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Points : 77
    Points
    77
    Par défaut
    Salut Ouskel,
    Ds mon projet j'ai les références :
    Microsoft ActiveX data objets 2.8
    Microsoft Excel 9.0 Object Library
    Microsoft Office 9.0 Object Library

    "Vérifie qu'une référence n'est pas marquée "MANQUANT" dans l'éditeur VB -> Outils -> Références"
    Ds le menu 'Outils' je n'ai pas de sous-menu 'Références' !?

    Et sinon voici un bout de 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
     
        If DocumentouvertE = False Then
            L = L + 1
            Set objExcel(L) = CreateObject("Excel.Application")
            Set objDocumentE(L) = objExcel(L).Workbooks.Open(App.Path & "\Docs\Docexcel.xls")
            objExcel(L).DisplayAlerts = wdAlertsNone 
            DocumentouvertE = True
        End If
     
        Set Feuille = objExcel(L).ActiveWorkbook.ActiveSheet
        Feuille.Shapes.AddPicture(SLogo, msoFalse, msoCTrue, 0, 0, 0, 0).Name = "monimage"
        With Feuille.Shapes("monimage")
            .LockAspectRatio = msoFalse
            .Top = Range("d4").Top
            .Left = Range("d4").Left
            .Height = Range("d4:d7").Height
            .Width = Range("d4:f4").Width
        End With
        objExcel(L).Visible = True
    Voilà, SLogo est en faite le nom complet du chemin ou se trouve l'image (C:\Images\test.jpg). Et ca marche bien la première fois, mais pas la 2ieme

  6. #6
    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
    Et si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Feuille.Pictures.Insert(SLogo)
        With Selection   'A adapter / VB ********
            .Name = "monimage" 
            .LockAspectRatio = msoFalse 
            .Top = Range("d4").Top 
            .Left = Range("d4").Left 
            .Height = Range("d4:d7").Height 
            .Width = Range("d4:f4").Width 
        End With
    Je n'ai pas VB, je ne peux donc pas vérifier ****** donc, juste pour l'idée

    A+

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    ben c'est normal que cela ne marche qu'une fois ... tu ne avoir qu'une image avec le même nom ... il faut changer le nom ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Feuille.Shapes.AddPicture(SLogo, msoFalse, msoCTrue, 0, 0, 0, 0).Name = "monimage"
        With Feuille.Shapes("monimage")
    à remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim s As Shape
    Set s = feuille.Shapes.AddPicture(slogo, msoFalse, msoCTrue, 0, 0, 0, 0)
       With s
    (...)
    .. excel te généra seul le nom de l'image.. tu peu le récupérer par s.name...

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Points : 77
    Points
    77
    Par défaut
    Ca ne marche pas car le ".Pictures" n'est pas reconnu et du coup tout se qui suit non plus
    (.Name = "monimage", .LockAspectRatio , etc...)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Points : 77
    Points
    77
    Par défaut
    Bbil
    Après essai ca ne marche tj pas, je pense qu'il doit s'agir d'un pb de référence car avec ta formule, j'obtiens "Methode ou menbres de données introuvables" !? C.a.d qu'il ne reconnait pas les .name, .LockAspectRatio, etc.

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par mosquitout
    Bbil
    Après essai ca ne marche tj pas, je pense qu'il doit s'agir d'un pb de référence car avec ta formule, j'obtiens "Methode ou menbres de données introuvables" !? C.a.d qu'il ne reconnait pas les .name, .LockAspectRatio, etc.
    tu est sous VB6... essai:


  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Points : 77
    Points
    77
    Par défaut
    Merci bil, C bon :o

    Mais je reste bloqué sur la non utilisation de "pictures" ? un truc comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set p = ActiveSheet.Pictures.Insert(PictureFileName)
    devrai pouvoir marcher, non ???
    Quand vous mettez ActiveSheet. , vous avez "Pictures" dans la liste des propriétés proposées, et bien moi non ?!

    Je suis preneur de toute idée. Cette utilisation de Pictures m'aurai bien plus car j'ai trouvé du code pour "centrer une image à l'intérieur d'un cadre défini et tout en gardant ses proportions (hauteur/largeur)"

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par mosquitout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set p = ActiveSheet.Pictures.Insert(PictureFileName)
    devrai pouvoir marcher, non ???
    Quand vous mettez ActiveSheet. , vous avez "Pictures" dans la liste des propriétés proposées, et bien moi non ?!
    non on ne la pas ... et dans l'aide en ligne Excel 2002 ..
    Élément de langage masqué
    Vous avez demandé de l'aide pour un élément de langage qui est masqué et auquel vous ne pouvez, par conséquent, accéder par programmation.
    ..
    cependant le code donné fonctionne

    tu la testé sous ton excel (pas VB6..)

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 140
    Points : 77
    Points
    77
    Par défaut
    Ok Bil,
    Quant tu dit, "tu la testé sous ton excel (pas VB6..)", tu veux bien dire que j'utilise en fait du vba et non du vb ? c'est ca ?
    Effectivement, j'ai trouvé la 'source' de ce code sous des exemple vba, mais je pensai que c'était très proche de vb et donc ..... mais apparement non Bon vu que je ne suis pas pros d'excel, je vais plonger dans le tuto de M.Rabilloud sur ce site, ce sera peut-être plus clair après

    En tout cas merci de vos conseils

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

Discussions similaires

  1. Insertion Image dans Excel
    Par Pascal Lob dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 15/09/2009, 20h26
  2. [C#] Inserer une image dans Excel
    Par Tuizi dans le forum Windows Forms
    Réponses: 5
    Dernier message: 01/06/2006, 10h08
  3. [VB6] Insérer une image dans Excel
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/04/2006, 15h39
  4. [Upload] Insertion image dans mysql après upload
    Par alexmorel dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 23h46
  5. [VB6]Affichage images dans un datareport
    Par papadethiediouf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/01/2006, 19h53

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