Microsoft 365 Listview: erreur exécution 35600 Index out of bonds

pgauzere

XLDnaute Nouveau
Bonjour à tous;
le fichier joint contient une userform avec une listview alimentée par une combobox.
Chaque changement de la combobox, fait apparaitre de nouvelles données dans la listview, sans probleme.

On peut trier dans l'ordre alphabétique les données de la listview en cliquant sur l'une de ses entetes.
Mon probleme est le suivant:
Si la combobox change APRES avoir fait un tri alphabétique dans la listview j'ai l'erreur 35600 "Index Out of Bonds qui apparait".
Cette erreur n'apparait pas si aucun tri n'a été fait préalablement.
C'est pourtant la même procédure qui est appelée dans les 2 cas (événement change lié a la combobox)!!!
Je joins le fichier ci dessous.
C'est vraiment très bizarre :rolleyes:. Une nouvelle fois, je fais appel au forum au cas ou quelqu'un connaîtrait la solution.

Merci à tous!
Patrick
 

Pièces jointes

  • vocabulaire_forum.xlsm
    49.5 KB · Affichages: 10

ChTi160

XLDnaute Barbatruc
Bonsoir pgauzere
Bonsoir le Fil ,le Forum
j'ai modifié ce que j'ai pu (pas trop pris le temps) Lol
j'ai remplacé ta procédure de Tri des colonne par la mienne Lol
cela semble fonctionner(beaucoup de choses pourraient être simplifiées)
Tu cliques sur une colonne et ensuite tu changes la Sélection dans ComboBox et Lycée de Versailles !
jean marie
 

Pièces jointes

  • vocabulaire_forum-Chti160.xlsm
    52 KB · Affichages: 11

pgauzere

XLDnaute Nouveau
bonsoir chti160,
merci pour cette reponse.
j'ai regardé rapidement votre fichier.
il n'y a plus d'erreur effectivement, le pb c'est que le tri alphabetique ne se fait que dans la listview et pas aussi dans les feuilles excel.
Du coup un numero n d'item de la listview ne correspond pas forcement au numero n de la ligne de la feuille excel. Et donc quand on ferme le fichier avec des items n cochés dans la listview, et qu'on le réouvre apres sauvegarde, les items cochés dans la listview ne correspondent plus.
Je vais quand meme essayer de modifier votre proposition pour voir si celle ci peut resoudre mon pb dont je ne comprends toujours pas l'origine...
Merci encore,
A+
PAtrick
 

pgauzere

XLDnaute Nouveau
Hello à tous,
a chaque ouverture du fichier, on appelle la procedure "restoreselection". Cette procedure permet de cocher les cases de la listview choisies lors de la derniere sauvegarde du fichier (grace a la procedure "saveselection"). Cela permet de ne pas perdre la selection des cases entre 2 ouvertures du fichier.
Dans mon premier fichier cela fonctionne car lorsque je tri les articles dans la listview, je le fais aussi dans la feuille excel correspondante. L'ordre des données est donc le meme dans la listview et dans la feuille.
Dans le fichier proposé, le tri étant fait uniquement dans la listview, l'ordre des données est different entre la listview et la feuille correspondante. Du coup, lorsque l'on ferme le fichier et qu'on le réouvre, les cases cochées dans la lisview ne sont pas les bonnes par rapport à la derniere sauvegarde.
Ceci étant dit, je vais essayer de modifier votre procedure pour voir si je peux l'adapter à mes besoins.
Encore merci!
A+
Patrick
 

pgauzere

XLDnaute Nouveau
Bonjour à tous,

voila, grâce a Chti160, j'ai enfin pu résoudre mon problème :)

J'ai simplement modifié la procedure liée à l'évenement change de la combobox en m'inspirant du code de Chti160:
j'ai déclaré l'objet Dim LstVItem As MSComctlLib.ListItem puis j'ai inséré Set LstVItem = .ListItems.Add(, , Sheets(nom_feuille).Range("B" & ligne1).Value).
Je n'ai pas touché a ma procedure de tri.
Je joins le fichier corrigé au cas ou ça pourrait intéresser quelqu’un.

Un grand merci à Chti160!
A +
Patrick
 

Pièces jointes

  • vocabulaire_forum_avec_modif_chti160.xlsm
    50.4 KB · Affichages: 8

Statistiques des forums

Discussions
290 779
Messages
1 910 447
Membres
176 663
dernier inscrit
EMD
Haut Bas