Comment afficher une image au survol d'une cellule

Résolu
Aschille Messages postés 32 Statut Membre -  
Aschille Messages postés 32 Statut Membre -
Bonjour,

J'ai cherché un peu partout sur le net et il semble qu'il existait une fonction dans les versions antérieures d'Excel une façon simple d'y remédier (menu contextuel, format de commentaire). Sauf que là, le seul onglet qui m'est proposé dans cette boite de dialogue est l'onglet police, ni texture ni image à insérer comme un fond.

Je pense qu'il est toujours possible de passer par VBA pour arriver à cette fin mais, n'ayant aucune notion en programmation, je sollicite votre aide qui est plus que bienvenue.

Cordialement.

6 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonsoir

    un exemple
    https://www.cjoint.com/?3EluoZfVmWZ

    nota: il faut "dézipper" la pièce jointe et non "ouvrir" le zip

    Michel
    2
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Re,

    Si tes images sont carrées, tu simplifier le code de Michel comme suit :

    Sub creer_image_survol()
    Dim chemin As String, Col As Byte, Lig As Byte, Fin As Integer, Cptr As Integer
    Dim design As String, image As String
    Dim pict As IPictureDisp
    
    chemin = ThisWorkbook.Path & "\"
    Col = Range("start").Column
    Lig = Range("start").Row
    Fin = Range("start").End(xlDown).Row
    For Cptr = Lig To Fin
         image = Cells(Cptr, Col)
         design = chemin & image
         'prend en compte le format de la photo
         If Dir(design & ".png") <> "" Then image = image & ".png"
         If Dir(design & ".jpg") <> "" Then image = image & ".jpg"
         If Dir(design & ".jpeg") <> "" Then image = image & ".jpeg"
         If Dir(design & ".gif") <> "" Then image = c & ".gif"
         Set pict = LoadPicture(chemin & image)
    
         'construit et remplit le commentaire
          With Cells(Cptr, Col)
              .ClearComments
              .AddComment
              With .Comment.Shape
                  .Fill.UserPicture chemin & image
                  .LockAspectRatio = msoFalse
                  .Height = 300
                  .Width = 300
              End With
              .Comment.Visible = False
          End With
    Next
    
    End Sub

    La dimension des images est déterminée par :
    .Height = 300
    .Width = 300
    
    --
    Cordialement
    Patrice
    1
  3. Aschille Messages postés 32 Statut Membre
     
    Merci pour la rapidité de ta réponse Michel. En voyant le résultat dans ton exemple je ne peux qu'être optimiste pour la résolution de mon problème.

    J'ai copié tes lignes de codes dans mon classeur, attribué un bouton à l'exécution de celles ci, et mis une image avec le même nom que le contenu en texte d'une des cellules. Néanmoins, le problème persiste.

    Le débogage me renvoie à cette ligne de code :

    Col = Range("start").Column

    Les images dans mon cas par contre correspondent à la colonne A.

    Une idée ?
    0
  4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Comme c'est indiqué sur la Feuille 1 du fichier de Michel, la première cellule qui doit recevoir la première image doit être nommée "start"
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Aschille Messages postés 32 Statut Membre
     
    En effet, j'avais omis ce détail. Voilà que ça marche.

    Un dernier détail si je puis me permettre. Les images que je veux mettre sont d'une taille de 64x64 pixels. Y'a t'il une façon pour les afficher dans cette taille car là ils ont tous tendance à s'agrandir et à s'étirer à l'horizontal ?
    0
  7. Aschille Messages postés 32 Statut Membre
     
    Impeccable ! Rien à rajouter. Merci énormément à vous deux ^^
    0