Remplissage Listview, galère et hasard..

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

Calvus

XLDnaute Barbatruc
Bonjour le forum,

J'ai un fichier avec un Userform comprenant une Listview, fonctionnant correctement. J'avoue que je ne comprends pas tout à fait ce code, du moins ses subtilités, mais par tâtonnement, j'ai réussi à obtenir le résultat souhaité.

J'ai donc créé un autre Userform, avec Listview sur lequel j'ai repris le 1er code. (Strictement identique mis à part le nombre de colonnes)
Je n'arrive à initialiser que 4 colonnes sur 5 voulues, et je suis obligé (comme dans le 1er code) d'ajouter une colonne dans la feuille Excel pour obtenir les clés. (colonne U )

La feuille comprend le tableau que je souhaite reproduire sur ma Listview, avec les entêtes.

Par ailleurs, j'ai un problème de format pour les colonnes 2 et 4.
La colonne 5 ne s'affiche pas du tout.

Merci de l'aide que vous m'apporterez.
 

Pièces jointes

Bonjour Bebere,

Merci pour cet exemple.
Ça m'a l'air plus simple, ça plairait beaucoup à Si, et surtout je peux supprimer les données de la colonne U de mon fichier original.
J'avais laissé tomber l'option du tableau à cause d'une autre macro qui me posait problème avec cette zone. Je n'avais pas réussi à obtenir ce que je souhaitais. Il va donc me falloir réexaminer ce point.

Il n'est pas difficile de comprendre que si tu n'en veux pas, il ne faut pas la mettre !!!!!
J'avais mal lu hier...
Le problème mon cher, est que si je ne mets pas la colonne 6, les données de la colonne 5 ne s'affichent pas !!
Comment, pourquoi ?, je n'en sais rien. Pas plus que le fait que je supprime la données de la colonne U fait que ça plante.
Or vos codes fonctionnent dans le fichier exemple. Je suppose alors qu'il doit y avoir un lien dans ces 2 erreurs, mais je ne trouve pas. Alors je radote certainement, mais il y a bien quelque chose qui pose problème entre les colonnes U et Z. Cf posts 1, 3 et 10.

Bonne journée à vous.
 
Re
J'avais mal lu hier...
Le problème mon cher, est que si je ne mets pas la colonne 6, les données de la colonne 5 ne s'affichent pas !!
Comment, pourquoi ?, je n'en sais rien. Pas plus que le fait que je supprime la données de la colonne U fait que ça plante.
Or vos codes fonctionnent dans le fichier exemple. Je suppose alors qu'il doit y avoir un lien dans ces 2 erreurs, mais je ne trouve pas. Alors je radote certainement, mais il y a bien quelque chose qui pose problème entre les colonnes U et Z. Cf posts 1, 3 et 10.

Sans la colonne U donc avec 5 colonnes (5 titres), ce code issu du tien, cela devrait passer
VB:
Private Sub UserForm_Initialize()
Dim L As Long, tablo
    ListView1.ListItems.Clear
    With ListView1.ColumnHeaders
        .Clear
        .Add , , Sheets("Rdv").Range("V4").Value, 100
        .Add , , Sheets("Rdv").Range("W4").Value, 80, lvwColumnCenter
        .Add , , Sheets("Rdv").Range("X4").Value, 50, lvwColumnCenter
        .Add , , Sheets("Rdv").Range("Y4").Value, 50, lvwColumnCenter
        .Add , , Sheets("Rdv").Range("Z4").Value, 108, lvwColumnCenter
    End With
    tablo = Sheets("Rdv").Range("v4").CurrentRegion
  
    For L = 2 To UBound(tablo, 1)
        ListView1.ListItems.Add , , tablo(L, 1)
        ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , Format(tablo(L, 2), "dd/mm/yyyy")
        ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , Format(tablo(L, 3), "hh:mm")
        ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , Format(tablo(L, 4), "hh:mm")
        ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , tablo(L, 2)
    Next
    ListView1.View = lvwReport
    ListView1.Gridlines = True
    ListView1.FullRowSelect = True
    ListView1.Width = 398    '100+80+50+50+108+10
End Sub

Ça m'a l'air plus simple, ça plairait beaucoup à Si,

Avec mon tableau (et quelques remarques mais sans dolicrâne)

VB:
Private Sub UserForm_Initialize()
    Dim L As Long
    With ListView1
        .Width = 420    'somme des largeurs de colonne + 10
        For L = 1 To [Tb].Rows.Count
            If L < 6 Then .ColumnHeaders.Add , , [Tb].Item(0, L), Array(100, 80, 80, 50, 100)(L - 1)
            .ListItems.Add , , [Tb].Item(L, 1)
            .ListItems(L).ListSubItems.Add , , [Tb].Item(L, 2)
            .ListItems(L).ListSubItems.Add , , Format([Tb].Item(L, 3), "hh:mm")
            .ListItems(L).ListSubItems.Add , , Format([Tb].Item(L, 4), "hh:mm:ss")
            .ListItems(L).ListSubItems.Add , , [Tb].Item(L, 5)
        Next
        .View = 3: .Gridlines = 1: .FullRowSelect = 1
    End With
End Sub
 

Pièces jointes

Bonjour Phlaurent, Bebere, Si, le forum,

@Si : Ton dernier code fonctionne bien, comme celui de Bebere. Ce sont d'ailleurs les seuls qui me permettent de supprimer la colonne U inutile.
Aucun autre ne me le permet, pour cette raison toujours aussi floue...

Merci donc de votre aide, et problème résolu, mis à part la frustration de ne pas comprendre ce qui cloche avec les autres codes que vous m'avez envoyés. (je rappelle et précise qu'ils fonctionnent tous dans le fichier exemple mais pas dans l'original)

Bon weekend à tous.
 
Re,
Evidemment, tu m'avais compris. Je l'ai écrit 10 fois dans ce post. Ce sont bien les données que je supprime. Pas neuneu au point de confondre les colonnes U, V avec A ou Z ! 😉😛

Petite précision, pour faire mon exemple, j'ai copié collé la structure et les données de mon fichier original. Je ne comprends donc vraiment pas ce qui coince... Bizarre...
 
bonjour Si..., calvus, bebere et le forum
voici une autre version du remplissage de la listview
Code:
Option Explicit
Private Sub UserForm_Initialize()
Dim Li As Long
Dim C, J As Variant
Dim x As Integer
With ListView1
.ListItems.Clear
.View = lvwReport: .FullRowSelect = True: .Gridlines = True
With .ColumnHeaders
        .Add , , Sheets("Rdv").Range("V4").Value, 100
        .Add , , Sheets("Rdv").Range("W4").Value, 80, lvwColumnCenter
        .Add , , Sheets("Rdv").Range("X4").Value, 50, lvwColumnCenter
        .Add , , Sheets("Rdv").Range("Y4").Value, 50, lvwColumnCenter
        .Add , , Sheets("Rdv").Range("Z4").Value, 108, lvwColumnCenter

End With: End With
With Sheets("Rdv")
For Each C In .Range("v4", .Cells(Rows.Count, "v").End(xlUp))
x = x + 1
ListView1.ListItems.Add , , C
For J = 1 To 10
ListView1.ListItems(x).ListSubItems.Add , , C.Offset(0, J)
Next J: Next C
End With
End Sub
 

Pièces jointes

re

revoir les heures et durées

durée à revoir dans la liste
upload_2017-2-12_11-56-5.png
 
Bonjour à tous,

@Si
For L = 2 To UBound(tablo, 1)
ListView1.ListItems.Add , , tablo(L, 1)
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , Format(tablo(L, 2), "dd/mm/yyyy")
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , Format(tablo(L, 3), "hh:mm")
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , Format(tablo(L, 4), "hh:mm")
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , tablo(L, 2)
L'erreur provenait de la dernière ligne de ton code, tablo(L,2) au lieu de tablo(L,5).

Ça semble fonctionner maintenant.

@grisan29 , merci pour ta proposition.

@Lone-wolf , toujours là pour les pitreries ! 😉 😛

Merci et à bientôt.
 
Re

Bravo Calvus 😀, ta pugnacité t’a permis de vaincre le mauvais œil et de gagner la Guerre des Étoiles. Merci pour ta Parfaite Lumière* qui me sort du côté obscure dans lequel je tâtonnais avec ma canne blanche**😎.

*dans le roman de Yoshikawa, le héro,s genre d'Artagnan, utilise non pas une épée mais un sabre en bois (plus terne qu'un laser lumineux), pour provoquer de nombreux casse-têtes (pas chinois mais japonais) 😉.

**L-w, je ne deviens borgne que lorsque je jette un œil 😛.
 
- 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
Réponses
20
Affichages
4 K
RaVenSs
R
X
  • Question Question
Réponses
4
Affichages
2 K
Xplor
X
M
Réponses
3
Affichages
1 K
MarieChérie
M
Réponses
7
Affichages
1 K
Réponses
0
Affichages
1 K
H
  • Question Question
Réponses
16
Affichages
5 K
harissa555
H
F
Réponses
8
Affichages
2 K
F
J
Réponses
16
Affichages
3 K
A
Réponses
3
Affichages
1 K
AlicePrince
A
Y
Réponses
2
Affichages
1 K
ynx69
Y
Retour