Intégrer une image dans Userform...

pompom74 Messages postés 11 Statut Membre -  
pompom74 Messages postés 11 Statut Membre -
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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    0
    1. pompom74 Messages postés 11 Statut Membre
       
      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
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > pompom74 Messages postés 11 Statut Membre
         
        tout 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
      2. pompom74 Messages postés 11 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Merci...
        Ç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. pompom74 Messages postés 11 Statut Membre
     
    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
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. pompom74 Messages postés 11 Statut Membre
     
    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