Image dans userform excel

Johann -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,
Je souhaite afficher une image dans un userform sur excel.
L'image (dans mon userform) à pour origine une adresse, un lien internet (type http://).
Il s'agit d'un affichage seul de l'image. Pas d'enregistrement en local.
Je ne trouve pas comment récupérer cette image pour l'afficher.
Affichage pour une "boite de dialogue" sans enregistrement de celle ci.
Merci à vous.

3 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Dans un UserForm mettre un commandbutton et un contrôle Image avec ce code

    Option Explicit
    Private Sub CommandButton1_Click()
    insertion
    ExtractionImagesFeuille
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\monimage.gif")
    End Sub
    Sub insertion()
    Dim URL, Img
       URL = "http://finviz.com/chart.ashx?t=A&ty=c&ta=1&p=d&s=l"
       Set Img = ActiveSheet.Pictures.Insert(URL)
       Img.Left = [B2].Left
       Img.Top = [B2].Top
       Img.Name = "monimage"
      End Sub
    Sub ExtractionImagesFeuille()
        Dim Pict As Picture
        Dim Nb As Byte
     
        Application.ScreenUpdating = False
     
        For Each Pict In Worksheets("Feuil1").Pictures
            Pict.CopyPicture 'copie l'image
     
            With Worksheets("Feuil1").ChartObjects.Add(0, 0, Pict.Width, Pict.Height).Chart
                .Paste 'colle l'image dans un graphique temporaire
                'Sauvegarde au format image, dans le même répertoire que ce classeur.
                .Export ThisWorkbook.Path & "\" & Pict.Name & ".gif", "GIF"
            End With
     
            'Supprime le graphique
            Nb = Worksheets("Feuil1").ChartObjects.Count
            Worksheets("Feuil1").ChartObjects(Nb).Delete
        Next Pict
     
        Application.ScreenUpdating = True
    End Sub
    
    

    0
  2. Johann
     
    Bonjour cs_Le Pivert.
    Bonjour cs_Le Pivert,

    Merci de votre réponse.

    Par contre, cela ne fonctionne pas chez moi.
    Il y a bien un objet qui s'insert, mais pas une image.
    Enfin un cadre avec une croix rouge en haut à gauche avec le texte "Impossible d'afficher l'image".
    De plus, les images que je souhaite insérer sont en jpeg.

    Merci à vous.

    Johann
    0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Essaie cela, ça fonctionne chez moi:

    Option Explicit
    Private Sub CommandButton1_Click()
    insertion
    ExtractionImagesFeuille
    Image1.Picture = LoadPicture(ThisWorkbook.Path & "\monimage.gif")
    End Sub
    Sub insertion()
    Dim URL, Img
    URL = "http://www2.csdm.qc.ca/Gadbois/Eleves/nomverbe/contenu/images/ouvrirporte.jpg" 
     'essai avec cette adresse
      Set Img = ActiveSheet.Pictures.Insert(URL)
       Img.Left = [B2].Left
       Img.Top = [B2].Top
       Img.Name = "monimage"
      End Sub
    Sub ExtractionImagesFeuille()
        Dim Pict As Picture
        Dim Nb As Byte
     
        Application.ScreenUpdating = False
     
        For Each Pict In Worksheets("Feuil1").Pictures
            Pict.CopyPicture 'copie l'image
     
            With Worksheets("Feuil1").ChartObjects.Add(0, 0, Pict.Width, Pict.Height).Chart
                .Paste 'colle l'image dans un graphique temporaire
                'Sauvegarde au format image, dans le même répertoire que ce classeur.
                .Export ThisWorkbook.Path & "\" & Pict.Name & ".jpg", "JPG"
            End With
     
            'Supprime le graphique
            Nb = Worksheets("Feuil1").ChartObjects.Count
            Worksheets("Feuil1").ChartObjects(Nb).Delete
        Next Pict
     
        Application.ScreenUpdating = True
    End Sub


    Cela prend un certain temps. Quand l'image s'affiche sur la feuille, il faut cliquer sur la feuille pour faire réapparaitre l'userForm
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Correction:

      Option Explicit
      Private Sub CommandButton1_Click()
      insertion
      ExtractionImagesFeuille
      Image1.Picture = LoadPicture(ThisWorkbook.Path & "\monimage.jpg")
      End Sub
      Sub insertion()
      Dim URL, Img
         URL = "http://www2.csdm.qc.ca/Gadbois/Eleves/nomverbe/contenu/images/ouvrirporte.jpg"
         Set Img = ActiveSheet.Pictures.Insert(URL)
         Img.Left = [B2].Left
         Img.Top = [B2].Top
         Img.Name = "monimage"
        End Sub
      Sub ExtractionImagesFeuille()
          Dim Pict As Picture
          Dim Nb As Byte
       
          Application.ScreenUpdating = False
       
          For Each Pict In Worksheets("Feuil1").Pictures
              Pict.CopyPicture 'copie l'image
       
              With Worksheets("Feuil1").ChartObjects.Add(0, 0, Pict.Width, Pict.Height).Chart
                  .Paste 'colle l'image dans un graphique temporaire
                  'Sauvegarde au format image, dans le même répertoire que ce classeur.
                  .Export ThisWorkbook.Path & "\" & Pict.Name & ".jpg", "JPG"
              End With
       
              'Supprime le graphique
              Nb = Worksheets("Feuil1").ChartObjects.Count
              Worksheets("Feuil1").ChartObjects(Nb).Delete
          Next Pict
       
          Application.ScreenUpdating = True
      End Sub


      il faut cliquer sur l'icone Excel dans la barre de tâche pour faire réapparaitre l'userForm
      0