Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Retour de tous les éléments d'une Listview dans une feuille

  • Initiateur de la discussion Initiateur de la discussion blord
  • 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 !

blord

XLDnaute Impliqué
Bonjour à tous,

J'utilise le code suivant pour retourner dans une feuille tous les lignes d'une listview :

Code:
    Dim I As Integer
    Dim J As Byte
    Dim K As Integer
    K = 51
    For I = 1 To ListView2.ListItems.Count
    Cells(K, 1) = ListView2.ListItems(I).Text
    For J = 1 To ListView2.ColumnHeaders.Count - 1
    Cells(K, J + 1) = ListView2.ListItems(I).ListSubItems(J).Text
    Next J
    K = K + 1
    Next I

Ce code fonctionne très bien, toutes les données des 9 colonnes ainsi que toutes les lignes de ma listview sont bien retournées dans la feuille.

Mon problème est que les données de ma première colonne sont des chiffres qui peuvent commencer par des 0 (exemple :000789654). La boucle du code ci-haut retourne le chiffre sans les zéros (exemple : 789654).

Comment puis-je faire pour conserver les 0 devant les données de ma première colonne ?

J'ai essayé ceci :

Cells(K, J + 1) = Format(ListView2.ListItems(I).ListSubItems(J).Text, "@")

et

Cells(K, J + 1) = "'" & ListView2.ListItems(I).ListSubItems(J).Text

mais celà ne change rien aux données retournées dans la feuille...

Merci pour votre aide !

Benoit Lord
 

Pièces jointes

Dernière édition:
Re : Retour de tous les éléments d'une Listview dans une feuille

Bon, j'ai essayé avec un fichier que j'avais, je crois qu'il faut simplement enlever le .text

Cells(K, J + 1) = ListView2.ListItems(I).ListSubItems(J)

au lieu de
Cells(K, J + 1) = ListView2.ListItems(I).ListSubItems(J).Text

A essayer.
 
Re : Retour de tous les éléments d'une Listview dans une feuille

Bonjour Grand Chaman Excel, le Forum,

Je m'excuse tout d'abord pour le code protégé sur mon fichier, j'ai simplement oublié d'enlever le protection avant de joindre le fichier... J'ai édité mon premier message afin d'attacher un fichier sans protection...

Deuxièmement, j'ai essayé d'enlever le .Text et ça ne résoud pas le problème....

Benoit Lord
 
Re : Retour de tous les éléments d'une Listview dans une feuille

Bonjour à tous,

J'ai partiellement réussie à obtenir ce que je veux en faisant ceci :

Code:
    For I = 1 To ListView2.ListItems.Count
    Sheets("Form_Formulaire").Range("A51").Value = "'" & ListView2.ListItems(I).Text
    Sheets("Form_Formulaire").Range("B51").Value = ListView2.ListItems(I).ListSubItems(1).Text
    Sheets("Form_Formulaire").Range("C51").Value = ListView2.ListItems(I).ListSubItems(2).Text
    Sheets("Form_Formulaire").Range("D51").Value = ListView2.ListItems(I).ListSubItems(3).Text
    Sheets("Form_Formulaire").Range("E51").Value = ListView2.ListItems(I).ListSubItems(4).Text
    Sheets("Form_Formulaire").Range("F51").Value = ListView2.ListItems(I).ListSubItems(5).Text
    Sheets("Form_Formulaire").Range("G51").Value = ListView2.ListItems(I).ListSubItems(6).Text
    Sheets("Form_Formulaire").Range("H51").Value = ListView2.ListItems(I).ListSubItems(7).Text
    Sheets("Form_Formulaire").Range("I51").Value = ListView2.ListItems(I).ListSubItems(8).Text
    Next

Avec la première ligne en ajoutant l'apostrophe, la cellule garde bien les zéros devant le nombre.

Évidemment, avec ce code, seule la dernière ligne de la listview se retrouve affichée...

IL faudrait donc une boucle pour changer de ligne. J'ai pensé à quelque chose du genre :

Code:
    Dim CelluleCourante3 As Range
    Dim CelluleSuivante3 As Range
    Set CelluleCourante3 = Sheets("Form_Formulaire").Range("A51")
   
    Do Until CelluleCourante3.Value = ""
    Set CelluleSuivante3 = CelluleCourante3.Offset(1, 0)
        
    For I = 1 To ListView2.ListItems.Count
    CelluleCourante3.Offset(0, 0).Value = "'" & ListView2.ListItems(I).Text
    CelluleCourante3.Offset(0, 1).Value = ListView2.ListItems(I).ListSubItems(1).Text
    CelluleCourante3.Offset(0, 2).Value = ListView2.ListItems(I).ListSubItems(2).Text
    CelluleCourante3.Offset(0, 3).Value = ListView2.ListItems(I).ListSubItems(3).Text
    CelluleCourante3.Offset(0, 4).Value = ListView2.ListItems(I).ListSubItems(4).Text
    CelluleCourante3.Offset(0, 5).Value = ListView2.ListItems(I).ListSubItems(5).Text
    CelluleCourante3.Offset(0, 6).Value = ListView2.ListItems(I).ListSubItems(6).Text
    CelluleCourante3.Offset(0, 7).Value = ListView2.ListItems(I).ListSubItems(7).Text
    CelluleCourante3.Offset(0, 8).Value = ListView2.ListItems(I).ListSubItems(8).Text
    Next
    Set CelluleCourante3 = CelluleSuivante3
    Loop

Mais je ne sais pas comment mettre la condition sur le Do Until...

Évidemment ici ça ne serait pas sur le fait que la CelluleCourante soit vide mais bien sur le fait que l'on ait traité la dernière ligne de la listview....

Merci encore pour vos suggestions....

Benoit Lord
 
Re : Retour de tous les éléments d'une Listview dans une feuille

Bonjour, blord, Grand Chaman Excel, et à ceux qui passeront par là,

Quand je vois "ListView", je regarde, tant j'aime son utilisation.

Sauf mon respect, on peut diviser par au moins 4 le nombre de lignes écrites dans ton code.

J'aimerais bien t'aider, mais il serait bien que tu joignes ton Classeur sans protection.

A plus tard,

Yann

P.S. Désolé: je n'avais pas tout lu, je vais donc pouvoir regarder...
 
Dernière édition:
Re : Retour de tous les éléments d'une Listview dans une feuille

Bonsoir, ou Bonjour suivant l'heure, blord, Grand Chaman Excel, et à ceux qui passeront par là,

Ci-joint un p'tit truc ....... Tu regarde.

Mon "On Error Resume Next est à proscrire, mais j'en avais marre de chercher.

Je suis parti sur un ciblage de la position du tableau, pour éviter des surprises en cas de changement de cette dernière.

Pour le reste, une fois l'initialisation correcte de la ListView faite, tout est facile!

Je ne suis pas le meilleur exemple, mais si tu cherches dans mes dialogues sur le Forum, tu trouveras matière.

J'espère, au moins t'avoir montré une simplification quant au remplissage de la ListView.

Amicalement,

Yann
 

Pièces jointes

Re : Retour de tous les éléments d'une Listview dans une feuille

Bonjour YANN-56, le Forum,

Merci beaucoup pour tes explications, i. est toujours intéressant d'apprendre de quelqu'un qui donne de son temps pour expliquer à des gens, comme moi, qui ont encore besoin d'apprendre en VBA....

Sois certain que je vais faire bon usage de tes explications...

Merci encore !

Benoit Lord
 
Re : Retour de tous les éléments d'une Listview dans une feuille

Bonjour Benoit 🙂,

Je viens de m'apercevoir que je suis passé outre les "0" qui sont en tête de ta colonne "contrat".

Désolé, j'ai été trop empressé sur la façon de faire, et pas assez sur le résultat.
Quand j'ai fait une copie de ta liste, et n'ai pas fait attention au "Format Texte".

J'ai rectifié le tir par une apostrophe forçant ce dernier dans la Feuille "RECEPTION".

Mais on peut choisir de modifier préalablement celui des cellules réceptrices.
De la même façon revoir l'alignement et les diverses mises en forme de celles-ci.

Si tu t'es aperçu de mon erreur, bravo pour ta politesse de ne l'avoir pas soulignée.

Amicalement, et restant disponible pour aller plus loin comme tu le souhaiteras.

Yann
 

Pièces jointes

Dernière édition:
Re : Retour de tous les éléments d'une Listview dans une feuille

Bonjour YANN-56, le Forum,

Merci d'avoir soumis un deuxième fichier avec le code corrigé... Effectivement, j'avais noté "ton oubli" mais en bidouillant dans le code si gentiment donnée, j'étais arrivé à quelque chose du genre mais de façon beaucoup moins élégante...

Merci d'avoir fait un suivi, c'est très chic de ta part....

Benoit Lord
 
- 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
4
Affichages
735
Réponses
15
Affichages
791
Réponses
5
Affichages
915
Réponses
3
Affichages
923
Réponses
8
Affichages
785
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…