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 ?

Bonsoir gam, Laetitia,

gam mes commentaires sont des "Rem" à l'ancienne

Laetitia:

Je suis passé outre autres explications, et effectivement ta remarque est fondée sans celles-ci.

En réalité je charge la feuille "TRANSFERT" par la méthode "ADO"; ce qui demande entre 1 à 2 secondes
pour 22855 lignes d'un autre Classeur, avec chacune 8 Colonnes à pomper. (182840 Cellules à visiter)

Directement dans la ListView cela demande de 12 à 14 secondes! Suivant la config.
Alors qu'avec la "RowSouce" relative à cette Feuille la ListBox est instantanément initialisée.

Je suis donc en train de tenter de profiter de la rapidité de cette dernière pour charger ma ListView.

Je ne suis pas certain du résultat en matière de temps, mais je tente.

Merci à vous d'avoir regardé et m'avoir répondu, c'est sympa.

Amicalement.

Yann
 
Re : Copier contenu ListBox dans ListView ?

Bonsoir à tous,
ET OUI c'est moi,
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[COLOR="Red"],j[/COLOR]) '+ ??????????

    Next j
  
 Next i
        
End Sub
Pourquoi pas ceci;
sauf pour la première ligne.😀
A bientôt.
 
Re : Copier contenu ListBox dans ListView ?

Bonjour à tous,

Merci fhoest pour ce ",j".... C'était la bonne solution! 🙂

Pour information, le gain de temps est effectif, mais seulement de 2 à 3 secondes.

Il est vrai que mon ordi est une bombe, et que la différence n'est pas sensible.

Mais n'étant pas courant d'avoir autant de lignes à charger;
je ne pense pas que le jeu en vaille vraiment la chandelle.

Quel dommage que Bill n'ait pas pensé à "RowSource" pour les ListView... Pfff !!! 🙁

Amicalement, et encore Merci.

Yann
 
Re : Copier contenu ListBox dans ListView ?

Tu va peut-être gagner un peu plus de temps en évitant de toujours appeler la fonction listitems.count

Code:
Private Sub CommandButton1_Click()

For i = 0 To SAISIE.ListBox1.ListCount - 1
      
 indice= SAISIE.ListView1.ListItems.Add (, , SAISIE.ListBox1.List(i)).index
 
    For j = 1 To SAISIE.ListBox1.ColumnCount - 1

     SAISIE.ListView1.ListItems(indice).ListSubItems.Add , , SAISIE.ListBox1.List(i,j)

    Next j
  
 Next i
        
End Sub

Ce qui est intéressant c'est l'ajout d'item lorsqu'il y a seulement 2 colonne en une seule ligne de code

Code:
ListView1.ListItems(ListView1.ListItems.Add (, , "colonne1").index).ListSubItems.Add , , "colonne2"
 
Re : Copier contenu ListBox dans ListView ?

Bonsoir Habitude,

C'est avec plaisir que je te croise à nouveau, et bons souvenirs de tes judicieux conseils.

Comme je l'ai dit ci-dessus, je suis particulièrement mal à l'aise avec les ListBoxes.
Au même titre que les formules Excel qui m'ont amené à VBA; ces dernières m'ont amené aux ListViews.

Je joins ici mon Dossier qui me sert de test. Tu regardes si cela te tente.
Cijoint.fr - Service gratuit de dépôt de fichiers

Attention, il ne faut pas oublier d'avoir coché
"Microsoft Active X Data Object 2,8 (Ou 2,6) Library"

De mon coté, je vais adapter mon code à ce que tu viens de me dire.

Cela m'intéresse au plus haut point, car dans mon appli,
il s'agit d'une cinquantaine de fournisseurs dont 3 sont du même tonneau
et une dizaine pas beaucoup moins.

Sur les 12 postes en réseau, il y a des utilisateurs impatients et râleurs!

Grand Merci à toi, et au plaisir.

Yann
 
Re : Copier contenu ListBox dans ListView ?

Bon
J'ai ajouté 2 type de remplissage
L'un remplit la listView à partir du recordset
L'autre remplit un vecteur à partir du recordset et la liste à partir du vecteur.


J'ai fait 3 test par type, ca donne ceci en secondes

Sans ListBox : 7.06s - 7.11s - 7.27s
Avec Listbox: 5.59s - 5.66s - 5.56s
Recordset : 5.17s - 5.23s - 5.19s
Vecteur : 3.89s - 3.92s - 4.02s
 

Pièces jointes

Re : Copier contenu ListBox dans ListView ?

Bonjour habitude,

C'est Super Génial!
(Je ne vais pas ajouter "Comme d'habitude"; tu as du déjà te l'entendre dire moult fois)

J'ai constaté que ton ordi est plus rapide que le mien d'environ 0,80 secondes
dans mes deux solutions initiales, de environ 0,20 avec Recorset, mais
inférieur de 0,50 avec le Vecteur. (Mais ceci n'est que pour la petite histoire)

Je vais donc essayer de bien analyser cette dernière dont le secret doit être l'utilisation
de "Do" et "Loop While ..." (A moi de bosser pour comprendre!)

Il y a au moins 8 utilisateurs réguliers dans mon ancienne entreprise (Je suis à la retraite)
qui vont se joindre à moi pour te saluer...
Et tant pis s'ils n'auront désormais plus le temps d'aller faire pipi! 😀

il s'agit d'une cinquantaine de fournisseurs dont 3 sont du même tonneau
et une dizaine pas beaucoup moins

Cela devient énorme!!! Et inimaginable de faire mieux.

Merci (Puissance 50 x 8 x 3 "Secondes"), auxquels je joins mes amitiés.

Yann
 
Re : Copier contenu ListBox dans ListView ?

Bonjour à tous
Trop fort Habitude moi aussi je chercher mais la BRAVO...😱
hein qu'il est balaise Yann n'es ce pas ?
moi aussi je vais essayer de comprendre
pas facile tout ça, ya du boulot ...
Allez au plaisir de se retrouver sur d'autres fils...
😀
Petite question.
Étant donnée que la listbox est quasi instantanée,est il possible de combiner un vecteur sur la listbox ,ou bien cela n'est pas possible ou encore cela ne servirai a rien...
Simple question car je l'avoue j'en serais actuellement incapable.
 
Dernière édition:
Re : Copier contenu ListBox dans ListView ?

Les tests confirme ce que je pensais

Il faut chargé la listbox dans le vecteur pour ensuite chargé le vecteur dans la listview.

Les temps que j'obtiens sont quand même surprenant.

4.36s
4.39s
4.28s

La différence de temps devrait être le chargement de la listbox soit ~ 27centième de seconde
 

Pièces jointes

Dernière édition:
- 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