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