problème avec une listbox

Deneb

XLDnaute Junior
Bonjour à tous.

J'utilise une listbox dans un fichier/macro qui doit m'afficher une liste de fichiers en foction des résultats d'une recherche. Du coup la taille de la listbox est extrèmement variable.

Mon problème est le suivant :
Lorsque le résultat de ma recherche ne comporte que quelques fichiers, la barre de défilement est tout à fait inutile, mais bien là.
J'ai chercher comment résoudre ce (petit) problème et j'ai entendu dire qu'il existait une méthode consistant à mettre à jour la taille de la listbox. lorsque cela est nécessaire.

Comment fait-on ? :confused:
 

Odesta

XLDnaute Impliqué
Re : problème avec une listbox

Bonjour

J'ai réalisé un test, sous XL2003, avec une listbox de 4 lignes maximum. La barre de défilement ne s'affiche pas, lorsque je remplis la liste avec 4 item ou moins.

Pouvez-vous nous montrer votre fichier svp ?

Cordialement
 

Deneb

XLDnaute Junior
Re : problème avec une listbox

Merci de cette réponse. Malheureusement je ne peux pas envoyer mon fichier car il contient des données confidentielles pour l'entreprise où je travaille.

Je pense néanmoins que le code ne servirai à rien étant donné que le nombre d'éléments dans la liste est très variable, pouvant facilement varier entre 1 et 500 !
 

Odesta

XLDnaute Impliqué
Re : problème avec une listbox

Evidemment, il faut retirer toutes les données confidentielles. Puis alléger le fichier, avec un exemple qui correspond à votre problème. La résolution de l'exemple, pourra certainement, par extansion, résoudre le vrai problème.


Quelle est votre version d'exel ?
 

Deneb

XLDnaute Junior
Re : problème avec une listbox

Bon tout ce que je peux faire étant donné la taille de mon fichier, c'est montrer cette image de la listbox concernée :

http://www.imagup.com/pics/1277861942.html

Comme vous pouvez le voir même sans fichier dans la liste (juste une ligne est occuppée par "..."), la scrollbar me permet de descendre loin !

Je dois rajouter une commande dans mon code lorsque je réorganise la liste pour enlever cette scrollbar si elle ne sert à rien.


PS : je suis sous Excel 2003
 

Deneb

XLDnaute Junior
Re : problème avec une listbox

Voici le code qui met à jour les composants :

UserForm1 est la Userform qui contient ma listbox

Application.ScreenUpdating = False

Sheets("Filelist").Select
UserForm1.TextBox2 = Filelist.Range("C1") - 2
Columns("A:A").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Sheets("Synergy items").Select
Range("A2").Select
Data.Range("B4") = False
Application.ScreenUpdating = True


la listbox a comme row source : Filelist!B:B


Comme vous pouvez le voir, il me manque la mise à jour de la taille de la listbox...
 
Dernière édition:

Odesta

XLDnaute Impliqué
Re : problème avec une listbox

Lorsque vous cliquez n'importe où dans la liste box, est-ce vous pouvez surligner une ligne ?
Cela veut dire que la liste box contient une donnée, même vide.

En fait, c'est votre commentaire : "la listbox a comme row source : Filelist!B:B"
Il indique que la listbox est remplie par les 65000 lignes de la colonne B.

Essayez ceci :
Code:
ListBox1.RowSource = "Filelist!B1:B" & Range("B65000").End(xlUp).Row

Vous observerez que vous ne pouvez plus sélectionner de ligne vide.

Cordialement
 

Deneb

XLDnaute Junior
Re : problème avec une listbox

J'ai essayé de mettre cette ligne dans mon code de mise à jour de la listbox, mais j'obtiens un message d'erreur à l'exécution me disant "objet requis" et me surligne la ligne ajoutée en déboggage. :confused:
 

Deneb

XLDnaute Junior
Re : problème avec une listbox

Pardon !
Il manquait l'objet Userform1 qui crevait les yeux !

Cela a résolu mon problème merci beaucoup !

par contre je veux bien une explication sur la signification de

"Range("B65000").End(xlUp).Row"

Cependant je n'ai plus du tout de barre de défilement maintenant, et la listbox n'est meme pas occupée entièrement
...

Merci encore
 
Dernière édition:

Odesta

XLDnaute Impliqué
Re : problème avec une listbox

"Filelist!B1:B" & Range("B65000").End(xlUp).Row

Normalement, je devrais écrire "Filelist!B1:B500" pour charger la liste de 1 à 500

Hors, il peut y avoir plus ou moins de ligne, suivant le besoin.
le but est donc de chercher la dernière ligne de la colonne B.

Pour cela, j'utilise : Range("B65000").End(xlUp).Row
C'est ce que fait la commande 'crtl' + 'flèche haut' (vous pouvez tester)
il part de la cellule B65000 et remonte jusqu'à trouver une cellule occupée.


Vous comprenez pourquoi je vous demandais votre fichier. c'est le contexte qui a permis de trouver l'erreure, qui n'est souvent pas celle qu'on pense a priori.


Cordialement
Olivier
 

Statistiques des forums

Discussions
312 623
Messages
2 090 285
Membres
104 480
dernier inscrit
Gatsuken