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 :

Débutant : ListBox, Rowsource et plages de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut Débutant : ListBox, Rowsource et plages de données
    Bonjour,

    J'ai crée une ListBox avec titre (1 ligne de titre plus 5 lignes et 3 colonnes) et donc si j'ai bien tout compris je ne peux pas utiliser de ListBox.List mais je suis obligé de passer par ListBox.RowSource (?).

    Alors comment faire avec RowSource pour récupérer des plages de donnéees non contiguës ?

    Exemple : je voudrais récupérer les données de A2 à A6, B2 à B6 et D2 à D6. Et le contenu A1,B1,D1 en guise de titre.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Juste pour le principe, tu devras faire avec... et donc comprendre le code.
    Un userform + 1 listbox à 3 colonnes
    Dans le module standard de ton projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub ouvrir()
    Load UserForm1
    UserForm1.Show
    End Sub
    Dans l'userform
    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()
    Init
    End Sub
     
    Sub Init()
    Dim ListCol As Variant, NoCol
    Dim ListLig As Variant, NoLig
        ListCol = Array(1, 4, 6) 'liste des colonnes ds la feuille de calculs
        ListLig = Array(2, 5, 7, 9) 'Liste des lignes
     
        'On crée les lignes en remplissant la première colonne
        For NoLig = 0 To UBound(ListLig)
            Me.ListBox1.AddItem Cells(ListLig(NoLig), ListCol(0)).Value
        Next
     
        'On remplit les autres colonnes
        For NoCol = 1 To UBound(ListCol)
            For NoLig = 0 To UBound(ListLig)
                Me.ListBox1.Column(NoCol, NoLig) = _
                Cells(ListLig(NoLig), ListCol(NoCol)).Value
            Next
        Next
    End Sub
    Modifie les N° de lignes et de colonnes dans les tableaux et teste ça
    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 6
    Par défaut
    Le code marche impeccable pour récupérer les plages discontinues. Par contre je n'arrive pas à intégrer une première ligne comme titre dans ma ListBox.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Désolé mais si je connais la possibilité de placer un en-tête de colonne avec RowSource (qui réclame l'adresse d'une plage de cellules) je ne connais pas de méthode le permettant avec List.
    Ce que j'ai testé est la création d'un range des cellules de ta liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Test()
    Dim Adres As Range
    Dim ListCol As Variant, NoCol
    Dim ListLig As Variant, NoLig
        ListCol = Array(2, 4, 6)  'liste des colonnes ds la feuille de calculs
        ListLig = Array(1, 2, 5, 7, 9)  'Liste des lignes
        Set Adres = Range("A1")
        For i = 0 To UBound(ListCol)
            For j = 0 To UBound(ListLig)
                Set Adres = Application.Union(Adres, Cells(ListLig(j), ListCol(i)))
            Next
        Next
        Me.ListBox1.RowSource = Adres.Address
    End sub
    Pas de bug dans le code mais ne fonctionne pas. Et à la réflexion, c'est normal (!)
    J'ai également testé avec List, Column,... Même punition.
    Mais si quelqu'un a une solution, elle méritera la FAQ
    Je suis tes progrès

Discussions similaires

  1. Plage de donnée variable dans rowsource
    Par skin57 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/03/2013, 22h14
  2. [vb.net] [débutant] Listbox .
    Par Amenos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/02/2006, 14h26
  3. [VBA] excel croisé dynamique et plage de données variables
    Par totoche dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/01/2006, 18h14
  4. LISTBOX rowsource : référence à des cellules fusionées
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/10/2005, 15h42
  5. [débutant]Listbox et barre horizontale
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 30/09/2005, 16h37

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