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 :

Listbox1 afficher les entêtes de colonnes [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut Listbox1 afficher les entêtes de colonnes
    Bonjour,



    J'ai ce code qui fonctionne à merveille, aujourd'hui, j'essaie d'afficher les entête de colonnes

    J'ai modifié la propriété ColumnHeads à True et les entêtes deviennent visibles

    Comment les remplir via le tableau ci-dessous ?

    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim entetes() As Variant
        entetes = Array("En-tête de colonne 1", "En-tête de colonne 2", "En-tête de colonne 3", _
                        "En-tête de colonne 4", "En-tête de colonne 5", "En-tête de colonne 6", _
                        "En-tête de colonne 7", "En-tête de colonne 8", "En-tête de colonne 9", _
                        "En-tête de colonne 10")
    Tout le code

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    Option Explicit
    Dim f, f2, BD(), choix(), rng, Ncol, NcolInt, colVisu(), colInterro(), Decal
    Dim Ligne_Data_LOOK As String
    Private Sub UserForm_Initialize()
    Dim LargeurCol()
    Dim col As Variant
    Dim i As Variant
    Dim k As Variant
    Dim c As Variant
    Dim Date_maj As Date
    Dim Cmde_Ext As Variant
        'Centrer userform sur le fichier excel et non sur l'écran
        'Régler StartUpPosition 0-Manual
        Me.Left = Application.Left + Application.Width / 2 - Me.Width / 2 'Pour centrer sur l'application Application.Left + Application.Width / 2 - Me.Width / 2
        Me.Top = Application.Top + 50 'Application.Height / 2 - Me.Height / 2 'Pour centrer sur l'application Application.Top + Application.Height / 2 - Me.Height / 2
        'TextBox1 est une ComboBox pour éviter de remplacer le texte dans toutes les macros
    '    Importer.Importation_Fournisseurs 'Actualisation des data
        On Error Resume Next 'si la liste est vide
        Set f = ThisWorkbook.Sheets("Data_Fournisseurs")
        Me.TextBox1.List = f.Range("TS_Data_Fournisseurs") 'Minimum 4 colonnes dans le tableau
        Set rng = f.Range("TS_Data_Fournisseurs") 'Minimum 4 colonnes dans le tableau
        Me.ListBox1.ColumnCount = 10 'Minimum 4 colonnes dans le tableau
        colVisu = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 'Numéros des colonnes à afficher
        LargeurCol = Array(0, 0, 0, 80, 80, 80, 80, 180, 150, 200) 'largeur des colonnes, 0 pour masquer l'ID et l'adresse de la ligne Data
        Me.ListBox1.ColumnWidths = Join(LargeurCol, ";")
     
     
        Dim entetes() As Variant
        entetes = Array("En-tête de colonne 1", "En-tête de colonne 2", "En-tête de colonne 3", _
                        "En-tête de colonne 4", "En-tête de colonne 5", "En-tête de colonne 6", _
                        "En-tête de colonne 7", "En-tête de colonne 8", "En-tête de colonne 9", _
                        "En-tête de colonne 10")
     
     
     
     
     
        colInterro = Array(3) 'Numéro de la colonne dans laquelle rechercher
        Decal = rng.Row - 1 'Début de la base de donnée
        BD = rng.Value
        col = UBound(BD, 2): For i = LBound(BD) To UBound(BD): BD(i, col) = i + Decal: Next i 'no enreg
        NcolInt = UBound(colInterro) + 1
        Ncol = UBound(colVisu) + 1 'ReDim ancien(1 To 1, 1 To Ncol)
        'Génération de choix()
        ReDim choix(1 To UBound(BD))
        col = UBound(BD, 2)
        For i = LBound(BD) To UBound(BD)
            For Each k In colInterro
                choix(i) = choix(i) & BD(i, k) & "|"
            Next k
            choix(i) = choix(i) & BD(i, col) & "|" 'no enreg
        Next i
            'TriS choix, 1, UBound(choix) 'Ne pas trier les dates sont triées dans LOOK
            'Valeurs initiales dans ListBox
            Dim tbl(): ReDim tbl(1 To UBound(BD), 1 To Ncol + 1)
            For i = 1 To UBound(BD)
            c = 0
                For Each k In colVisu
                    c = c + 1: tbl(i, c) = BD(i, k)
                Next k
            c = c + 1: tbl(i, c) = i + Decal
        Next i
        Me.ListBox1.List = tbl
        Me.ListBox1.ListIndex = -1
        Me.TextBox1.SetFocus 'Placer le curseur dans la recherche
        Cmde_Ext = Sheets("Suivi").Cells(ActiveCell.Row, Range("TS_Suivi" & "[Cmde]").Column).Value & " " & Sheets("Suivi").Cells(ActiveCell.Row, Range("TS_Suivi" & "[Ext]").Column).Value
        If Cells(Range("TS_Suivi" & "[Cmde]").ListObject.HeaderRowRange.Row, ActiveCell.Column).Value = "Colisage" Then
            TextBox1 = Cmde_Ext & " prépa"
        Else
            TextBox1 = Cmde_Ext
        End If
    End Sub
    Private Sub TextBox1_Change()
    Dim Mots, tbl, i, A, j, k, kk, xx As Variant
        Mots = Split(Trim(Me.TextBox1), " ")
        tbl = choix
        For i = LBound(Mots) To UBound(Mots)
            tbl = Filter(tbl, Mots(i), True, vbTextCompare)
        Next i
        If UBound(tbl) > -1 Then
            Dim b(): ReDim b(1 To UBound(tbl) + 1, 1 To Ncol + 1)
            For i = LBound(tbl) To UBound(tbl)
                A = Split(tbl(i), "|")
                j = A(NcolInt) - 1 - Decal + 1
                For k = 1 To Ncol
                    kk = colVisu(k - 1)
                    xx = UBound(BD)
                    b(i + 1, k) = BD(j, kk)
                Next k
                b(i + 1, k) = j + 1
            Next i
            Me.ListBox1.List = b
        Else
            Me.ListBox1.Clear
        End If
        Me.Label_Nombre_trouve.Caption = "Trouvé : " & UBound(tbl) + 1
        Me.TextBox_Cmde = ""
        Me.TextBox_Info_1 = ""
        Me.TextBox_Delai_Souhaite = ""
        Me.TextBox_Designation = ""
    End Sub


    Nom : 11.png
Affichages : 367
Taille : 41,9 Ko

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    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 : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La propriété ColumnHeads ne fonctionne que combinée à la propriété RowSource .
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 247
    Par défaut
    Hello,
    comme le rappelle notre ami Philippe, les entêtes des colonnes des listbox sont remplis à partir de la propriété Rowsource ce qui signifie que les textes des entêtes de colonnes doivent se trouver dans une feuille dans une plage de données. Sinon il y a la listview qui peut remplacer la listbox qui permet plus de choses. Voir cette discussion où il y a un exemple qui remplit les entêtes de colonnes.

    Ami calmant, J.P

  4. #4
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    Je vous remercie pour ces précieuses informations qui m'ont évité de longue recherche

    J'ai ajouté des Label en dessus de chaque colonne
    Bonne semaine

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/11/2006, 10h57
  2. [Etat] Afficher les données en colonnes
    Par jawed dans le forum IHM
    Réponses: 11
    Dernier message: 06/05/2006, 19h43
  3. [WD10] Afficher les noms des colonnes
    Par devalender dans le forum WinDev
    Réponses: 4
    Dernier message: 24/02/2006, 14h38
  4. [JTable] Ne pas afficher les entêtes de colonnes
    Par nicolas.pied dans le forum Composants
    Réponses: 2
    Dernier message: 27/01/2006, 11h22
  5. Réponses: 2
    Dernier message: 21/09/2005, 12h18

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