Impossible de lire la propriété list

Résolu
cs_Fabian123 Messages postés 180 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 22 novembre 2013 - 22 mars 2008 à 15:49
cs_Fabian123 Messages postés 180 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 22 novembre 2013 - 22 mars 2008 à 18:17
Bonjour à toutes et tous,

voilà mon souci :

j'ai une listbox, un textbox et une imagebox et un commandbutton dans un formulaire
dans une feuille excel, j'ai une colonne avec des références, une avec des articles et une avec des prix

je rentre une référence dans la textboxe, appuye sur 'enter' et l'article et son prix correspondant s'affiche dans la listbox et une image de l'article s'affiche dans une image box. lorsque je clique sur le commandbutton, la listbox se vide et son contenu est transféré dans une feuille excel... jusque là tout va bien!
Seulement voilà, lorsque je me replace dans la textbox pour encoder de nouveau des articles dans la listbox, il plante dès que je commance à encoder ma référence.
l'erreur est la suivante (et je suis presque certain que je ne l'avait pas auparavant...) :

' erreur d'execution 381 : Impossible de lire la proriété List. Index de table de propriétés non valide'

Voici mon code (j'ai surligné en rouge la ligne qui pose probleme...)

Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
   
    If KeyCode = vbKeyReturn Then
Dim Recherche As Range
Set Recherche = Sheets("Listing des Articles").Columns("A").Find(CLng(TextBox3), LookIn:=xlValues, LookAt:=xlWhole)
If Not Recherche Is Nothing Then
    
    ListBox2.AddItem
    ListBox2.List(ListBox2.ListCount - 1, 0) = Sheets("Listing des Articles").Range("C" & Recherche.Row)
    ListBox2.List(ListBox2.ListCount - 1, 1) = Sheets("Listing des Articles").Range("D" & Recherche.Row)
    ListBox2.ListIndex = ListBox2.ListCount - 1
    Label4.Caption = Sheets("Listing des Articles").Range("D" & Recherche.Row)
    Label16.Caption = Sheets("Listing des Articles").Range("C" & Recherche.Row)
Else
    MsgBox "Le code n'a pas été trouvé, veuillez introduire le bon code"
End If
    TextBox3.Value = vbNullString
    TextBox3.SetFocus 'Donne le focus a la textbox3
    End If
Call CalculSomme
    With ListBox2
    If Dir$("D:\Documents and Settings\BeumierForiez\Bureau\weigthwatchers\Images" & .List(.ListIndex, 0) & ".jpg") = "" Then
         Set Image1.Picture = LoadPicture("D:\Documents and Settings\BeumierForiez\Bureau\weigthwatchers\Images\default.jpg")
    Else
        Set Image1.Picture = LoadPicture("D:\Documents and Settings\BeumierForiez\Bureau\weigthwatchers\Images" & .List(.ListIndex, 0) & ".jpg")
    End If
    End With
End Sub

Merci d'avance pour votre aide... parceque jusqu'a présent cela fonctionné et j'ai pas l'impression d'avaoir changé quelque chose!

6 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
22 mars 2008 à 16:24
Tu pourrais vérifier si .ListIndex = -1
Si c'est le cas, tu passes tout droit et ne fait rien.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
cs_Fabian123 Messages postés 180 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 22 novembre 2013
22 mars 2008 à 16:35
Voilà ce que j'ai mis et ça n'a plus l'air de planter! Merci!!

If ListBox2.ListIndex <> -1 Then (ligne que j'ai rajoutée)
    With ListBox2
    If Dir$("D:\Documents and Settings\BeumierForiez\Bureau\weigthwatchers\Images" & .List(.ListIndex, 0) & ".jpg") = "" Then
         Set Image1.Picture = LoadPicture("D:\Documents and Settings\BeumierForiez\Bureau\weigthwatchers\Images\default.jpg")
    Else
        Set Image1.Picture = LoadPicture("D:\Documents and Settings\BeumierForiez\Bureau\weigthwatchers\Images" & .List(.ListIndex, 0) & ".jpg")
    End If
    End With
End If
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 mars 2008 à 17:05
Salut
Vérifie aussi que le texte qui sert de nom de fichier JPG soit compatible avec un nom de fichier (pas de ?, /, \ ...)
Voir http://www.vbfrance.com/codes/SAVOIR-SI-NOM-FICHIER-EST-VALIDE-NOM-WINDOWS_36051.aspx

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
22 mars 2008 à 16:13
L'erreur survient probablement lorsqu'aucun item n'est sélectionné dans la listbox ou encore que la listbox est vide.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Fabian123 Messages postés 180 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 22 novembre 2013
22 mars 2008 à 16:17
en effet, dans mon bouton de validation sur lequel je clique pour valider la vente, je vide ma listbox afin que l'utilisateur puisse passer à la vente suivante
j'ai donc mis 'Listbox2.Clear')
Si j'efface cette ligne, je n'ai plus de probleme, mais ça ne m'arrange pas!

est-ce que tu crois qu'il y a un autre moyen de faire, pour que la listbox soit vide et que ca ne plante pas...
0
cs_Fabian123 Messages postés 180 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 22 novembre 2013
22 mars 2008 à 18:17
salut jack,

j'avais déjà eu quelques soucis par rapport à mes noms de fichiers jpg qui n'étaient pas exactement les mêmes que ceux de ma liste (il y avai des 'espaces' en trop!)
donc, de ce côté là maintenant tout est ok!

Merci!
0
Rejoignez-nous