Insérer une image dans une cellule excel

Bonjour,

je vous contacte car je souhaiterai réaliser une compilation de données sur Excel contenant, entre autres, des images. Or si je sais insérer une image sur Excel, je ne connais pas la manipulation à faire pour insérer une image directement dans une cellule.
Sauriez-vous en mesure de m'aider à ce sujet?

Merci beaucoup!

Coridalement.
Configuration: Windows XP Internet Explorer 6.0

16 réponses

  1. Contributeur
    Bonjour stagiaire2008.

    Exact !

    Si tu as beaucoup de photos et que tu dois manipuler ton fichier (mettre à jour, trier, filtrer) il vaut mieux laisser tomber Excel et passer à Access.
    1. Contributeur
      Bonjour,
      Ci joint démo pour insérer une image dans une cellule en cliquant sur B2
      Pour cette démo, l'image doit être dans le m^me dossier que le classeur xL<2007
      https://www.cjoint.com/?hziBwDyDhK

      Mais tu pourras trouver d'autres exemples sur ce forum pour insérer des images: il faut cependant éviter de coller les images à montrer en les stockant dans une feuille du classeur (version non vba)

      Si tu veux un choix d'imagess, dis-le: c'est possible avec Excel* et le VBA est Plus simple qu'avec Access
      * actuellement ma démo envoie dans un cadre image fixe pas dans une cellule mais...

      Edit 8:45h: tu peux aussi mettre une photo en commentaire: je crois que ca a déjà été traiter sur ce forum...
      1. Contributeur
        Encore moi...
        En fouinant j'ai adapté cette procédure pour insérer une image dans un commentaire:

        Sub image_dans_commentaire()
        ' simplifié (supprimé choix photo) à partit d'une démo d' Isabelle, mpfe, trouvé sur site Fred Sigonneau (merci)
        'http://frederic.sigonneau.free.fr
          Range("B2").AddComment
          With Range("B2").Comment
                chemin = ThisWorkbook.Path & "\"
                .Shape.Fill.UserPicture chemin & "virageadroite.jpg"
          End With
        
        End Sub
        

        virageadroite est dans le lien précédent

        post du demandeur du vendredi apremidi ===> réaction de Stagiaire2008 lundi ????
        1. Merci beaucoup pour vos réponses. Je vais faire les essais. Il est vrai que Access serait plus adapté pour ce genre de travaux, mais malheureusement je ne sais pas m'en servir. Du coup, j'en suis réduite à faire quelque chose de moins performant sur Excel.
          Encore merci.
          1. Je viens de visionner votre démo. C'est tout à fait ce qu'il faudrait que je sois en mesure de faire. Or, je ne sais pas comment on réalise cela. Et Effectivement, j'aurai besoin également de mettre en place un système de choix d'images. Serait-il possible de m'éclairer sur ces points?

            Merci par avance. J'espère que cela ne vous prend pas trop de temps.

            Cordialement.
            1. Merci beaucoup. Je vais faire le test et reviens vers vous si besoin est. Il y a-t-il un ordre à suivre dans la réalisation des différentes manipulations?

              Bonne journée.

              Cordialement.
              1. Contributeur
                non pas particulèrement si ce n'est activer la boite à outils en premier...
                et mettre les photos dans le m^me répertoire...

                A propos, Access n'est pas + approprié qu'Excel pour ce que tu demandes. Si tu y tiens je peux te joindre un exemple Access mais ..;
                1. Merci! Je n'ai pas encore eu le temps de faire les essais. Mais je reviens vers vous si besoin est.

                  Cordialement.
                  1. En suivant la méthodologie, je ne parviens pas à faire le menu déroulant. J'ai enregistré mon classeur dans le même dossier que mes photos. J'ai activé la fonction "visualiser le code" sur la feuille une, mais rien ne se passe. Dois-je changer quelque chose à la formule?
                    1. C'est bon cela a marché! Merci! C'est possible de le faire pour chaque ligne d'une colonne? En effet, dans la base de données que je dois réaliser, il y aura une colonnes "visuels" et il y aura deux visuels la plupart du temps à choisir.
                      1. En fait, je pense que pour ce que j'ai besoin de faire cela va être compliqué. En revanche, vous serait-il possible de m'expliquer la démarche à suivre pour réaliser la première proposition que vous m'avez faites, à savoir : montrer et cacher l'image? Je suis désolée de vous prendre de votre temps.

                        Cordialement.
                        1. Contributeur
                          Bonjour
                          tu met la ligne de la cellule à la hauteur voulue
                          Pareil qu'hier pour installer:
                          copier la macro
                          clic droit etc

                          cellule de déclenchement: tu remplaces A3 par ton emplacement à toi
                          cellule photo:tu remplaces B3 par ton emplacement à toi
                          tu remplaces virageadroite.jpg par le nom de ton image par 'ex: "maman.png" ou "papa.gif" ou "moi.tiff"

                          Private Sub Worksheet_SelectionChange(ByVal Target As Range)
                          Static flag As Boolean
                          Dim Image As Picture
                          Dim design As String
                          If flag = False Then
                              If Intersect(Target, Range("A3")) Is Nothing Then: Exit Sub
                              Range("B3").Select
                              
                              design = ThisWorkbook.Path & "\virageadroite.jpg"
                              Set Image = ActiveSheet.Pictures.Insert(design)
                              With Image.ShapeRange
                                  .Name = "cartepost"
                                   .Height = Range("B3").Height
                                  .Width = Range("B3").Width
                                  .LockAspectRatio = msoFalse
                              End With
                              flag = True
                              Range("A3") = "cacher"
                          Else
                              ActiveSheet.Shapes("cartepost").Delete
                              flag = False
                              Range("A3") = "montrer"
                              Range("A1").Select
                          End If
                          End Sub
                          1. Je vous remercie encore cela m'a beaucoup aidé!

                            Cordialement.