XL 2016 Affichage d'une photo dans une zone d'un tableau

ScalpelG77176

XLDnaute Nouveau
Bonjour la compagnie.
Voilà, j'ai une question pour vous.
Admettons que dans le répertoire "C:\Fiches\Photos", il y est dix fichiers intitulés 1.jpg, 2.jpg ... 10.jpg
Dans le répertoire "C:\Fiches" un tableau Excel avec deux onglets : "Fiche" et "Données"
L'onglet "Données" contient différentes choses dont une colonne "Photos" avec pour chaque événement le nom du fichier correspondant à une photo (1.jpg, 2.jpg ... 10.jpg)
Sur l'onglet "Fiche" je souhaite afficher, par exemple, la photo correspondant à l'événement n° 3 (soit le fichier 3.jpg)

Je n'y arrive pas, pouvez-vous me donner un coup de main ?
Également si aucun fichier ne correspond à un élément du tableau, je souhaite affiche la photo ayant pour nom 0.jpg

J'avoue c'est pas simple, j'ai fait au mieux pour expliquer mon soucis.

Merci d'avance
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pour une image ActiveX, pour pouvez lui affecter .Picture = LoadPicture( "C:\Fiches\Photos\" & N & ".jpg")
Pour une image de formulaire, je ne sais pas.
L'enregistreur de macro ne produit aucun code quand on change l'image à partir d'un fichier.
 

fanch55

XLDnaute Barbatruc
Bonjour à tous

Un exemple à adapter pour une image de formulaire:

VB:
Sub Load_Photo()
Dim Photo_Path As String
Dim Photo_File As String
Dim Shape_Name As String
    
    With ActiveSheet
        For Each Elem In .Range("A1").Cells
            If Elem.Text <> vbNullString Then
                Photo_Path = ThisWorkbook.Path & "\"
                Photo_File = Photo_Path & Elem.Text & ".jpg"
                Shape_Name = "Photo_" & Elem.Text
                If Dir(Photo_File) <> vbNullString Then
                    On Error Resume Next
                        Shapes(Shape_Name).Delete
                    On Error GoTo 0
                    With .Pictures.Insert(Photo_File).ShapeRange
                        .Name = Shape_Name
                        .LockAspectRatio = msoFalse
                        Set E = Elem.Offset(, 1)
                            .Height = E.Height
                            .Width = E.Width
                            .Top = E.Top + (E.Height - .Height) / 2
                            .Left = E.Left + (E.Width - .Width) / 2
                        Set E = Nothing
                    End With
                End If
            End If
        Next
    End With
    
End Sub
 

ScalpelG77176

XLDnaute Nouveau
Bonjour à tous.

Merci pour tout.

J’ai trouvé sur internet une solution qui fonctionne cliquez ici pour être rediriger vers l’article (en bas de l'article il y à un lien pour télécharger un fichier exemple).
J'ai adapté le fichier exemple à ma sauce, et j'en suis très satisfait.

Ci-joint un fichier exemple pour la gestion d'annonces immobilières (recherche de biens).
Les données sont entrées dans l'onglet "Annonces", et elles sont visualisables sur l'onglet "Fiche" en sélectionnent le n° d'annonce dans la case C1 (menu déroulant).

Pou ma part, le fil est RÉSOLU.
 

Pièces jointes

  • Tableur Excel avec photos.xlsm
    267.9 KB · Affichages: 18

Discussions similaires

Réponses
6
Affichages
529

Statistiques des forums

Discussions
312 305
Messages
2 087 087
Membres
103 461
dernier inscrit
dams94