Aide sur une listview

Bonjour le forum

j'ai trouvé ce petit fichier que je cherche vainement à personnaliser

N'étant un spécialiste de listview je coince

Je viens vers vous cherchez de l'aide

En vous remerciant par avance

5classeur1.zip (19.45 Ko)

Bonjour

Essayez comme ceci :

Private Sub UserForm_Initialize()
Dim rng As ListObject
Dim tablo
Dim ncol As Byte, k As Byte
Dim i As Integer, ligne As Integer

Set rng = ThisWorkbook.Sheets("Feuil3").ListObjects(1)
tablo = rng.DataBodyRange.Value
ncol = rng.ListColumns.Count

'ajout des denominations colonnes
With Me.ListView1
    With .ColumnHeaders
        .Add Text:="ID", Width:=60
        .Add Text:="Nom", Width:=60
        .Add Text:="Prénom", Width:=50
        .Add Text:="Age", Width:=50
        .Add Text:="Date", Width:=50
    End With
    .View = lvwReport 'Style d'affichage
    .FullRowSelect = True 'Selectionner une ligne possible avec colorisation
    .Sorted = True 'liste triée

' ajout des lignes
    ligne = 1
    For i = 1 To UBound(tablo)
        .ListItems.Add , , tablo(i, 1)
        For k = 2 To ncol
            .ListItems(ligne).ListSubItems.Add , , tablo(i, k)
        Next k
        ligne = ligne + 1
    Next i
End With
End Sub

Si ok et terminé, -->

Cordialement

Bonjour le forum

Bonjour Dan

J'ai oublié de préciser mon souhait

J'aimerais garder le fichier tel qu'il est

Mais en sélectionnant dans la combobox col (élément) nom

je rencontre un premier message type mismatch

et le deuxième en sélectionnant dans la combobox : col (élément) nom

j'aimerais afficher le nom de l'adhérent, et c'est là que je rencontre des soucis avec la méthode listview

que le maîtrise pas du tout

En remerciant par avance

Mais en sélectionnant dans la combobox col (élément) nom
je rencontre un premier message type mismatch

Ce que je vous ai proposé ne charge que la listview uniquement à l'ouverture de l'USF

Il faut ajouter les infos dans la combo bien entendu, vous n'aviez rien demandé
Déjà dans le code que je vous ai donné, rajoutez ceci juste avant le END SUB

Col.List = rng.ListColumns(2).DataBodyRange.Value

et le deuxième en sélectionnant dans la combobox : col (élément) nom
j'aimerais afficher le nom de l'adhérent, et c'est là que je rencontre des soucis avec la méthode listview

Je ne comprends pas trop pourquoi vous utilisez une listview pour afficher juste un nom. Si je comprends bien vous voulez faire un choix dans la combobox et n'afficher que le nom dans la listview. Juste ?

Question : est-ce que vous pouvez avoir des doublons de nom ou pas ?

Merci dan pour le temps consacré

C'est un gros fichier que j'aurai à traiter, j'ai beaucoup de colonnes et ce petit fichier permet de ne pas écrire beaucoup de code

et d'aller plus rapidement dans la zone à modifier

il semblerait que la listview est mieux que la listebox

dans les noms j'aurai des doublons parce qu'il y a aura des familles

Bonjour,

Au vu de votre fichier et de vos 2 derniers posts, voici ce que vous devez modifiez

1. Option Explicit, juste en dessous remplacez toutes les DIM par ceci :

Dim rng As ListObject

2. Code Initialize : remplacez-le par celui ci-dessous (désolé mais j'ai dû adapter... )

Private Sub UserForm_Initialize()
'ajout des denominations colonnes
With ListView1
    With .ColumnHeaders
        .Add Text:="ID", Width:=60
        .Add Text:="Nom", Width:=60
        .Add Text:="Prénom", Width:=50
        .Add Text:="Age", Width:=50
        .Add Text:="Date", Width:=50
    End With
    .Gridlines = True 'Affiche les lignes
    .View = lvwReport 'Style d'affichage
    .FullRowSelect = True 'Selectionner une ligne possible avec colorisation
    .Sorted = True 'liste triée
End With

'charger combobox col sans doublons
Dim c As Range
Dim tbltmp As Collection
Dim item

Set rng = ThisWorkbook.Sheets("Feuil3").ListObjects(1)
Set tbltmp = New Collection

On Error Resume Next
For Each c In rng.ListColumns(2).DataBodyRange
    tbltmp.Add c.Value, CStr(c.Value)
Next c
On Error GoTo 0

For Each item In tbltmp
    Col.AddItem item
Next item

Call ajout
End Sub

3. Code Ajout : Nouveau code à ajouter dans votre USF. Je vous suggère de le placer en dessous de tous les autres

Private Sub ajout()
Dim tablo
Dim ncol As Byte, k As Byte
Dim i As Integer, ligne As Integer

tablo = rng.DataBodyRange.Value
ncol = rng.ListColumns.Count
ListView1.ListItems.Clear

'ajout des lignes
With ListView1
    ligne = 1
    For i = 1 To UBound(tablo)
        .ListItems.Add , , tablo(i, 1)
        For k = 2 To ncol
            .ListItems(ligne).ListSubItems.Add , , tablo(i, k)
        Next k
        ligne = ligne + 1
    Next i
End With
End Sub

4. Private Sub Col_Click(): remplacez le par celui ci-dessous

Private Sub Col_Change()
Dim i As Integer

If Col.Value = vbNullString Then
    Call ajout
    Exit Sub
End If

Call ajout
With ListView1
    For i = .ListItems.Count To 1 Step -1
        If .ListItems(i).ListSubItems(1) <> Col.Value Then
            .ListItems.Remove (i)
        End If
    Next i
End With
End Sub

Faites un test de chargement USF et de choix dans la combobox col.
Le choix d'une valeur dans COL affichera uniquement les données correspondantes dans la listview
Si vous videz la combo COL, cela réaffiche toutes les données dans la listview

Le code Private Sub ListView1_Click() est à refaire également. Dites moi ce que vous voulez faire avec ce code

Bonjour le forum

Bonjour Dan

Ne pouvait répondre avant

Comme dit précédemment j'ai trouvé un petit fichier qui me répond à ce que j'aurai aimé faire

Toutefois, il a été réalisé avec une listbox et j'ai essayé de le passer sur une listview

et je ne parviens à trouver les méthodes de la listvies

Type SelectedItem etc

C'est la simplement mon problème par méconnaissance, je ne maîtrise pas la listview

J'ai appris que la listview était plus complète que la listbox j'ai voulu essayé

A partir des noms des colonnes on peut accéder à la partie que l'on veut modifier

je joins le fichier qui sera plus explicative

Un grand merci pour l'aide

Bonjour

C'est la simplement mon problème par méconnaissance, je ne maîtrise pas la listview

Vous me re-expliquez ce que vous avez déjà dit avant au sujet des listview....

Là avec votre dernier fichier on doit tout recommencer puisqu'il utilise une listbox.

Reprenez simplement le premier fichier que vous avez posté et qui reprend une listview comme vous voulez. Ensuite complétez-le en suivant pas à pas comme je vous ai expliqué dans mon dernier post.

Après on peut faire évoluer ensuite.

Rechercher des sujets similaires à "aide listview"