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 :

ColumnHead sur ListBox alimentée par AddItem [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 99
    Points : 67
    Points
    67
    Par défaut ColumnHead sur ListBox alimentée par AddItem
    Bonjour à tous, il semblerait d'après le tutoriel des Contrôles dans un Userform, que la propriété ColumnHead ne soit pas compatible avec la méthode AddItem.
    Seulement, existe-il une solution afin de pallier à ce problème ?
    Je m'explique : J'alimente ma listbox avec AddItem en prenant :
    Pour la colonne 1 de la listBox, la colonne A
    Pour la colonne 2 de la listBox, la colonne C
    Pour la colonne 3 de la listBox, la colonne AB
    ...

    Ainsi, les colonnes ne sont pas accolées, et je ne peux pas utiliser la méthode RowSource (enfin, il me semble ).

    Avez-vous une idée ? J'ai pensé à masquer les colonnes inutiles, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox.ColumnWidths = "7 cm;0 cm;2 cm;0 cm;0 cm;0 cm; ....; 2cm"
    mais c'est assez fouilli comme code je trouve, me proposez-vous mieux ?

    Ensuite, si j'effectue un tri alphabétique dans la ListBox, est-ce que mon titre sera affecté ou il restera toujours en en-tête ?

    Merci de votre aide ;-)

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Perso, je ne vois que 2 solutions
    • Jouer comme tu y a pensé sur les largeurs de colonnes
    • Recopier les colonnes utiles dans une feuille de service, éventuellement cachée.



    Je sens que cela ne t'aide pas trop.

    PGZ

  3. #3
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bsr, pgz, korleone,

    J'ai eu un problème comme le tien et j'ai laissé la listbox de côté au profit d'une "listview". Connais-tu ce contrôle de formulaire?

    Voici un très bon tuto sur la Listview :
    http://silkyroad.developpez.com/VBA/ListView/

    Je pense que c'est une piste intéressante à exploiter

    A+

  4. #4
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour Korleone pgz rvtoulon le forum
    un code pour une listview dans ton cas colonne A , C ,AB

    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
    22
    23
    24
    25
    26
    27
    28
    Option Explicit
    Private Sub UserForm_Initialize()
    Dim Lig As Long, derLig As Long, LigList As Long, l As String
       With ListView1
           With .ColumnHeaders
                 .Clear
                .Add , , "NOM", 110
                .Add , , "prenon", 100
                .Add , , "age", 100
           End With
          .Gridlines = True
           .FullRowSelect = True
          .HideColumnHeaders = False
          .LabelEdit = 1
       End With
             With Sheets(1)
                derLig = .Range("A" & Cells.Rows.Count).End(xlUp).Row
            If derLig < 2 Then derLig = 2
               LigList = 1
                     For Lig = 2 To derLig
                l = "L" & Lig
                 ListView1.ListItems.Add , l, .Range("A" & Lig).Value
                 ListView1.ListItems(LigList).ListSubItems.Add , , .Range("C" & Lig).Value
                ListView1.ListItems(LigList).ListSubItems.Add , , .Range("AB" & Lig).Value
                               LigList = LigList + 1
            Next Lig
        End With
     End Sub
    re, données en feuille 2 dans proprietées de ta listbox columncount =3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub UserForm_Initialize()
    Dim w As Long, x As Long, z As Long, Myarray()
      With Sheets("feuil2")
       z = Range("A65536").End(xlUp).Row
        ReDim Myarray(2, z)
        For w = 2 To z
          Myarray(0, x) = .Cells(w, 1)
          Myarray(1, x) = .Cells(w, 3)
          Myarray(2, x) = .Cells(w, 28)
           x = x + 1
        Next: End With
        ListBox1.Column() = Myarray
    End Sub
    une version un peu plus "propre"

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 99
    Points : 67
    Points
    67
    Par défaut
    Merci à vous tous pour l'aide, ça m'a bien servi.

    Effectivement, je ne connaissait pas le contrôle ListView, c'est très efficace !

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

Discussions similaires

  1. [XL-2007] petit test sur dates alimentées par variable tableau
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/02/2012, 11h21
  2. combobox alimenté par requête sur base access
    Par urbanspike dans le forum VB.NET
    Réponses: 1
    Dernier message: 04/06/2009, 21h11
  3. [AC-2000] Problem AddItem sur ListBox dans formulaire
    Par Filippo dans le forum IHM
    Réponses: 2
    Dernier message: 24/04/2009, 15h22
  4. [AJAX] Click sur select alimenté par ajax plante ie
    Par Pgs dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 08/04/2008, 10h45
  5. Réponses: 14
    Dernier message: 09/10/2007, 15h57

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