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 :

remplir une listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 15
    Par défaut remplir une listbox
    Bonjour

    Je m'arrache les cheveux et ne comprends pas l'origine de mon erreur :
    Je voudrais tout simplement remplir ma listbox1 qui appartient au Userform1 au moment ou je clique sur l'OptionButton1.
    Je lance mon Userform depuis la feuille 1 et les données de remplissage se trouvent sur la feuille 2.

    Le code ci-dessous fonctionne, mais je voudrais ne pas à avoir à Activer la feuille 2. (Worksheets(2).Activate). Or si je ne le fais pas, ça plante, malgré la présence de Worksheets(2).Range(Cells(1, 1), Cells(Range("A100").End(xlUp).Row, 1)).Value à la ligne suivante.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub OptionButton1_Click()
      userform1.ListBox1.ColumnHeads = False
      Worksheets(2).Activate
      userform1.ListBox1.List() = Worksheets(2).Range(Cells(1, 1), Cells(Range("A100").End(xlUp).Row, 1)).Value
    End Sub
    Par contre si je code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub OptionButton1_Click()
      userform1.ListBox1.ColumnHeads = False
      userform1.ListBox1.List() = Worksheets(2).Range("A1:A11").Value
    End Sub
    Ca marche très bien et sans avoir à activer la feuille 2. Or moi, je voudrais qu'Excel repère le nombre d'élément à copier sans lui imposer la cellule de fin de liste d'ou le Range(Cells(1, 1), Cells(Range("A100").End(xlUp).Row, 1))

    Merci pour votre aide

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour

    As tu essayé en mettant Address a la fin (je n'ai pas fait de test)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    userform1.ListBox1.List() = Worksheets(2).Range(Cells(1, 1).address, Cells(Range("A100").End(xlUp).Row, 1).address).Value
    End Sub
    NB : essai plutot comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Userform1.Listbox1.Rowsource = Worksheets(2).Range(Cells(1, 1), Cells(Range("A:A").End(xlDown).Row, 1)).Address

  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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Rien ne t'interdit d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     UserForm1.ListBox1.List() = Worksheets(2).Range("A1:A" & Range("A100").End(xlUp).Row).Value
    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
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Je croyais que pour lier une liste à des items d'une feuille il fallait utiliser la propriété RowSource... En tous cas, moi, c'est toujours ce que je fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.RowSource = Feuil2.Range("A2:D2")
    par exemple.

    Si les données de la liste ne changent pas, on peu définir une zone de nom (plage nommée) pour référencer un Range comme source d'un ListBox.

    Si les données sont constamment modifiées ou augmentées par l'utilisateur, alors
    la méthode End telle qu'indiquée par corona ou jfontaine est en effet tout indiquée.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 15
    Par défaut
    J'ai solutionné mon problème. Mon erreur a été de placer "Worksheets(2)" devant le range. Par contre, il faut sans cesse rappeler à l'intérieur du range que les cellules citées sont dans la feuille 2.

    Voici mon code qui fonctionne sans avoir besoin d'activer la feuille 2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub OptionButton1_Click()
      userform1.ListBox1.ColumnHeads = False
      userform1.ListBox1.List() = Range(Worksheets(2).Cells(2, 1), Worksheets(2).Cells(Worksheets(2).Range("A100").End(xlUp).Row, 1)).Value
    End Sub
    Merci pour vos contributions (Jfontaine, Zazaraignée et Corona)

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

Discussions similaires

  1. Remplir une listbox
    Par slimsamfr dans le forum Access
    Réponses: 1
    Dernier message: 13/07/2006, 10h13
  2. [VB6] Remplir une listbox avec access.
    Par Poustik dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/06/2006, 11h43
  3. [VBA-E] Remplir une listbox à l'ouverture d'un formulaire
    Par fred bx dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/06/2006, 13h25
  4. Réponses: 6
    Dernier message: 22/05/2006, 16h16
  5. Réponses: 2
    Dernier message: 11/05/2006, 22h21

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