Copier contenu ListBox dans ListView ?

  • Initiateur de la discussion Initiateur de la discussion YANN-56
  • Date de début Date de début

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 !

YANN-56

XLDnaute Barbatruc
Bonsoir à ceux qui passeront par ici,

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.

Merci d'avance.

Yann

P.S. Voir éventuellement le Classeur joint:
 

Pièces jointes

Re : Copier contenu ListBox dans ListView ?

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

Yann
 
Re : Copier contenu ListBox dans ListView ?

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.
 

Pièces jointes

Re : Copier contenu ListBox dans ListView ?

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.😱
 
Re : Copier contenu ListBox dans ListView ?

Re Bonsoir Frédéric, Habitude, et à ceux qui auront eu la chance de passer par ici,

C'est bon! J'ai la bouillotte pleine de glaçons sur la tête, et il y a de la buée sur la fenêtre!

Habitude: L'intérêt que tu portes au sujet et le temps que tu y investis me touchent beaucoup.

Fred: Ta merveille pour adapter les largeurs de colonnes; tu l'as trouvée où? C'est super!

J'ai résumé le Classeur avec ses dernières évolutions, au cas où cela puisse servir à quelqu'un.

Et qui sait recueillir autres idées de génie puisqu'il en pleut beaucoup actuellement.

P.S. Pour Habitude:
Frédéric et moi communiquons à titre personnel depuis un bon moment sur le sujet.
(Nous en étions à 15 Secondes à nos débuts 🙄)

Amicalement à vous deux et à tous.

Yann (Alias Yves)
 

Pièces jointes

Re : Copier contenu ListBox dans ListView ?

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"

Allez go au boulot. A+
 
Re : Copier contenu ListBox dans ListView ?

Si tu dépasse les limites de ce qui est dans la liste, malheureusement le curseur risque de clignoter un peu à l'ajout d'info dans la liste.

sur mon PC c'est à peine perceptible.

Une fois que la liste a atteinte la limte, il ne devrait plus y avoir aucun clignotement.
 
Re : Copier contenu ListBox dans ListView ?

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
A propos qu'es ce qu'un vecteur ?
A+
 
Re : Copier contenu ListBox dans ListView ?

Bonjour Habitude, Bonsoir Frédéric,

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.

En passant par un truc du genre:

Code:
ListView1.ListItems ((Me.SpinButton1.Value * NB_ITEM_VISIBLE) - 1).EnsureVisible

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.

Merci Habitude, avec mes amitiés.

Yann

Relecture jointe:
 

Pièces jointes

Re : Copier contenu ListBox dans ListView ?

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
A propos qu'es ce qu'un vecteur ?
A+


Mon appelation n'est peut-être pas la bonne

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.
 
Re : Copier contenu ListBox dans ListView ?

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
 
Dernière édition:
Re : Copier contenu ListBox dans ListView ?

Bonjour Habitude, Bonsoir Frédéric,

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.

En passant par un truc du genre:

Code:
ListView1.ListItems ((Me.SpinButton1.Value * NB_ITEM_VISIBLE) - 1).EnsureVisible

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.

Merci Habitude, avec mes amitiés.

Yann

Relecture jointe:


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.
 

Pièces jointes

Re : Copier contenu ListBox dans ListView ?

Bonjour Habitude, Frédéric,

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.

A te lire.

Amicalement

Yann
 
Re : Copier contenu ListBox dans ListView ?

Ca me semblai être plus un problème d'objet que de référence

Ca me donnait l'erreur 800a0011

Quand je lis sur microsoft ca dit qu'il y a eu tentative de modification de l'objet pendant son exécution.

J'ai donc supprimer la liste et ajouter une nouvelle.
Et ca fonctionne bien.


Par contre comme la liste affiche seulement 23 items
Ton tri va fonctionner sur seulement 23 items

Autrement tu dois trier le vecteur et ré-afficher.
Et la ca risque d'être très long.....

Je pense aussi qu'il serait bien de programmer pageUp et pageDown sur le spin.
 

Pièces jointes

- 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

Discussions similaires

Réponses
10
Affichages
661
R
Réponses
20
Affichages
4 K
RaVenSs
R
T
Réponses
2
Affichages
2 K
Tibooo
T
X
  • Question Question
Réponses
4
Affichages
2 K
Xplor
X
Retour