Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je ne maîtrise absolument pas les ListBoxes!
J'ai fouillé dans les aides, et je n'ai rien trouvé ou pas pigé...
Ce pourquoi je viens vers vous.
Voici le code où il ne me semble pas manquer grand-chose, et pourtant je patine!!!
Code:
Private Sub CommandButton1_Click()
For i = 0 To SAISIE.ListBox1.ListCount - 1
SAISIE.ListView1.ListItems.Add , , SAISIE.ListBox1.List(i)
'For j = 1 To SAISIE.ListBox1.ColumnCount - 1
' SAISIE.ListView1.ListItems(Me.ListView1.ListItems.Count).ListSubItems.Add , , SAISIE.ListBox1.List(i) + ??????????
' Next j
Next i
End Sub
Les Items sont Ok, mais pour les SubItems: Plouf à chaque fois.
Re Habitude, sans vouloir abuser de ta gentillesse,
fhoest:On n'a pas fini d'en parler 😀😀😀
Je ne parviens à voir par quel biais tu détermines la largeur des colonnes de la ListView.
Dans une ancienne version, j'écrivais dans un Label ou un TextBox les Items et SubItems en Format "AutoSize",
J'en récupérais la "MAX" largeur pour l'appliquer aux colonnes respectives de celle-ci.
A noter que j'ai abandonné de le faire au nombre de caractères puisque l'emprise de ces derniers est variable,
et qu'il est fastidieux de l'adapter à la résolution de chaque écran.
Peut-être que ma presbytie ou ma sottise en sont responsables, mais je ne trouve pas.
Par ailleurs j'abandonne la présence de la ListBox, car sauf plus ample informé,
elle ne sert à rien.
Cf. les tests que tu nous as montrés. Nous en étions à 3,45 Secondes sans elle! 🙂
Amicalement à tous,
et respect à celui qui a la modestie de ne pas multiplier 3 Secondes par 50
C'est que je ne détermine pas les largeurs de colonne.
J'ai pensé à un nouveau procédé. Celui de l'affichage dynamique
Ce qui veux dire, remplir la liste avec seulement le nombre d'occurences visible.
Soit 24 dans ce cas-ci
Le 24 je l'ai mis en constante.
Ensuite ajouter à la liste les occurences en fonction du défilement.
Évidemment j'ai du masquer la barrer de défilement de la listView et générer ma propre barre de défilement.
J'ai aussi programmer les Up, Down, pageUp et PageDown
Pour l'affichage Avec la version Vecteur j'ai obtenu
1.08s
1.09s
1.08s
Tu peux voir que le nombre d'occurences augmentent à mesure que tu défile.
Re,
Habitude,merci pour l'exemple listbox vecteur.
mais comme le dit Yann-56 a ce jour la listbox ne sert plus a rien ,elle nous avez fait avancé un petit peu quand même..😱
Belle démonstration de code,encore bravo.
A Yann-56,pour la gestion de largeur version fhoest,la largeur n'est plus gérer ni par label,ni par textbox,regarde bien.
A bientôt,les amixld
Frédéric.😱
Bonjour,
Habitude génial cette dernière version,quelle est ton secret...
le curseur clignote toujours n'y a t il pas un moyen de le rendre sans clignotement ?
je vais regarder ce code en détail car j'ai juste fais le test avant de partir maintenant au boulot car cette histoire de constante m'intrigue et le reste aussi.
Pour Yves, j'ai trouver ce code ,sur un site en anglais (je pense) car j'ai tellement chercher que je ne me souvient plus,en tous les cas ma requete sur google été du genre "listview autofit"
Bonsoir,
avec plus de temps pour regarder je m'apercois que le curseur qui clignote c'est celui de la scrollbar mais,uniquement si celle ci est active,dès que l'on repasse sur la listview c'est ok,
Par contre il manque juste une petite chose,
Lorsque le userform est chargé si l'on ne rempli pas la listview et que l'on va faire un déplacement de curseur "bugg" pas de gestion d'erreur,
Mais jusque la ça va.
Code:
Private Sub ScrollBar1_Change()
If ListView1.ListItems.Count = 0 Then Exit Sub
Private Sub ScrollBar1_Scroll()
If ListView1.ListItems.Count = 0 Then Exit Sub
Nous n'avons pas la même heure*, mais nous avons l'heur* que Habitude
prenne ce temps à nous à nous enseigner tant de choses superbes.
* Jeu de mots. (Force est de constater le décalage horaire 🙂)
Pardon Habitude. J'étais un peu noyé hier soir, et je n'ai pas bien tout lu;
aussi trompé par la Caption du nouveau bouton.
Le fait que la molette de la souris ne réagisse pas sur la ListView,
m'a amené à penser, comme un imbécile, que j'avais affaire à une ListBox.
(D'où ma réponse qui n'avait pas lieu d'être)
Bigre que ton code est balaise! 1 Seconde ... !!! Je n'aurais jamais imaginé que cela puisse-t-être faisable.
Je pense que l'ascenseur (ScrollBar1) n'est pas souhaitable,
compte tenu du grand nombre d'Items, et qu'il serait plus judicieux de
carrément changer de page avec un SpinButton dont l'effet serait plus radical.
Ne te moque pas, c'est un résumé simpliste..... J'ai effacé mes essais.
(Le ridicule ne tue pas, mais il y a des limites! 😱)
En tous les cas, ton travail va certainement servir à plus d'un qui utilisent les ListView.
De mon coté, même si je dois reconnaître un peu trop souvent l'envie d'abandon, je suis fort heureux de rencontrer des gens comme toi qui me donnent encore l'envie de continuer.
Bonsoir,
avec plus de temps pour regarder je m'apercois que le curseur qui clignote c'est celui de la scrollbar mais,uniquement si celle ci est active,dès que l'on repasse sur la listview c'est ok,
Par contre il manque juste une petite chose,
Lorsque le userform est chargé si l'on ne rempli pas la listview et que l'on va faire un déplacement de curseur "bugg" pas de gestion d'erreur,
Mais jusque la ça va.
Code:
Private Sub ScrollBar1_Change()
If ListView1.ListItems.Count = 0 Then Exit Sub
Private Sub ScrollBar1_Scroll()
If ListView1.ListItems.Count = 0 Then Exit Sub
Si je peux dire : un vecteur est à la matrice ce qu'une prémisse est au syllogisme.
Disons qu'un vecteur est une ligne à plusieurs colonne.
Un recordset est gèré en vecteur
Où chaque moveNext te renvoie le prochain vecteur.
Une matrice en revanche est un tableau de N vecteur Ligne qui transposé donne N vecteur colonne.
Pour être plus claire
on définit la matrice par (,)
on définit le vecteur par () une seule dimension
Une matrice peut aussi être composé d'un vecteur associé à un "TYPE"
Donc mon appelation aurait du être matrice.
Bref (0,Nj)= premier vecteur
(1, Nj)= deuxime vecteur
En formule, fonction Equiv fait sa recherche sur une seule ligne ou une seule colonne. On peut donc affirmer qu'Equiv ne prend pas une matrice mais un vecteur.
L'avantage est qu'il pointe directement en mémoire, l'accès est très rapide.
Il y a aussi le dynamisme qui se fait par redim et redim preserve.
Ca évite de réservé de la place en mémoire inutilement.
Voici ma tête en ce moment (voir signature) ,avec tous ceci j'ai du faire appel a wikipédia,
heureusement qu'il est la celui la.
merci pour l'explication,
donc si j'ai bien compris :
1° un tableau sur lequel on travail avec Ubound et Lbound est une matrice, dont ubound (1 vecteur) lbound (1 vecteur) et chacun d'eux étant les extrêmes de la matrice.
2° le movenext renvoi la prochaine ligne (ou vecteur) d'un recodset
Juste ou pas?
si oui Ouf ma tête va pouvoir relâcher un peu de vapeur 😀😀😀
Encore et toujours merci pour ta patience et ton dévouement a me ou nous renseigner de cette façon.
A+ tard
Nous n'avons pas la même heure*, mais nous avons l'heur* que Habitude
prenne ce temps à nous à nous enseigner tant de choses superbes.
* Jeu de mots. (Force est de constater le décalage horaire 🙂)
Pardon Habitude. J'étais un peu noyé hier soir, et je n'ai pas bien tout lu;
aussi trompé par la Caption du nouveau bouton.
Le fait que la molette de la souris ne réagisse pas sur la ListView,
m'a amené à penser, comme un imbécile, que j'avais affaire à une ListBox.
(D'où ma réponse qui n'avait pas lieu d'être)
Bigre que ton code est balaise! 1 Seconde ... !!! Je n'aurais jamais imaginé que cela puisse-t-être faisable.
Je pense que l'ascenseur (ScrollBar1) n'est pas souhaitable,
compte tenu du grand nombre d'Items, et qu'il serait plus judicieux de
carrément changer de page avec un SpinButton dont l'effet serait plus radical.
Ne te moque pas, c'est un résumé simpliste..... J'ai effacé mes essais.
(Le ridicule ne tue pas, mais il y a des limites! 😱)
En tous les cas, ton travail va certainement servir à plus d'un qui utilisent les ListView.
De mon coté, même si je dois reconnaître un peu trop souvent l'envie d'abandon, je suis fort heureux de rencontrer des gens comme toi qui me donnent encore l'envie de continuer.
Voici avec spin button
J'ai changé la méthode
La liste n'aura jamais plus d'éléments que ceux visible.
J'ai aussi mis un textBox de positionnement.
La recherche peut aussi y être ajouter.
Tout est Super!... Sauf que je ne parviens plus à trier mes colonnes par:
Code:
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
SAISIE.ListView1.Sorted = False
SAISIE.ListView1.SortKey = ColumnHeader.Index - 1
If SAISIE.ListView1.SortOrder = lvwAscending Then
SAISIE.ListView1.SortOrder = lvwDescending
Else
SAISIE.ListView1.SortOrder = lvwAscending
End If
SAISIE.ListView1.Sorted = True
End Sub
J'ai constaté que dans ma liste de références a disparu: "Microsoft Windows Common Controls 6.0 (SP6)"
Donc impossible de la cocher, comme elle l'était dans les premiers Classeurs que j'ai transmis.
(Il me semble que le Bug est issu de ce manque)
Sur mon NetBook, où j'ai installé Excel 2003, elle n'apparaît pas non plus.
Il y a peut-être là une manipulation que j'ai oublié de faire dans ce dernier, mais je m'explique mal pourquoi cette référence à disparu de mon ordi de bureau ! 😕
Désolé de t'envahir avec ce détail, mais cela m'intrigue.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD