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 :

Comment afficher une colonne simple sous forme de tableau dans une LISTBOX?


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Comment afficher une colonne simple sous forme de tableau dans une LISTBOX?
    Bonjour à tous,

    Désolé de vous solliciter pour un souci qui ne doit pas être compliqué mais
    je ne trouve pas de solution satisfaisante...

    J'ai une liste de données dans la plage H35:H54 soit 20 valeurs, et je souhaiterai qu'elles s'affichent sous la forme d'un tableau de 4lignes er 5 colonnes dans une Listbox.

    J'ai beau manipuler les differentes propriétés de la Listbox je n'arrive pas à obtenir ce fichu tableau...

    Si vous avez une solution je suis preneur

    Cordialement

    Tham

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Essai ceci :
    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
     
    Private Sub UserForm_Initialize()
     
        Dim Plage As Range
        Dim I As Integer
     
        With Worksheets("Feuil1")
     
            Set Plage = .Range(.Cells(35, 8), .Cells(54, 8))
     
        End With
     
        With ListBox1
     
            .ColumnCount = 5
     
            'modifier ici les différentes largeurs
            .ColumnWidths = "50;50;50;50;50"
     
            For I = 1 To 4
     
            'rempli la 1ere colonne
                .AddItem Plage(I)
     
            'rempli les autres colonnes
                .Column(1, I - 1) = Plage(I + 4)
                .Column(2, I - 1) = Plage(I + 8)
                .Column(3, I - 1) = Plage(I + 12)
                .Column(4, I - 1) = Plage(I + 16)
     
            Next I
     
        End With
     
    End Sub
    Hervé.

  3. #3
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    bonjour,
    _ passe par un tableau en mémoire dim temp(1 to 4, 1 to 5).
    _ une petite boucle for pour parcourir dans un sens, une deuxième boucle imbriquée pour parcourir l'autre sens.
    _ une variable compteur incrémentée à l'intérieur des deux boucles pour désigne les ligne de ta colonne de cellule.
    _ les indices de tableau te sont fournis par les compteurs de boucles.
    _ affecter ensuite la propriété List de ton objet par le tableau.

    Assez simple à réaliser non?

    Edit
    Herve a déjà fourni le code pendant que je rédigeais.
    Salut!
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  4. #4
    Membre chevronné
    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
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub UserForm_Initialize()
      Dim a(1 To 4, 1 To 5)
      Set champ = Range("H35:H54")
      For i = 1 To 4
        For j = 1 To 5
          a(i, j) = champ.Cells(((i - 1) * 5 + j), 1)
        Next j
      Next i
      Me.ListBox1.List = a
    End Sub
    JB
    Fichiers attachés Fichiers attachés

  5. #5
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Merci de vos réponses
    Pas si simple finalement on dirait (enfin pour moi)

    Hervé,
    Ca marche très bien, la Listbox s'affiche avec les données sous forme de
    tableau 4 x 5, mais...
    Lorsque je sélectionne une valeur c'est toute la ligne qui est sélectionnée
    soit 5 valeurs aie!

    Un paramètre à régler pour sélectionner qu'une valeur ou ce n'est tout simplement pas possible?

    J'ai voulu voir ce que cela donnai en récupérant la valeur sur l'événement click

    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListBox1_Click()
    Range("h33").Value = ListBox1.Value
    End Sub
    Il ne se passe rien... là je ne comprend pas trop pourquoi...

    JB,
    Ca marche beaucoup moins bien je n'ai que la premiere colonne de rempli...

  6. #6
    Membre chevronné
    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
    Points : 2 156
    Points
    2 156
    Par défaut
    En ouvrant la PJ, on peut constater que les 5 colonnes sont visibles.

    jacques boisgontier

  7. #7
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    C'est vrai!
    C'est moi qui ai du modifier quelque chose en manipulant les propriétés de ma Listbox mea culpa

    Par contre même souci qu'avec la méthode de Hervé, je ne peux pas sélectionner une valeur, uniquement une ligne...

    Sur l'évenement click je récupère bien la valeur de la listBox qui est celle de la première colonne.

  8. #8
    Membre chevronné
    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
    Points : 2 156
    Points
    2 156
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim Btn(1 To 20) As New ClasseBoutons
    Private Sub UserForm_Initialize()
      For i = 1 To 20
       Set Btn(i).GrBoutons = Me("commandbutton" & i)
       Me("CommandButton" & i).Caption = Cells(34 + i, "h")
      Next i
    End Sub
     
    Module de classe
    Public WithEvents GrBoutons As Msforms.CommandButton
    Private Sub GrBoutons_click()
      [H33] = GrBoutons.Caption
    End Sub
    jacques boisgontier
    Fichiers attachés Fichiers attachés

  9. #9
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Whaa!
    C'est tout à fait ce type d'interface que je recherchais!
    Je n'ai plus le temps de tester ça ce soir, je verrai ça la semaine prochaine.

    En tout cas merci pour ton aide Jacques.

    Tham

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu...
    Bonjour
    il y avais un truc encore plus simple
    puisque tes colonne de listbox font 50 c'est facile de repérer quelle colonne tu selectionne en gardant le code de remplissage de Hervé

    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    if       X<50 then            'colonne 1
     
    elseif  X>50 then      'colonne 2
     
    elseif  X>100 then      'colonne 3 
     
    ''ect......
     
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Réponses: 8
    Dernier message: 01/03/2014, 14h55
  2. Réponses: 3
    Dernier message: 18/06/2010, 10h56
  3. recuperer une requete SQL sous forme de tableau EXCEL
    Par skillipo dans le forum VBA Access
    Réponses: 0
    Dernier message: 06/12/2007, 17h45
  4. Réponses: 5
    Dernier message: 27/04/2007, 15h06
  5. Réponses: 7
    Dernier message: 11/03/2007, 22h49

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