Intégrer une image dans Userform...

Bonjour,

J'essaye d'intégrer une image dans un userform (gestion de fiches), mais malgré plusieurs tentatives de scripts divers et variés je n'y arrive pas. J'ai emprunté ce code (sur ce forum) et je l'ai adapté (car apparemment le Mac avec Excel 2011 ne reconnaît pas "loadPicture"). J'obtiens bien le message d'erreur, ce qui devrait prouver que ça va jusque là, mais point d'image.
Dans un userform j'ai une textbox1 dans laquelle j'ai entré le nom de l'image (sans l'extension) et un contrôle "Image1". Comme je suis un bidouilleur pas toujours bien éclairé, je vois bien qu'il n'est mentionné nulle part que l'image doit aller dans le contrôle "Image1" mais je ne sais pas quoi ni où le mettre :
Private Sub TextBox1_Change()
Dim chemin As String
chemin = TextBox1.Value
On Error GoTo pasdimage
ActiveSheet.Pictures.Insert ("/Volumes/HD/images/" & chemin & ".jpg")
pasdimage : MsgBox "photo non disponible"
End Sub

Le dossier "images" se trouve au même niveau que le fichier Excel.
Une idée ?

Merci

5 réponses

  1. Contributeur
    0
    1. Bonjour Le Pivert,

      Merci pour ta réponse. La page a l'air intéressante.
      Apparemment le Mac+cette version d'Excel 2011 ont un problème avec DIR. En effet j'ai un message d'erreur "68" (device unavailable) alors que le fichier est r/w. J'ai bien trouvé une astuce sur :
      https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_mac/lets-talk-about-mac-excel-2011-bugs/a3653864-e889-4413-aab0-ac118c03d65e
      J'ai mis la fonction dirfile juste au dessus:
      Function dirfile(ByVal input_file As String) As Boolean
      Dim tmp
      dirfile = False
      On Error GoTo dirfile_err
      tmp = Dir(input_file)
      On Error GoTo 0
      dirfile = True
      dirfile_err:
      End Function

      ...mais je ne sais pas appeler la fonction "dirfile" dans cette macro (je ne suis pas programmeur) .
      Private Sub CommandButton5_Click()
      Dim Fichier As String
      Fichier = "/Users/ATC/Desktop/fleur.jpg"
      'Vérifie si le fichier existe.
      If Dir(Fichier) <> "" Then
      'si le fichier existe, il est chargé pour visualisation.
      Image1.Picture = ActiveSheet.Pictures.Insert(Fichier)
      Else
      'Sinon, affiche aucune image.
      Image1.Picture = ActiveSheet.Pictures.Insert("")
      End If
      End Sub


      Encore une idée ?

      Merci
      0
    2. Contributeur
      @pompom74tout simplement comme ceci sans passer par Dir:

      Private Sub CommandButton5_Click()
          Dim Fichier As String
          Fichier = "Chemin complet/fleur.jpg"
          If Fichier = "" Then
      Exit Sub
      Else
       'si le fichier existe, il est chargé pour visualisation.
              Image1.Picture = ActiveSheet.Pictures.Insert(Fichier)
      'ou
              'Image1.Picture = LoadPicture(Fichier)
            End If
      End Sub
      0
    3. @cs_Le PivertMerci...
      Ça aurait dû marcher... mais si je fais :
      - avec "LoadPicture" j'ai une erreur "compile error : sub or function not defined"
      - avec "ActiveSheet.Pictures.Insert" j'ai une erreur "runtime error 1004 : unable to get the Insert property of the Pictures class"

      C'est mal parti...
      0
  2. Merci...
    Ce coup-ci je n'ai plus d'erreur, mais il ne se produit rien ! Preview ne se lance même pas. J'ai essayé en lançant Preview avant, mais rien non plus.

    Encore merci
    0
    1. Merci Pivert.

      En effet, ça marche, mais l'insertion de l'image s'effectue dans la feuille et non dans le UserForm : c'est déjà un progrès !

      J'ai essayé :
      Set Emplacement = Me.Image1
      donne l'erreur "type mismatch"
      puis :
      Set Emplacement = Image1.Picture
      donne l'erreur "Object variable or With block variable not set"
      enfin :
      Set Emplacement = UserForm1.Image1
      donne l'erreur "type mismatch"

      J'arrive aux limites de mes connaissances (bien faibles)
      0