IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 15 fois
Vote des utilisateurs
2 
0 
Détails
Licence : ActiveState Community
Mise en ligne le 1er mai 2026
Plate-forme : Windows
Langue : Français
Référencé dans
Navigation

VBA Excel, chargement des données de la feuille de calcul dans un contrôle ListView

Exemple de code qui charge les données d'une plage de cellules dans un contrôle ListView
Le code tente d'analyser le type de données de chaque colonne, les affiche dans le ListView en les formattant pour faciliter les tris
possibilité de trier les données du Listview en cliquant sur les titres de colonnes
Liste déroulante permettant de charger les données de 2 listes exemples à titre de démonstration
Avatar de mromain
Membre confirmé https://www.developpez.com
Le 30/04/2026 à 8:51
Bonjour tototiti, curt, deedolith,

@tototiti : c'est top ! Je me garde ton fichier au chaud

Bonjour,

Merci
J'ai essayé (en rendant le contrôle invisible) mais il y a un bug avec les ListViews : si on joue avec leur affichage, ils réapparaissent tout en haut à gauche du Userform (pas là où ils étaient placés au départ)
Donc j'ai laissé tomber...
En mettant un point d'arrêt au niveau du End Sub de la procédure InitListView, je me suis aperçu que si on déplace le userform, la listview se "repositionne bien".

Du coup, j'ai modifié la procédure InitListView ainsi pour geler l'affichage comme le proposait @deedolith :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub InitListView(Plage As Range, LV As MSComctlLib.ListView)
Dim ListTypes() As TypCol, i As Long
'L'analyse des types de données se fait sur base des données de la 1ère ligne de données
'Sous la 1ère ligne de titre
Dim ctrl As MSForms.Control

    For Each ctrl In LV.Parent.Controls
        If ctrl Is LV Then Exit For
    Next ctrl
    ctrl.Visible = False

    ReDim ListTypes(1 To Plage.Columns.Count)
    For i = 1 To Plage.Columns.Count
        If Plage.Rows.Count > 1 Then
            ListTypes(i) = AnalyseTypeCel(Plage.Cells(2, i))
        Else
            ListTypes(i) = TypCol.EstTexte
        End If
    Next i
    RetraiteDonnees Plage.Value, ListTypes, LV

    ctrl.Visible = True
    LV.Parent.Top = LV.Parent.Top + 1
    LV.Parent.Top = LV.Parent.Top - 1
End Sub
En tout cas, belle contribution !

Bonne journée
Avatar de curt
Membre émérite https://www.developpez.com
Le 24/02/2026 à 16:26
Bonjour tototiti2008,

Jolie contribution. Je pense l'adapter pour que ça puisse prendre les différents tableaux dans toutes les feuilles.
Bravo - Beau travail
Avatar de tototiti2008
Membre expérimenté https://www.developpez.com
Le 24/02/2026 à 16:31
Merci de ton intérêt ,

A cause du retraitement des données dans le listview pour que les tris fonctionnent, j'ai peur que ce soit un peu lent sur les grandes listes
A voir à l'usage
Avatar de deedolith
Membre chevronné https://www.developpez.com
Le 05/03/2026 à 17:03
Hello,

Intéressant !
Par contre, le redimensionnement automatique des colonnes est très moche.
Geler l'affichage pendant cette opération ?
Avatar de tototiti2008
Membre expérimenté https://www.developpez.com
Le 05/03/2026 à 21:07
Bonjour,

Merci
J'ai essayé (en rendant le contrôle invisible) mais il y a un bug avec les ListViews : si on joue avec leur affichage, ils réapparaissent tout en haut à gauche du Userform (pas là où ils étaient placés au départ)
Donc j'ai laissé tomber...
Avatar de tototiti2008
Membre expérimenté https://www.developpez.com
Le 01/05/2026 à 18:05
Bonjour,

merci

J'ai intégré ta modification à la version téléchargeable
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.