EXCEL 2007 - INSERER UNE IMAGE

Résolu
Anna -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Sous EXCEL 2007, je cherche desesperement à insérer une image par VBA dans une feuille et cellule en particulier. j'ai mis un bouton sur la feuil1 et assigner la macro suivante:

j'ai essayé cela:

Sub TestInsertPicture()
InsertPictureInRange "D:\Documents and Settings\anna\Desktop\OW", _
Range("B21"), True, True

End Sub

mais cela ne marche pas...
merci pour votre aide
Anna
Configuration: Windows XP Internet Explorer 6.0

33 réponses

  • 1
  • 2
  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Expliques ce que tu veux exactement faire, parce que pour mettre un photo dans une cellule, tu n'as pas besoin de VBA, et si tu veux afficher une image en fonction du contenu d'une cellule non plus

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    0
  2. Anna
     
    bonjour mike, merci de ta réponse. Einstein avait raison, par conséquent je vais expliquer un peu plus mon souci?.

    J'ai mis un bouton dans ma feuil1 qui devrait faire cela:

    - aller chercher l'image jpg dans le même repertoir que le fichier excel présent
    - et la coller dans la cellule B21 de toutes les autres feuilles de mon classeur.

    Pour le moment j'ai trouvé cela sur le net (auteur de la macro: JBOIGONTIER)

    Sub ImportImages()
    repertoire = ThisWorkbook.Path & "\"
    nf = Dir(repertoire & "*.jpg") ' premier fichier
    Workbook.Sheets("AENA").cell("b21").Select
    Do While nf <> ""
    Set monimage = ActiveSheet.Pictures.Insert(nf)
    monimage.Name = Left(nf, Len(nf) - 4) ' Donne un nom à l'image
    ActiveCell.EntireRow.RowHeight = monimage.Height + 0
    nf = Dir ' suivant
    ActiveCell.Offset(1, 0).Select
    Loop
    End Sub

    j'ai modifier la ligne en gras pour essayer de selectionner une feuille en particulier et une cellule. Mais cela ne fonctionne pas.

    Merci pour votre aide

    Anna
    0
  3. Anna
     
    Bon j'ai résolou le souci, en partie:

    Sub ImportImages()
    repertoire = ThisWorkbook.Path & "\"
    nf = Dir(repertoire & "*.jpg") ' premier fichier
    Sheets("AENA").Range("b21:C21").Select
    Do While nf <> ""
    Set monimage = ActiveSheet.Pictures.Insert(nf)
    monimage.Name = Left(nf, Len(nf) - 4) ' Donne un nom à l'image
    ActiveCell.EntireRow.RowHeight = monimage.Height + 0
    nf = Dir ' suivant
    ActiveCell.Offset(1, 0).Select
    Loop
    End Sub

    le souci maintenant c'est que l'image ne se place pas en B21:C21 !!!
    vous savez?

    Anna
    0
  4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Pourquoi as tu mis ("b21:C21") si tu souhaites la coller en B21 ("B21")

    Sheets("AENA").Range("B21") .Select

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Anna
     
    Bon ben en fait cela a marché une fois... bizarre...

    maintenant erreur : Select method range class failed
    0
  7. Anna
     
    merci pour l'info mike...

    Mais je ne comprends pas pourquoi cela a marché une fois et la fois d'après j'ai une erreur (post ci-dessus) alors qu le code n'a pas changé???
    0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Tu dois avoir une erreur dans une ligne, ou ligne pas à sa place dans le code, exécutes ton code pas à pas détaillé pour trouver la ligne qui bloque

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    0
  9. Anna
     
    Sheets("AENA").Range("b21").Select

    c'est la que ca coince...
    0
  10. Anna
     
    en fait le code marche qd je suis sur la feuille "AENA" mais ne marche pas quand je suis sur la feuil1 (la ou il y a mon bouton pour activer la macro...

    a l'aide je pete un cable!
    0
  11. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Décompose cette ligne

    Sheets("AENA").Range("b21").Select

    comme cela

    Sheets("AENA").Select
    Range("b21").Select

    Tiens moi au courant

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    0
  12. Anna
     
    ça marche! c'était vraiment tou bête... je m'en souviendrai!
    merci mike.

    Reste que l'image ne se colle pas en B21...
    0
  13. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Alors mets ce code à la place des deux lignes que je t'ai donné, c'est plus propre

    Application.Goto Sheets("AENA").Range("B21")

    Mets ton statut en résolu, ou demande à la modération de le faire pour toi clic sur le triangle jaune en haut de ton post

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    0
  14. Anna
     
    Merci mike mais mon szouci n'est que partiellement resolu!

    l'image se colle bien dans la feuille AENA, mais pas en B21 ! (j'ai beau changer la range dans la macro ca ne change rien de toute facon...)

    Des idées?

    Anna
    0
  15. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    si ton fichier n'est pas confidentiel, mets une copie ainsi qu'une image dans un dossier, clic dessus, envoyer vers/dossier compressé et joint le lien pour le récupéter dans un post avec ce lien ou dans un message privé, clic sur mon pseudo et message privé

    https://www.cjoint.com/

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    0
  16. Anna
     
    Merci mike pour la proposition c'est très gentil mais le fichier est confidentiel et cela prendrait bcp de temps pour le rendre anonyme...
    0
  17. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Une autre approche, testes ce code, lorsque tu es dans le visual, même ta feuille nommé AENA garde sa denomination Excel et porte le Nom par exemple Feuil3(AENA), dans le code cidessous change Feuil2 par Feuilxxx

    Sub test()
    Dim Image As Variant
    Dim L As Single, T As Single, W As Single, H As Single
    L = Feuil2.Range("B21").Left
    T = Feuil2.Range("B21").Top
    W = Feuil2.Range("B21").Width
    H = Feuil2.Range("B21").Height
    Image = Application.GetOpenFilename
    If Image <> False Then
    Feuil2.Shapes.AddPicture Image, True, True, L, T, W, H
    End If
    End Sub

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    0
  18. Anna
     
    Merci mike mais je ne sais pas utiliser ce code, je ne le comprends pas...

    Comment va t'il chercher mon image?
    0
  19. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Ce code sélectionne ta cellule et ouvre la boite de dialogue Fichier Ouvrir, à toi de sélectionner la photo.

    Il est possible d'ajouter la sélection de la cellule cible dans une cellule par exemple la A1 dans laquelle on saisira B21 (ce qui ne rend pad le code macro figé sur la cellule B21 et donc en ressaisissant une autre référence en A1 le code s'exécutera sur la nouvelle référence etc ...) , il est également possible de paramétrer la taille de la ligne /colonne soit cellule de réception de la photo

    Dans la soirée je regarde d'apporter l'équivalent afin d'afficher la photo qui se trouve dans le même répertoire

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    0
  20. Anna
     
    merci mike pour l'interet que tu porte à mo souci.

    j'ai changé un peu mon code:

    Sub ImportImages()

    repertoire = ThisWorkbook.Path & "\"
    nf = Dir(repertoire & "*.jpg") ' premier fichier
    Sheets("AENA").Select
    Range("b21").Select
    Set monimage = ActiveSheet.Pictures.Insert(nf)
    End Sub

    voila... je suis pas experte comme tu peux le voir... mais j'essaie de bidouiller :-)

    Cette macro fonctionne bien, mais l'image ne se colle pas ou je voudrais (en B21, ou au dessus!, pas besoin de resizer ou de la mettre ailleurs...)

    Merci
    0
  21. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    J'ai cette ligne de ton code qui plante, comme je n'ai pas le code initial pourrait tu me dire
    l'image que tu souhaites coller en B21 sur la feuille AENA, est elle dans le même répertoire, et à quoi correspond Pictures dans la ligne de ton code (une page de ton dossier nommé pictures !

    et monimage es ce une plage nommée, j'ai l'inpression qu'il manque une variable, ou mal définie

    Set monimage = ActiveSheet.Pictures.Insert(nf)

    A+
    Mike-31

    Un problème sans solution est un problème mal posé  (Einstein)
    0
  • 1
  • 2