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 :

Récupérer les noms de colonnes d'une listbox [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif Avatar de Denis la Malice
    Homme Profil pro
    FabManager
    Inscrit en
    Février 2013
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : FabManager
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2013
    Messages : 133
    Points : 287
    Points
    287
    Par défaut Récupérer les noms de colonnes d'une listbox
    Bonjour,
    j'ai un formulaire contenant une ListBox multi-colonnes que j'appelle depuis plusieurs procédures ayant des méthodes d'alimentation différentes (RowSource ou AddItem), nombre de colonnes et tailles différents.
    En fin d'affichage du formulaire (on clique sur le bouton OK) je sais récupérer le nombre de colonnes, la sélection, la colonne renvoyée, la colonne affichée, le nombre de lignes, le contenu de chaque ligne et de chaque colonne mais pas les entêtes de colonne. Y a-t-il une propriété de la ListBox qui contienne les noms des colonnes ?
    ListBox1.Column(i).Name ne fonctionne pas.
    De la réflexion, naît l'action ...

  2. #2
    Membre confirmé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Points : 520
    Points
    520
    Par défaut
    bonjour denis
    j'ai ce code qui permet a partir du choix de la feuille dans une combobox d'afficher des entêtes aux colonnes de la listbox, mais autrement je ne sais pas si cela est possible sans passer par une listview
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub UserForm_Initialize()
        For Each Ws In ThisWorkbook.Worksheets
            If Ws.Name <> "ACCUEIL" Then ComboBox1.AddItem Ws.Name
        Next
        With ListBox1
            .ColumnCount = 9
            .ColumnHeads = True
            .ColumnWidths = "20;230;30;30;30;40;40;30;20" 'à regler
            '.Width = 30 + 180 + 30 + 10 + 10 + 40 + 40 + 20
     
        End With
        End Sub
    Private Sub ComboBox1_Change()
      Dim Dl As Long
      Dim Ws As Worksheet
      If ComboBox1 = "" Then Exit Sub
      Set Ws = Sheets(ComboBox1.Text)
      Me.Caption = "Travail dans la feuille " & Ws.Name
      Dl = Ws.Cells(Rows.Count, "A").End(xlUp).Row
      ListBox1.RowSource = Ws.Name & "!A2:I" & Dl
    End Sub
    Pascal

    re
    ou alors a partir d'un appel dans ton code tu mets dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub essai()
    UserForm1.ListBox1.RowSource = ActiveSheet.Name & "!" & Range("A2:L240").Address
     
    End Sub
    tu peut remplacer
    ActiveSheet.Name
    par le nom de la feuille active

    Pascal

  3. #3
    Membre actif Avatar de Denis la Malice
    Homme Profil pro
    FabManager
    Inscrit en
    Février 2013
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : FabManager
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2013
    Messages : 133
    Points : 287
    Points
    287
    Par défaut La solution
    Bonjour,
    quand la listbox est alimentée par RowSource le paramètre ColumnHeads permet d'afficher ou nom les entêtes de colonne. Pour retrouver l'entête il faut récupérer le contenu de rowsource et lire la ligne précédente.
    Quand on alimente avec un recordset, les entêtes sont correctement renseignées mais je ne sais pas récupérer ces entêtes à la validation du formulaire.
    En alimentant avec des AddItem, je ne sais même pas remplir les entêtes.

    J'ai donc trouvé l'astuce suivante :
    - Je n'affiche jamais les entêtes (ColumnHeads=False)
    - Je renseigne l'item 0 avec les libellés de l'entête
    - J'ajoute du code (ma ListBox s'appelle Liste) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Liste_Change()
        If Me.Liste.Selected(0) Then Me.Liste.Selected(0) = False
    End Sub
    Comme on ne peut pas sélectionner la première ligne, elle se comporte comme une entête.
    A la validation du formulaire, mes entêtes sont dans l'élément 0.
    De la réflexion, naît l'action ...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/01/2010, 15h24
  2. Réponses: 0
    Dernier message: 11/01/2010, 11h31
  3. Réponses: 5
    Dernier message: 21/09/2009, 03h03
  4. [C#] Récupérer le nom des colonnes d'une datatable
    Par dai.kaioh dans le forum Accès aux données
    Réponses: 6
    Dernier message: 28/09/2006, 17h35
  5. [PostGreSQL] Récupérer les noms des colonnes
    Par Olivier14 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/02/2006, 18h51

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