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 / Renseigner ListBox ou comboBox ?


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Remplir / Renseigner ListBox ou comboBox ?
    Bonjour,

    A mon tour j'aurais besoin d'aide pour le meme sujet.

    J'ai envie de créer une liste déroulante. Quelle partie remplire
    Private Sub Choix_Click() ou UserForm_Initialize() ???
    Je n'arrive pas à ajouter d'élèments à ma liste?

    Est ce correct?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Intilialize()
    MsgBox ("Veuillez faire votre choix")
    Dim listBox1()
    listBox1 = Array("Afficher les stat", "Graphique stat par jour", "Graphique période glissante")
    Meric pour votre aide !!

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    La méthode à utiliser pour remplir une Liste ou un Combo se passe dans l'évènement Initialise du UserForm.

    Si travailler avec des Array te pose problème, tu peux utiliser une méthode plus simple où l'on ajoute les éléments les uns à la suite des autres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub UserForm_Initialize()
    Me.ComboBox1.AddItem "Item 01"
    Me.ComboBox1.AddItem "Item 02"
    End Sub
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Employer un MsgBox implique une réponse et de ce fait... bloque la suite de l'initialisation.
    Pour l'initialisation de la listbox tu peu faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Intilialize()
    Dim i as integer
    Dim Contenu() 'Ne pas employer des noms de contrôles comme variable
    Contenu= Array("Afficher les stat", "Graphique stat par jour", "Graphique période glissante")
     
     for i=0 to ubound(Contenu)
        ListBox1.AddItem Contenu(i)
    Next i
    Et au dessus de la listbox mettre un Label avec ("Veuillez faire votre choix")
    que tu supprime éventuellement après la sélection dans la listbox.
    A+

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    si c'est pour déclarer un tableau, il est préférable de le typer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Contenu() As String
    Pour ne pas faire un tableau de Variant.

    PS : je n'ai pas repris le code fourni parce qu'il est issu d'un autre message.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par LeForestier Voir le message
    Bonjour,
    Employer un MsgBox implique une réponse et de ce fait... bloque la suite de l'initialisation.
    Pour l'initialisation de la listbox tu peu faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Intilialize()
    Dim i as integer
    Dim Contenu() 'Ne pas employer des noms de contrôles comme variable
    Contenu= Array("Afficher les stat", "Graphique stat par jour", "Graphique période glissante")
     
     for i=0 to ubound(Contenu)
        ListBox1.AddItem Contenu(i)
    Next i
    Et au dessus de la listbox mettre un Label avec ("Veuillez faire votre choix")
    que tu supprime éventuellement après la sélection dans la listbox.
    A+
    Voui ! Ou bien tu peux aussi faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
    Dim i As Integer 'Ne pas employer des noms de contrôles comme variable
    Dim Contenu As Variant, Tablo() As Variant
        Contenu = Array("Afficher les stat", "Graphique stat par jour", "Graphique période glissante")
        Tablo = Array(Contenu, 0)
        ListBox1.List() = Tablo(0)
    End Sub
    Juste pour embêter l'homme des bois !
    (Salut Le Garde champêtre, tu n'as pas croisé jean-pierre durant sa cavale ?)
    Edit
    (Salut aussi, l'homme heureux )

  6. #6
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Comme je ne constate pas de réaction, je vais simplifier pour vous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    Dim Contenu As Variant
        Contenu = Array(Array("Afficher les stat", "Graphique stat par jour", "Graphique période glissante"), 0)
        ListBox1.List() = Contenu(0)
    End Sub
    Si le silence persite, attention, j'explique

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour Ousk,
    Beh oui, c'est le plus compacte...
    Et j'y ai pas pensé

    Bonjour également à l'homme heureux, petite remarque, le Me. .... n'est pas nécessaire quand le code se trouve dans le module de l'UF.
    A+

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,


    Le Me. est un réflexe et permet l'utilisation de l'IntelliSense pour faciliter la saisie du code.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Merci à tous ça marche !

    Par contre, dans mon userform la liste s'affiche mais en fait je peux pas cliquer sur un des choix que je propose c'est pour toutes les list box, faut peut etre programmer qqchose ailleurs ? dans ListBox1_Click() ?

    Merci !

  10. #10
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    La propriété Enable de la liste doit être = True
    La propriété Locked de la liste doit être = False
    Tu vérifies ça ?
    A+

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Salut,

    J'ai vérifié c'est bien le cas...

    :s

  12. #12
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    faut peut etre programmer qqchose ailleurs ? dans ListBox1_Click()
    Effectivement, si tu ne fais rien, tu n'as rien
    Mais tu as un tas d'événements que tu peux utiliser ListBox1_Change, MouseDown, up, etc.
    Quand tu fais un clic dans une liste, la sélection est-elle surligné ?

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Oui la selection est surlignée.

    J'ai aussi mis un bouton en dessous ok pour valider la selection.

    Ma liste déroulante propose d'afficher "stats", "afficher graphique1", "afficher graphique2".
    Mon but après la selection est juste d'afficher l'onglet correspondant à stats ou graphique1/2.
    Comment dois-je formuler cela et dans quelle partie ? Bouton_click() ? ou ListBox1_Click() ?

    Merci

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Perso, j'utilise l'évènement AfterUpdate ou change d'une liste.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  15. #15
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par charlottedie Voir le message
    Comment dois-je formuler cela et dans quelle partie ? Bouton_click() ? ou ListBox1_Click() ?
    Les deux options sont possibles mais un bouton qui valide le choix permet une éventuelle correction de la sélection.
    Quant à la sélection de la bonne feuille, comme tu ajoutes du texte aux éléments de ta liste, "Afficher les stats, Afficher le graphique1, etc." utilise Select case. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Select case Listbox1
        Case "Afficher les stats"
             Worksheets("stats").select
         Case "Afficher le graphique1"
             Worksheets("graphique1").select
         Case ...
             etc.
    End select
    A+

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Les deux options sont possibles mais un bouton qui valide le choix permet une éventuelle correction de la sélection.
    Comme ce n'est que pour afficher un onglet plutôt qu'un autre, on gagne un clic.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  17. #17
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Comme ce n'est que pour afficher un onglet plutôt qu'un autre, on gagne un clic.
    Bonjour Oli,
    Effectivement, j'y avais pensé, mais comme Il est inutile de sélectionner une feuille de calculs pour travailler dedans par macro, j'ai aussi pensé qu'une fois la feuille sélectionnée, charlottedie pouvais vouloir fermer l'userform. Auquel cas une erreur de sélection dans la liste pouvait poser problème.
    Mais tu as raison, j'ai omis de poser la question :
    @charlottedie :
    Que fais-tu une fois la feuille sélectionnée ?
    A+

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    C'est bon j'ai réussi à contourner j'ai mis trois boutons pour mes choix.

    par contre l'userform ne se lance que lorsque je suis sur vba apres avoir lancé alt f11.
    Y aurait il un moyen de le lancer automatiquement à l'ouverture du fichier excel?

    Juste l'afficher... J'ai utilisé la forme visible ...

  19. #19
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Regarde ici, je donne une solution

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    Je te remercie.

    Tout fonctionne bien lorsque je lance la macro seulement ça ne s'effectue pas à l'ouverture, bizarre ? :s

Discussions similaires

  1. [Toutes versions] une autre facon de remplir une listbox ou combobox sans doublons
    Par patricktoulon dans le forum Contribuez
    Réponses: 2
    Dernier message: 05/11/2012, 13h09
  2. Réponses: 5
    Dernier message: 02/05/2011, 18h05
  3. Réponses: 6
    Dernier message: 22/05/2006, 16h16
  4. Réponses: 2
    Dernier message: 11/05/2006, 22h21
  5. Réponses: 3
    Dernier message: 19/01/2005, 15h50

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