Charger photo d'un listview dans un picturebox

Bonjour,

J’ai un premier userform avec une listview qui contient plusieurs colonnes dont une pour des photos.

Le bouton « Consulter » me permet de récupérer les informations de la ligne sélectionnée dans un autre userform contenant des textbox et un picturebox. Mais je n’arrive pas à récupérer la photo de la listview dans le picturebox.

Le code de la listview :

Private Sub UserForm_Initialize()
Dim ws As Worksheet
Dim i As Integer
Dim rg As Range
Dim j As Integer
Set ws = ThisWorkbook.Sheets("Feuil1")
Set rg = ws.Range("refTab") 'cellule de référence du tableau

' -- Construction du tableau
With UsfMenu.Listview1
' -- Ajout des colonnes
.ColumnHeaders.Clear ' Effacer les entêtes existantes
'on boucle sur les éléments tant qu'on ne trouve pas de lignes vides
i = 0
Do Until IsEmpty(rg.Offset(0, i))
.ColumnHeaders.Add , rg.Offset(-1, i), rg.Offset(0, i), rg.Offset(0, i).Width
i = i + 1
Loop

' -- Ajouter les éléments de la 1re colonne
i = 1
Do Until IsEmpty(rg.Offset(i, 0))
.ListItems.Add , rg.Offset(i, 0), rg.Offset(i, 0)

' -- Ajouter les sous-éléments
' on utilise ici une boucle en supposant qu'il n'y a pas de lignes vides entre les éléments
j = 1
Do Until IsEmpty(rg.Offset(0, j))
'Ajouter un sous-élément en spéciant la valeur seulement
.ListItems(i).ListSubItems.Add , , rg.Offset(i, j)
j = j + 1
Loop
i = i + 1
Loop

.View = lvwReport
.Sorted = True ' trier selon N°
End With

'photo dans la listview (nommer obligatoirement les photos par le nom de l'adhérent)
Set f = Sheets("Feuil1")
Me.ImageList1.ImageHeight = 30
Me.ImageList1.ImageWidth = 30 '/ 1.2
répertoirePhoto = ThisWorkbook.Path & "\"

ligne = 1

For Each c In f.Range("C3:C" & f.[C65000].End(xlUp).Row)

If Dir(répertoirePhoto & c & ".jpg") <> "" Then

Me.ImageList1.ListImages.Add , "Img" & ligne, LoadPicture(répertoirePhoto & c & ".jpg")

Set Me.Listview1.SmallIcons = Me.ImageList1
Set li = Me.Listview1.ListItems(ligne)
li.SubItems(7) = "" 'cree une instance subitem 1 si il est omis listsubitem fonctionne pas
li.ListSubItems(7).ReportIcon = "Img" & ligne

End If

ligne = ligne + 1

Next c

End Sub

Code qui permet d’afficher les données de la ligne sélectionnée dans le second userform :

Private Sub CmdConsult_Click()
With Listview1
'affichage de la fiche correspondant à la ligne sélectionnée
Rng = .SelectedItem.Index
UsfAffiche.TextNum = .ListItems(.SelectedItem.Index).Text
UsfAffiche.TextNom.Value = .SelectedItem.ListSubItems(2).Text
UsfAffiche.TextPrénom.Value = .SelectedItem.ListSubItems(3).Text
End With

UsfAffiche.Show

End Sub

Je ne vois pas comment afficher de la même façon l’image de la colonne photo de la ligne sélectionnée dans la listview.

Merci à tous ceux qui voudront bien m’éclairer. Je précise que je suis très débutante.

Merci

Bonjour laly38

fichier exemple

j'ai modifié la clé de la listeview pour connaitre le nom de l'image à charger

inscrire un nom de photo dans la cellule C3 pour test

a voir si cela convient

268laly38.zip (21.02 Ko)

Merci beaucoup, ça marche.

Juste pour peaufiner, est-il possible que le nom de la photo soit composé du nom et du prénom. En effet, si on enregistre 2 personnes de la même famille, elles auront le même nom mais pas la même photo. Est-ce que c'est possible en gardant les 2 colonnes nom et prénom?

Encore merci pour votre aide précieuse.

Re

avec colonne C et colonne D sans espace

      If Dir(répertoirePhoto & Range(.SelectedItem.Key) & Range(.SelectedItem.Key).Offset(0, 1) & ".jpg") <> "" Then
        UsfAffiche.Image1.Picture = LoadPicture(répertoirePhoto & Range(.SelectedItem.Key) & Range(.SelectedItem.Key).Offset(0, 1) & ".jpg")
      End If

C'est génial, ça marche.

Vraiment un grand merci à vous.

Par contre, si je fais ça, la photo n'apparaît plus dans la listview (il y a son chemin à la place).

Si vous avez le temps de jeter encore un petit coup d'oeil....

Merci

Bonsoir

dans la macro initialise

    For Each c In f.Range("C3:C" & f.[C65000].End(xlUp).Row)

    If Dir(répertoirePhoto & c & c.Offset(0, 1) & ".jpg") <> "" Then

    Me.ImageList1.ListImages.Add , "Img" & ligne, LoadPicture(répertoirePhoto & c & c.Offset(0, 1) & ".jpg")

ça marche, j'avais essayé un truc dans ce genre mais un peu à côté. Merci beaucoup pour le temps passé à m'aider.

Encore merci.

Rechercher des sujets similaires à "charger photo listview picturebox"