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 :

Problème remplissage ListBox variable [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2021
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Problème remplissage ListBox variable
    Bonjour à tous !

    Je viens vers vous aujourd'hui car je n'arrive pas à trouver solution à mon problème qui parait pourtant si simple.

    J'ai crée sur une feuille excel un système 'd'onglets' qui permet à l'utilisateur d'aller en cliquant sur les boutons "options" là où il veut (voir capture d'écrans). Pour chacune de ces options, il y a une ListBox qui présente des phrases que l'utilisateur viendra sélectionner pour ensuite les exporter vers un document Word via le Bouton "exporter".

    J'ai pensé en premier lieu à créer plusieurs ListBox (pour chaque onglets) ainsi que plusieurs boutons Exporter. Mais au vue du nombre d'onglets que j'ai sur le fichier excel de mon projet, je me suis dit que qu'il était plus judicieux d'avoir une seule ListBox et un seul bouton Exporter.

    J'ai donc changer la propriété de ces deux composants en "ne pas déplacer ou dimensionner avec les cellules".

    Sauf que le problème maintenant, c'est que je ne vois pas comment remplir la ListBox avec les données qui correspondent à l'onglet choisi (ces données se trouvent sur la deuxième feuille du classeur ci-joint).

    Je n'arrive pas à trouver l'instruction en VBA qui dirait : si tu as cliquer sur l'onglet 'option1' ou si le sub Option1_cliquer est réalisé, remplit la ListBox avec les lignes de B4 à B7 de la feuille Données
    Si tu as cliqué sur l'onglet 'option2', remplit la ListBox avec les lignes de B11 à B13 de la feuille Données etc ...

    J'ai pourtant essayé : If Option1_cliquer = True then mais je pense que je n'ai pas compris comment utiliser cette propriété.

    Quelqu'un pourrait-il m'éclairer ?

    Merci à tous ceux qui se pencheront sur mon problème
    Images attachées Images attachées   
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai
    Homme Profil pro
    Gérant de société
    Inscrit en
    Septembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Gérant de société
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2014
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour Bilbin,

    Tout d'abord, il est préférable quand tu inities un nouveau sujet de ne pas poster un fichier mais de fournir directement les lignes de codes qui posent problèmes.

    Je procèderais personnellement en utilisant l'instruction Select Case:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Select Case MulitiPages.Value
     
    Case 0 '---> Option 1
        ' Ton code pour remplir la listbox avec les données de l'option 1
     
    Case 1 '---> Option 2
        ' Ton code pour remplir la listbox avec les données de l'option 2
     
    Case 2 '---> Option 3
        ' Ton code pour remplir la listbox avec les données de l'option 3
     
    End Select
    Bonne fin de journée.

    Frédéric

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2021
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Bonjour Fred92,

    Tout d'abord merci pour ta réponse et je prend note de la remarque que tu m'as faite dans le début de ton message.

    Concernant la solution que tu me proposes, je ne pense pas que je puisse la retenir car tu utilises la propriété Mutlipages. Or, dans mon fichier excel, je n'ai pas utilisé ceci. Pour le système d'onglet, il s'agit juste d'une macro où je viens cacher/afficher certaines colonnes comme tu peux le voir dans le code suivant:
    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
    Sub Option1_Cliquer()
    ActiveSheet.Shapes("Option1").Fill.ForeColor.RGB = RGB(90, 155, 230)
    ActiveSheet.Shapes("Option2").Fill.ForeColor.RGB = RGB(189, 215, 238)
    ActiveSheet.Shapes("Option3").Fill.ForeColor.RGB = RGB(189, 215, 238)
     
    ActiveSheet.Columns("A:K").EntireColumn.Hidden = False
    ActiveSheet.Columns("L:AE").EntireColumn.Hidden = True
    End Sub
     
    Sub Option2_Cliquer()
    ActiveSheet.Shapes("Option1").Fill.ForeColor.RGB = RGB(189, 215, 238)
    ActiveSheet.Shapes("Option2").Fill.ForeColor.RGB = RGB(90, 155, 230)
    ActiveSheet.Shapes("Option3").Fill.ForeColor.RGB = RGB(189, 215, 238)
     
    ActiveSheet.Columns("B:K").EntireColumn.Hidden = True
    ActiveSheet.Columns("L:U").EntireColumn.Hidden = False
    ActiveSheet.Columns("V:AE").EntireColumn.Hidden = True
    End Sub
     
    Sub Option3_Cliquer()
    ActiveSheet.Shapes("Option1").Fill.ForeColor.RGB = RGB(189, 215, 238)
    ActiveSheet.Shapes("Option2").Fill.ForeColor.RGB = RGB(189, 215, 238)
    ActiveSheet.Shapes("Option3").Fill.ForeColor.RGB = RGB(90, 155, 230)
     
    ActiveSheet.Columns("B:U").EntireColumn.Hidden = True
    ActiveSheet.Columns("V:AE").EntireColumn.Hidden = False
     
    End Sub
    Je ne pense donc pas que je puisse utiliser la trame du code que tu m'as proposé à moins que je me trompe ...

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne sais pas comment sont organisées vos données puisque vous ne l'avez pas affiché mais en créant un tableau structuré unique avec en première colonne le titre (par exemple Option 1 mais évidemment il serait préférable d'être plus explicite) et en seconde les textes à afficher et ensuite au clic sur l'onglet enclencher le filtre sur le titre en utilisant soit les filtres avancés d'excel (méthode AdvancedFilter) par exportation soit à l'aide de Power Query
    Faire alors référence à la table exportée dans le ListBox
    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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2021
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Bonjour à tous,

    La ligne de code à entrer dans le sub concerné est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ListBox1].ListFillRange = [Tableau15].ListObject.DataBodyRange.Address(External:=True)
    Merci de votre réponse Philippe. Il faudrait en effet que je m'intéresse de plus près aux filtres avancés d'Excel ou encore PowerQuery.

    Merci encore à vous et bonne continuation.

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

Discussions similaires

  1. Problème remplissage ListBox
    Par Débutant2 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 20/06/2016, 10h49
  2. [XL-2007] Probléme remplissage d'une listbox et filtrage avec comboBox
    Par Nejjar_med dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/07/2013, 13h17
  3. Problème d'initialisation variable tableau
    Par HeZiX dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2005, 16h30
  4. Problèmes avec les variables final
    Par casolaro dans le forum Langage
    Réponses: 7
    Dernier message: 09/12/2004, 14h29
  5. Réponses: 6
    Dernier message: 28/05/2004, 09h39

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