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 :

Listbox, Définir les colonnes a afficher


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    dessinateur CAO/DAO
    Inscrit en
    Juillet 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : dessinateur CAO/DAO

    Informations forums :
    Inscription : Juillet 2017
    Messages : 46
    Par défaut Listbox, Définir les colonnes a afficher
    Bonjour,

    Je souhaiterai pouvoir créer une listbox a partir de ma feuille "source", mais je ne souhaite pas avoir toutes mes colonnes.
    J'ai bien réussi avec une table intermédiaire mais c'est moche comme solution.

    Comment faire pour n'avoir que les colonnes A(1),B(2), J(10),AP(42),AQ(43),BB(54),BC(55)de la feuille "Source"

    Si vous aviez une piste, un lien vers un tutoriel ou la méthode cela serai super.

    Merci
    Bonne journée a tous

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    utiliser la fonction INDEX de feuille de calculs d'Excel comme dans cette discussion

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    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 114
    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 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je souhaiterai pouvoir créer une listbox a partir de ma feuille "source", mais je ne souhaite pas avoir toutes mes colonnes.
    La propriété ColumnCount précise le nombre de colonne à afficher et la propriété ColumnWidths définit la largeur de chaque colonne à afficher. Il suffit d'indiquer une valeur nulle (0) pour les colonnes à ne pas afficher.
    Petit exemple où la colonne 3 n'est pas affichée
    With Me.ListBox1
    .ColumnCount = 5 ' Nombre de colonnes affichées
    .ColumnWidths = "15;30;0;45;20" ' Largeur des colonnes
    End With
    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

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 969
    Par défaut
    bonjour
    un exemple pour alimenter ton listbox de trois colonnes des valeurs existant dans la feuille source (colonne A/B/C)
    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
    Private Sub UserForm_Initialize()
     Dim i As Long
     With Sheets("source")
     j = 0
     i = .Range("A" & Rows.Count).End(xlUp).Row
        For i = 2 To i
        UserForm1.ListBox1.ColumnCount = 3
        UserForm1.ListBox1.ColumnWidths = "20;20;20"
        UserForm1.ListBox1.AddItem
        UserForm1.ListBox1.Column(0, j) = .Cells(i, 1)
        UserForm1.ListBox1.Column(1, j) = .Cells(i, 2)
        UserForm1.ListBox1.Column(2, j) = .Cells(i, 3)
        j = j + 1
    Next i
    End With
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'Dernière ligne non vide colonne A
    derl = Range("A" & Rows.Count).End(xlUp).Row
            'Parcours la colonne 2 de la ligne 1 au nombre déterminé par la variable "derl"
                For Ligne = 1 To derl
                    'a chaque fois que la colonne 2 (B) sera non-vide
                    If Cells(Ligne, 2) <> "" Then
                    'Concaténation de deux champs dans le listbox (colonne 2 et 3 soit B et C)
                        ListBox1.AddItem Cells(Ligne, 2) & " " & Cells(Ligne, 3)
                    End If
                Next
    Cela te permet de reprendre plusieurs champs dans ta listbox mais surtout en choisissant ceux que tu veux.

    Les conditions se discutent, mais c'est souvent de cette façon que j'utilise cela.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Calcul la largeur des colonnes dans la ListBox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub UserForm_Initialize()
        Set f = Sheets("feuil1")
        ColVisu = Array(1, 2, 4, 7)          ' colonnes à visualiser
        BD = f.Range("A2:G" & f.[A65000].End(xlUp).Row).Value
        For i = 1 To UBound(BD, 2)
          largeur = 0
          If Not IsError(Application.Match(i, ColVisu, 0)) Then largeur = f.Columns(i).Width * 1#
          temp = temp & largeur & ";"
        Next
        Me.ListBox1.ColumnCount = UBound(BD, 2)
        Me.ListBox1.ColumnWidths = temp
        ListBox1.List = BD
    End Sub
    ou

    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
     
    Private Sub UserForm_Initialize()
        Set f = Sheets("feuil1")
        ColVisu = Array(1, 2, 4, 7)          ' colonnes à visualiser
        bd = f.Range("A2:G" & f.[A65000].End(xlUp).Row).Value
        '-- en têtes de colonne ListBox
        For Each k In ColVisu
           x = x + f.Columns(k).Width * 1#
           temp = temp & f.Columns(k).Width * 1# & ";"
         Next
         temp = Left(temp, Len(temp) - 1)
         Me.ListBox1.ColumnCount = UBound(ColVisu) + 1
         Me.ListBox1.ColumnWidths = temp
        '---
        Dim Tbl: ReDim Tbl(1 To UBound(bd), 1 To UBound(ColVisu) + 1)
        j = 0
        For Each k In ColVisu
            j = j + 1
            For i = 1 To UBound(bd)
               Tbl(i, j) = bd(i, k)
            Next i
        Next k
        ListBox1.List = Tbl
    End Sub
    Boisgontier
    http://boisgontierjacques.free.fr
    Fichiers attachés Fichiers attachés

  7. #7
    Membre confirmé
    Femme Profil pro
    dessinateur CAO/DAO
    Inscrit en
    Juillet 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : dessinateur CAO/DAO

    Informations forums :
    Inscription : Juillet 2017
    Messages : 46
    Par défaut
    Bonjour,

    merci a tous pour vos réponses.
    Je vais prendre la méthode de Philippe pour le moment elle me parle plus facilement mais je vous promet que j'essaierai les autres.

    Voici ce que cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Me.ListBox8
    .ColumnCount = 55 ' Nombre de colonnes affichées
    .ColumnWidths = "125;125;0;0;0;0;0;0;0;125;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;125;125;0;0;0;0;0;0;0;0;0;0;125;125" ' Largeur des colonnes
    End With
    Il est vrai que toute cette suite de zéro n'est peut être pas très esthétique mais,pour moi, aujourd'hui, ça me va

    Du coup j'abuse de vous pour vous poser une nouvelle question :
    Comment faire pour filtrer c'est données sur la colonne BB (colonne 54) avec la valeur "VRAI"?

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/07/2014, 16h57
  2. Requête SQL : Afficher les colonnes en ligne, et vice versa
    Par paflolo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/03/2009, 09h16
  3. Réponses: 6
    Dernier message: 01/08/2006, 18h12
  4. afficher juste les colonnes du tableau c'est possible !?
    Par moonia dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 26/07/2006, 08h58
  5. [VBA-E] Séparer les colonnes d'une listbox par des lignes?
    Par mulot03 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/05/2006, 14h03

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