Afficher photos selon sélection listbox

Bonjour les amis du Forum.

Pour mon projet, à partir d'un listbox, par un clic sur une ligne, j'aimerai afficher l'image qui y est associée.

Je ne dois pas avoir les bons termes de recherche pour m'aider, où alors les codes glanés ici et là, ne me sont pas familier et trop complexe avec le code déjà présent dans mon classeur de projet de travail.

Par la suite, j'aimerai par double clic sur le contrôle image, ouvrir et alimenter l'userform2 par l'image affichée et les informations de la ligne sélectionnée en listbox.

Un petit fichier vaut mieux qu'un grand bla bla ...

114photo-listbox.zip (31.24 Ko)

Merci de l'aide apportée.

Licaon

Bonjour Licaon le forum

ton dossier en retour, tu testes et tu me redis

a+

Papou

Salut,

Je te propose mon retour,

A me redire,

le code est à adapter à ton environnement

Private Sub ListBox1_Click()
Dim chemin As String

On Error Resume Next

'on definie une variable en taille, le dim au dessus, et sa valeur, la ligne en dessous
chemin = Me.ListBox1.List(ListBox1.ListIndex, 2) 'donc chemin = valeur sélectionnée dans listbox
'pour afficher l'image, nous avons la ligne suivante
UserForm1.Image1.Picture = LoadPicture("C:\Users\Propriétaire\Desktop\photo listbox\Photos\" & chemin & ".JPG")
'ou nous retrouvons le repertoire par defaut des images et notre variable

For i = 1 To 3 'sur 3 colonnes
    Me("textbox" & i).Value = Me.ListBox1.List(ListBox1.ListIndex, i - 1)
Next i

End Sub

Surtout la ligne

UserForm1.Image1.Picture = LoadPicture("C:\Users\Propriétaire\Desktop\photo listbox\Photos\" & chemin & ".JPG")

Leakim

Salut Paritec ta proposition est bien plus pro que la mien

114photo-listboxv2.xlsm (28.66 Ko)

Bonjour Papou, Leakim et le Forum.

Merci à tout les deux pour vos réponses.

Je retiens la proposition de Papou, plus facile à comprendre pour mon niveau.

Un bug apparaît lorsque l'image n'est pas présente.J'ai bien compris que pour y remédier, on pouvait charger une image donnée par défaut , mais je n'arrive pas à les adapter sur ce code.

Le nom de l'image est "Defaut".

Encore un petit coup de pouce ?

Licaon.

Salut,

Juste pour la gestion des erreur tu poses dans ton début de code

On Error Resume Next

Leakim

Bonsoir Licaon leakim le forum

Ta solution Leakim est bonne à mettre à la poubelle!!!! Et en plus en aucun cas elle ne va permettre d'afficher la photo défaut comme le demande Licaon !!!

Si tu gères du vba de la sorte tu ne vas pas aller loin!!!

On error Resume next, est à utiliser quand on ne peut pas faire autrement, car botter en touche c'est facile, mais cela ne règle rien!!!

Licaon ton fichier en retour

a+

Papou

Salut,

J'avoue avoir répondu trop vite

Bonne suite à vous,

Cordialement,

Leakim

Bonsoir Paritec, leakim, le Forum.

Désolé pour ce post différé, le professionnel a pris le dessus.

La solution de Paritec est ce que je désirais.

Merci de votre implication pour solutionner ce projet.

A bientôt sur le forum.

Licaon.

Bonsoir Licaon leakim le forum

Ta solution Leakim est bonne à mettre à la poubelle!!!! Et en plus en aucun cas elle ne va permettre d'afficher la photo défaut comme le demande Licaon !!!

Si tu gères du vba de la sorte tu ne vas pas aller loin!!!

On error Resume next, est à utiliser quand on ne peut pas faire autrement, car botter en touche c'est facile, mais cela ne règle rien!!!

Licaon ton fichier en retour

a+

Papou

Bonjour et merci pour ce sujet qui m'aide.

Cependant étant un novice je n'arrive pas adapter ce code à mon projet sans sauter l'erreur et afficher l'image par défaut.

Mon fichier se trouve dans M:\TP. Les images dans M:\Tp\RAD.

J'utilise le numéro unique qui se trouve à la 2 ème colonne.

Quand je choisi ma ligne dans ma listbox1 l'image est bien affiché.

Mon problème c'est quand il n'existe pas un. jpg qui correspond à une donnée qui se trouve à la 2 ème colonne de mon row. Il n'y a aucune image ou j'ai juste la dernière image que j'ai visualisé.

Je précise que c'est le seul code que j'ai pris et modifier et que j'ai tout simplement coller entre les deux lignes de ma listebox1. J'ai l'impression que ça coince au niveau "ThisWorkbook.Path & "\RAD\Défaut.jpg"

Merci pour votre aide !

Error Resume Next
    If ListBox1.ListIndex = -1 Then Exit Sub
    UserForm_R.Image2.Picture = LoadPicture("M:\Tp\RAD\" & ListBox1.List(ListBox1.ListIndex, 1) & ".JPG")
    If Dir(adr, vbDirectory) = "" Then
        adr = ThisWorkbook.Path & "\RAD\Défaut.jpg"
    End If
    Image2.Picture = LoadPicture(adr)
    On Error GoTo 0

Bonjour Betabong le forum

bah oui à mon avis dans ton fichier M:\Tp\RAD. tu n'as pas de fichier vierge défaut.jpg

et aussi ton code n'est pas bon, si tu mets toutes tes photos dans un dossier nommé Photos dans le même dossier que ton fichier d

dans le quel tu as ton userform, tu auras le résultat voulu.

il faut cependant créer une image vierge défaut.jpg et la mettre aussi dans le dossier Photos

ou ne pas charger de photos si l'adresse n'existe pas, voilà le code pour le première proposition en fonction de ta demande de charger l'image par défaut

a+

Papou

Private Sub L1_Click()
    If L1.ListIndex = -1 Then Exit Sub
    adr = ThisWorkbook.Path & "\Photos\" & L1.List(L1.ListIndex, 2) & ".jpg"
    If Dir(adr, vbDirectory) = "" Then
        adr = ThisWorkbook.Path & "\Photos\Défaut.jpg"
    End If
    Image1.Picture = LoadPicture(adr)
End Sub

Bonjour Betabong le forum

bah oui à mon avis dans ton fichier M:\Tp\RAD. tu n'as pas de fichier vierge défaut.jpg

et aussi ton code n'est pas bon, si tu mets toutes tes photos dans un dossier nommé Photos dans le même dossier que ton fichier d

dans le quel tu as ton userform, tu auras le résultat voulu.

il faut cependant créer une image vierge défaut.jpg et la mettre aussi dans le dossier Photos

ou ne pas charger de photos si l'adresse n'existe pas, voilà le code pour le première proposition en fonction de ta demande de charger l'image par défaut

a+

Papou

Private Sub L1_Click()
    If L1.ListIndex = -1 Then Exit Sub
    adr = ThisWorkbook.Path & "\Photos\" & L1.List(L1.ListIndex, 2) & ".jpg"
    If Dir(adr, vbDirectory) = "" Then
        adr = ThisWorkbook.Path & "\Photos\Défaut.jpg"
    End If
    Image1.Picture = LoadPicture(adr)
End Sub

Oh super, ça marche tu as résolu mon problème effectivement il fallait bien la Défaut.jpg. Merci beaucoup !

Rechercher des sujets similaires à "afficher photos selection listbox"