Equivalent listview pour Excel 64bits

joomy78

XLDnaute Nouveau
Bonsoir à tous,
je souhaite réaliser une application excel dont l'interface graphique sera un formulaire userform VBA.
Pour afficher les données issues de divers sources (SGBD ou feuille de calcul) j'ai étudié l'objet listview qui correspondrait à mon besoin.
Cependant, il me semble que cet objet est en fin de vie, vu qu'il n'est plus supporté par les versions d'Excel 64 bits (via mscomctl.ocx)

Existe t'-il un successeur au listview?

la fonction principale pour moi, outre le fait qu'elle puisse être alimentée de différentes manières, c'est le tri par clic sur entête de colonne.

merci
cordialement
 

Dranreb

XLDnaute Barbatruc
Re : Equivalent listview pour Excel 64bits

Bonsoir.

J'ai bien peur que le successeur de la ListView sera une mosaïque de Label créés dynamiquement dans une Frame, le tout géré par deux modules de classe qui déchargeront le programmeur de leur gestion. L'idée de créer ça me trotte dans la tête depuis environ une semaine.
 

joomy78

XLDnaute Nouveau
Re : Equivalent listview pour Excel 64bits

salut à tous.
les modules de classe? je viens de regarder ce que c'est, je ne connaissais pas jusque la.
un module de classe de labels ou textbox, pourquoi pas.
je demande à voir, je ne sais pas comment aborder le sujet pour que leur quantité soit dynamique.
sinon, c'est vrai que l'affichage directement dans la feuille est tentant, mais je trouve ça moins "chic"
 
Dernière modification par un modérateur:

Dranreb

XLDnaute Barbatruc
Re : Equivalent listview pour Excel 64bits

Bonjour.
La difficulté n'est pas tant de créer dynamiquement des labels dans un cadre, encore qu'une inconnue subsiste quand au nombre qui pourra ainsi être supporté. La difficulté serait plutôt un problème de spécification.
Imaginons que vous ayez un UseForm commençant comme ça:
VB:
Option Explicit
Dim WithEvents Lvw As CadreListe
Private Sub UserForm_Initialize()
Set Lvw = New CadreListe
Lvw.Init Me.Frame1
Lvw.?…
Qu'aimeriez vous pouvoir mettre à partir de ?… pour pouvoir définir une foule de choses aussi variées et nombreuses que:
La hauteur des labels, la couleur de la bordure, la hauteur d'un interstice entre deux lignes, pour chaque Label composant une ligne quelconque: sa largeur, un interstice vertical qui le précède, sa couleur, son alignement, un format d'affichage de la donnée. En combien de lignes de code faut il spécifier tout ça et au moyen de quelles méthodes aux noms clairs à définir ?
Une fois que tout ça sera noté dans l'objet, l'ensemble des données seront par la suite vraisemblablement affectés à une propriété List sous forme d'un tableau d'éléments de type Variant.
J'étudierai attentivement toutes vos propositions, mais je pense qu'il faut sortir du cadre des méthodes et propriétés de ListView existantes et essayer de faire quelque chose de plus pratique. Ce qui n'empêchera pas d'essayer par la suite de les rajouter pour avoir un truc avec peu d'adaptations à faire pour des UserForm contenant déjà des ListView, mais je ne souhaite pas commencer par ça.
 

Dranreb

XLDnaute Barbatruc
Re : Equivalent listview pour Excel 64bits

Bonjour.

J'ai un peu avancé dans mon projet. Malheureusement la création de plus d'environ 500 Label prend un temps rédhibitoire.
J'ai essayé de n'en définir que le nombre strictement nécessaire à l'affichage, mais là, impossible de gérer le Scroll convenablement. J'ignore s'il vaut mieux poursuivre la recherche dans cette voie à l'aide d'une ScrollBar externe ou plutôt revenir en arrière en imposant des nombres maxi utilisables de lignes et de colonnes extrêmement bas.
Sinon j'ai trouvé un moyen simple de spécifier à la fois les formats et les alignements, et de déduire les positionnements horizontaux des Label de ceux de contrôles, faisant office de titres, dessinés au dessus de la Frame.
 

Statistiques des forums

Discussions
312 296
Messages
2 086 962
Membres
103 409
dernier inscrit
Dave56