IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Donner des titres aux colonnes de ma listbox [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut Donner des titres aux colonnes de ma listbox
    Bonjour,

    je souhaites donner des titres aux colonnes de ma listbox. A priori, c'est très facile de le faire à partir d'un contenu de cellules d'une feuille. Mais, en ce qui me concerne, mes titres se trouvent dans une chaine de caractères. J'ai essayé ces deux solutions, mais sans succès.
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim colName As String = "A;B;C;D"
    listBox.RowSource = Split(colName, ";")
    J'ai ce message d'erreur :
    Incompatibilité de types
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim colName As String = "A;B;C;D"
    listBox.RowSource = colName
    Et dans ce cas j'ai ce message :
    Impossibilité de définir la proprité rowSource. Valeur de propriété non valide.

    Il existe bien une propriété rowSourceType mais qui ne fonctionnerait que pour Access.


    Comment je peux résoudre mon problème ?

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272

  3. #3
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    Le tutoriel ne donne pas de méthode pour donner des noms aux colonnes. La source de mes données ne provient pas d'une feuille de calcul.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 946
    Points : 28 946
    Points
    28 946
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La seule façon d'avoir automatiquement les étiquettes de colonnes d'une liste de données est l'utilisation de la propriété RowSource donc d'une source provenant d'une liste contenue dans une feuille excel.
    Dans le cas contraire il faut les construire à l'aide par exemple de contrôles Label

  5. #5
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    Ah mince Ca ne m'arrange pas.
    Néanmoins, je viens de découvrir le ListView, et je crois que cela pourra me rendre service. Je regarde en détail et je vous dis ce qu'il en est.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 946
    Points : 28 946
    Points
    28 946
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Effectivement le contrôle ListView permet de créer des "Headers".
    A lire Utiliser le contrôle ListView en VBA Excel

  7. #7
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    J'ai donc utilisé le ListView. Il est un peu plus dur que le ListBox à manipuler, mais au moins j'ai pu créer mes entêtes.
    Problème résolu

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Points : 412
    Points
    412
    Par défaut
    Bonjour,

    Effectivement, le ListView est plus complexe parce que c'est un contrôle largement plus puissant... On peut facilement gérer les colonnes, filtrer , déplacer les items, changer la police et la couleur des items/subitems, utiliser des icones, etc...

    Depuis que j'y ai goûté, j'ai du mal à retourner aux ListBox même pour des petites listes... Pour moi le vrai avantage de la ListBox est sa réactivité au clic... La ListView va nécessiter d'écrire soi-même l'événement MouseDown, par exemple.

    Sans compter que, d'après ma propre expérience, il y a peut-être plus simple, mais les ListView utilisent des coordonnées en Pixels, Inches et OLE_Pixels... le tout mélangé !!

  9. #9
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    Effectivement le ListView a répondu a mon problème. La question que je pose maintenant est la suivante : si un autre utilisateur ouvre le classeur, pourra-t-il utiliser la macro ? Car rien ne me dit que Excel installé sur sa machine possède l'objet ListView. Ou alors est-il installé avec le pack Excel ? Ou même enregistré dans le classeur ?

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 946
    Points : 28 946
    Points
    28 946
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La question que je pose maintenant est la suivante : si un autre utilisateur ouvre le classeur, pourra-t-il utiliser la macro ? Car rien ne me dit que Excel installé sur sa machine possède l'objet ListView
    C'est le problème que j'ai rencontré chez un client où j'avais installé une application utilisant le contrôle ListView que j'avais développée sur trois PC (même version de windows, d'office, etc.) et bien j'ai galéré sur un des PC.
    Très sincèrement j'essaye autant que possible d'éviter les contrôles non standard. Même Microsoft Calendar Contrôle xx.x m'a posé souvent des soucis.
    Je suis très enthousiaste mais j'évite les aventures qui font perdre beaucoup de temps et d'argent parce-qu'évidemment le client n'est en aucun cas responsable.

  11. #11
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Auteur Voir le message
    La question que je pose maintenant est la suivante : si un autre utilisateur ouvre le classeur, pourra-t-il utiliser la macro ? Car rien ne me dit que Excel installé sur sa machine possède l'objet ListView. Ou alors est-il installé avec le pack Excel ? Ou même enregistré dans le classeur ?
    Très bonnes questions. Tout d'abord le ListView qui est directement utilisable avec Office est un contrôle ActiveX de VB (vb6). (Il y a aussi a un équivalent en .net). Ce n'est donc pas normalement un contrôle Office. L'autre problème, c'est que le ListView de VB6 est un vieux contrôle 32 bits et n'est pas compatible avec les nersions 64 bits d'Office qui sont disponibles depuis Office 2010. Avec un Office 2010 à 32 bits, le Listview est théoriquement utilisable, mais ne l'est pas avec un Office 2010 à 64 bits.

    Également, j'ai souvenance qu'à l'époque où j'utilisais VB6, Microsoft avait restreint la diffusion de ListView à des tiers seulement à l'intérieur d'un programme compilé. Donc, pour utiliser ListView avec Excel, il fallait que VB6 soit installé sur la machine.

    Théoriquement, on pourrait utiliser un ListView .net avec Office, mais cela demande certaines "acrobaties". Si cette avenue t'intéresses, tu pourrais faire une recherche pour Vernié sur MSDN. Éric Vernié de Microsoft France a déjà produit un article à ce sujet. Mais, je ne sais pas, s'il est toujours disponible sur le site de Microsoft.

    P.S. Pour Philippe. J'ai commencé à écrire ma réponse avant l'arrivée de la tienne. Heureusement, elles ne sont pas pareilles.

  12. #12
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    L'application sera utilisée en interne. Nous avons, normalement (), tous la même version de Excel. Après il faudra peut-être que je vérifie la version des composants non standard (DTPicker, ProgressBar et ListView) que j'ai utilisés pour être sûr que l'application fonctionnera sans problème assez longtemps.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre des titres au colonnes de la listbox
    Par Khalid89 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/04/2013, 19h22
  2. JTable impossible de mettre des titres de colonnes !
    Par isma92 dans le forum Composants
    Réponses: 3
    Dernier message: 20/12/2007, 20h46
  3. Réponses: 1
    Dernier message: 12/12/2006, 17h36
  4. [Debug]Donner des noms aux thread lors du débugage
    Par jeje99 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/12/2005, 16h49
  5. Des libellés aux colonnes
    Par szdavid dans le forum Oracle
    Réponses: 4
    Dernier message: 29/06/2005, 12h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo