EXCEL 2007 - INSERER UNE IMAGE

Résolu
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

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Plusieurs utilisateurs cherchent à insérer une image via VBA dans une cellule précise sous Excel 2007, mais le bouton déclenchant la macro ne place pas l'image en B21 sur la feuille AENA. Des propositions indiquent que le code peut ouvrir une boîte de dialogue ou utiliser Dir et Pictures.Insert pour ajouter chaque image du répertoire, avec des ajustements de nom. D'autres évoquent la nécessité de cibler correctement la feuille active et d'ajuster la référence de cellule, éventuellement via une cellule intermédiaire (A1) pour rendre le paramétrage dynamique. En cas de nuance utile : le comportement dépend du contexte, ce qui peut nécessiter de préciser la feuille dans le code et d'utiliser des objets comme Worksheets et Range.

Bobot (l’IA à votre service)
  1. 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)
    1. 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
      1. 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
        1. 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)
          1. Bon ben en fait cela a marché une fois... bizarre...

            maintenant erreur : Select method range class failed
            1. 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é???
              1. 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)
                1. 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!
                  1. 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)
                    1. ça marche! c'était vraiment tou bête... je m'en souviendrai!
                      merci mike.

                      Reste que l'image ne se colle pas en B21...
                      1. 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)
                        1. 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
                          1. 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)
                            1. 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...
                              1. 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)
                                1. Merci mike mais je ne sais pas utiliser ce code, je ne le comprends pas...

                                  Comment va t'il chercher mon image?
                                  1. 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)
                                    1. 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
                                      1. 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)
                                        • 1
                                        • 2