Remplissage Listview, galère et hasard..

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

  • Listview.xlsm
    17.8 KB · Affichages: 37

Calvus

XLDnaute Barbatruc
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.
 

Si...

XLDnaute Barbatruc
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

  • Listview 2.xlsm
    25.3 KB · Affichages: 33
  • Tableau Listview.xlsm
    45.8 KB · Affichages: 41

Calvus

XLDnaute Barbatruc
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.
 

Calvus

XLDnaute Barbatruc
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 ! ;):p

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...
 

grisan29

XLDnaute Accro
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

  • Copie de Listview 2.xlsm
    25 KB · Affichages: 34

Si...

XLDnaute Barbatruc
re

revoir les heures et durées

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

Calvus

XLDnaute Barbatruc
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 ! ;) :p

Merci et à bientôt.
 

Si...

XLDnaute Barbatruc
Re

Bravo Calvus :D, 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**:cool:.

*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 :p.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon