Listview et erreur "index hors limite" 35600

waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013 - 21 janv. 2007 à 22:58
waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013 - 21 janv. 2007 à 23:49
Bonjour,

je suis en train de creer une tite macro pour gerer des stock de reactifs. sous excel j'ai deux feuilles appelées "Réactifs MCC" et "Réactifs TSC" contenant les colonnes:
noms reactifs
references
date de péremption
ect...
J'ai egalement un feuillet "reference" qui liste les noms et references des réactifs.

sur mon userform j'ai deux checkbox (TSC et MCC) qui selon laquelle je coche liste dans une listbox les reactifs correspondants.
Par exemplepour ma feuille "reactifs MCC" qui contient:

<col style=\"width: 170pt;\" width=\"226\" /><col style=\"width: 60pt;\" width=\"80\" /><col style=\"width: 61pt;\" width=\"81\" /><col style=\"width: 53pt;\" width=\"71\" />----
Réactifs, N° de Lot, Péremption, Reçu le, ----
Réactifs MCC Barbituriques , 57030693, 03/2009, 11/01/2007, ----
Réactifs MCC Benzodiazépine , 56702670, 06/2009, 08/01/2007, ----
Réactifs MCC
Cocaine, 56702670, 06/2009, 11/01/2007, ----
Réactifs MCC EDDP , 56702670, 06/2009, 11/01/2007, ----
Réactifs MCC Opiate , 56947554, 03/2009, 08/01/2007, ----
Réactifs MCC Barbituriques , 56947554, 03/2009, 11/01/2007, ----
Réactifs MCC Benzodiazépine , 56947554, 03/2009, 11/01/2007

 sur ma userform si je clique "MCC", il apparait dans la listbox que les reactifs MCC à paritr du feuillet "reference", soit;

Réactifs MCC Barbituriques
Réactifs MCC Benzodiazepine
Réactifs MCC cocaine
Réactifs MCC EDDP
Réactifs MCC Opiate

Je souhaite que si je selectionne "Réactifs MCC Barbiturique", il apparaissent dans un listviews que les reactifs correspondants, soit deux entrées:
Réactifs                                            N° Lot          Péremption   Recu le
<col style=\"width: 170pt;\" width=\"226\" /><col style=\"width: 60pt;\" width=\"80\" /><col style=\"width: 61pt;\" width=\"81\" /><col style=\"width: 53pt;\" width=\"71\" />----
Réactifs MCC Barbituriques , 57030693, 03/2009, 11/01/2007, ----
Réactifs MCC Barbituriques , 56947554, 03/2009, 11/01/2007

J'ai donc créé le tit bout de code suivant:

Private Sub ListBox1_Click()
val1 = ListBox1.Value
If CheckBox1.Value = True Then
With Sheets("Réactifs TSC")
i = 1
Do
i = i + 1
val2 = .Cells(i, 1).Value
If val2 = val1 Then
ListView1.ListItems.Add , , .Cells(i, 1)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 2)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 3)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 4)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 5)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 6)
End If
Loop Until .Cells(i, 1).Value = ""
End With
End If

If CheckBox2.Value = True Then
With Sheets("Réactifs MCC")
i = 1
Do
i = i + 1
val2 = .Cells(i, 1).Value
If val2 = val1 Then
ListView1.ListItems.Add , , .Cells(i, 1)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 2)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 3)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 4)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 5)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 6)
End If
Loop Until .Cells(i, 1).Value = ""
End With
End If
End Sub

Ca marche pratiquement sauf que j'ai l'erreur d'excusion 35600 (index hors limite)
C'est du a quoi? comment faire que cela fonctionne?

A l'avance, merci pour votre aide,

<col style=\"width: 170pt;\" width=\"226\" /><col style=\"width: 60pt;\" width=\"80\" /><col style=\"width: 61pt;\" width=\"81\" /><col style=\"width: 53pt;\" width=\"71\" /><col style=\"width: 140pt;\" width=\"187\" />----

,
,
,
,
, ----

,
,
,
,
, ----

,
,
,
,
, ----

,
,
,
,
, ----

,
,
,
,
, ----

,
,
,
,
, ----

,
,
,
,
, ----

,
,
,
,

2 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 janv. 2007 à 23:15
"Ca marche pratiquement "


Et ... qu'est-ce qui marche "pratiquement" ?

Surement pas celà (ni pratiquement ni autrement)



ListView1.ListItems.Add , , .Cells(i, 1)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 2)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 3)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 4)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 5)
ListView1.ListItems(i - 1).ListSubItems.Add , , .Cells(i, 6)





Il y a eu très récemment une discussion (aujourd'hui même, je crois)...
Cherche la et vois quelle est la syntaxe d'ajout de subitems dans une listview, s'il te plait !!!
0
waspy59 Messages postés 189 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 15 mai 2013
21 janv. 2007 à 23:49
quand je dis "pratiquement" c'est que l'affichage dans le listview ce fait correctement pour n-1  lignes. en gros quand  on  a  3  references identiques, ca plante  a  introduction de la  3eme  references  dans le listview... si 2  references identiques, c plante  pour la 2eme....

pour ce qui est de la discution, tu peux m'orienter?
0
Rejoignez-nous