Lien entre image et listbox

[Résolu]
Signaler
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013
-
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013
-
Bonjour à toutes et tous!

mon projet commence à prendre forme, merci à tous pour l'aide que vous m'apportez!

voici mon problème de ce jour!

j'ai donc une listbox dans un userform, chargée à partir d'une feuille excel. Cette listbox contient deux colonnes, une pour le nom de l'article et l'autre pour son prix

sur le meme userform j'ai placé l'outil 'image'.
ce que je souhaiterais faire, c'est, lorsqu'une ligne est sélectionnée dans la listbox, il s'affiche automatiquement l'image du produit concerné.

dois-je charger chaque image sur mon userform et les mettre en non visibles (cela va rendre le fichier très lourd, il y a une soixantaine d'articles, non? est-ce que cela ne va pas ralentir le programme?) est-il possible de procéder autrement?

merci pour votre aide et conseils!

11 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Private Sub ListBox1_Click()
    With ListBox1
        Set Image1.Picture = LoadPicture("C:\ProjetBoutique\Images" & .List(.ListIndex, 1) & ".jpg")
    End With
End Sub

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
si, en testant si le fichier existe, tout simplement ^^

If Dir$(...) ="" Then
         Set image1.Picture = LoadPicture(.....default.jpg")
Else
   Set Image1...........
endif

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Dans l'événement Click du Listbox, utilise LoadPicture() pour charger l'image correspondant à l'item. Un seul contrôle Image est nécessaire.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Set Image1.Picture = LoadPicture("C:\article.jpg")

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013

ça marche nickel!

mais le probleme c'est que je souhaiterais lier une image par produit, or ici, il me charge la meme image quelque soit l'article... dois-je me servir de "listindex" pour attribuer l'image en fonction de l'article séléctionné?

exemple:

article 1 est lié à image1.jpg
article 2 est lié à image2.jpg et ainsi de suite...

je souhaiterais lorsque article deux est sélectionné, que ce soit image2 qui apparaisse (et idem pour article 1!)

merci encore
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
libre a toi de spécifier le chemin que tu veux...

Set Image1.Picture = LoadPicture("C:" & List1.Text & ".jpg")

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013

je suis vraiment désolé, mais je comprend pas...

je n'arrive pas à lier une image par article...
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
ou sont stockées ces images, sous quelle forme, sous quel nom ?
quel code utilises tu ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013

merci pour ton aide,

alors, concernant les images, elles se trouvent dans un dossier sur c (c:\ProjetBoutique\Images)
chaque image est nommée en fonction de l'article qu'elle représente (ex: choclat.jpg)
Voilà pour les images.



Pour le petit progr:
j'ai une feuille excel avec trois colonnes:
col A = catégorie de produit (alimentaire, non alimentaire et livres)
Col B = l'article (chocolat...)
Col C = Le prix de l'article.

Dans un userform, j'ai une listbox de deux colonnes et trois options buttons.
Chaque bouton est renommé comme les catégorie
lorsque je clique sur un bouton, il affiche dans la listbox les articles et leurs prix correspondant à la catégorie sélectionnée avec le bouton.

je souhaiterais donc, lorsquon sélectionne un article dans la listbox que l'image lui correspondant s'affiche sur l'userform...



Voilà, j'espère avoir été limpide dans mes explications!

Et encore merci pour ton aide!



voici le code qui permet de sélectionner une catégorie et d'en afficher le contenu:





Private Function GetListCategories() As String()
    Dim ltStr() As String
    ReDim ltStr(-1 To -1)
   
    Dim i As Long
    Dim j As Long
    Dim lOK As Boolean
    Dim lStr As String
   
    i = 0
    Do While Sheets("Listing des Articles").Range("G2").Offset(i, 0).value <> ""
        lOK = True
        lStr = Sheets("Listing des Articles").Range("G2").Offset(i, 0).value
        'Recherche si la catégorie est connue
        For j = 0 To UBound(ltStr)
            If lStr = ltStr(j) Then
                lOK = False
                Exit For
            End If
        Next j
       
        'Si inconnue, on l'ajoute
        If lOK Then
            If UBound(ltStr) >= 0 Then
                ReDim Preserve ltStr(0 To UBound(ltStr) + 1)
            Else
                ReDim ltStr(0 To 0)
            End If
           
            ltStr(UBound(ltStr)) = lStr
        End If
       i = i + 1
    Loop
   
    GetListCategories = ltStr
End Function





'Ensuite pour remplir ta listbox :
Private Sub RemplLstBx(ByVal pCategorie As String)
    Dim i As Long
  
    ListBox1.Clear
  
    i = 0
    Do While Sheets("Listing des Articles").Range("G2").Offset(i, 0).value <> ""
        If Sheets("Listing des Articles").Range("G2").Offset(i, 0).value = pCategorie Then
            ListBox1.AddItem
            ListBox1.List(j, 0) = Sheets("Listing des Articles").Range("H2").Offset(i, 0).value
            ListBox1.List(j, 1) = Format(CStr(Sheets("Listing des Articles").Range("I2").Offset(i, 0).value), "0.00")
            j = j + 1
        End If
        i = i + 1
    Loop
End Sub





Private Sub OptionButton_Alimentaire_Click()
    Call RemplLstBx(OptionButton_Alimentaire.Caption)
   
End Sub


Private Sub OptionButton_NonAlimentaire_Click()
    Call RemplLstBx(OptionButton_NonAlimentaire.Caption)
    
End Sub


Private Sub OptionButton_Livres_Click()
    Call RemplLstBx(OptionButton_Livres.Caption)
    
End Sub
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013

merci!

ça ne fonctionnait pas parceque j'avais laissé un espace entre le nom de l'image et le ".jpg"   -> le nom n'était pas identique a celui de la feuille excel!

tiens, si il n'y a pas d'image pour un article, ça plante, y a t'il moyen de ne pas attribuer d images à un article sans que ça plante?

encore merci pour ton aide!
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013

Merci!