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 créer une liste de choix via vba puis la lier en cascade avec d'autres liste de choix?


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Responsable projets transverses
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable projets transverses
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Comment créer une liste de choix via vba puis la lier en cascade avec d'autres liste de choix?
    Bonjour,

    Après lecture de multiples postes sur les listes déroulantes de choix avec et sans VBA je me retrouve dans une zone noire

    Mon besoin me semble clair mais je ne trouve rien qui y ressemble ou alors je ne comprends rien

    En fait je ne sais pas si le plus simple est d'utiliser des listes via Excel ou bien VBA...

    Pour vous expliquer je souhaite gérer au quotidien ma base de données via une feuille display afin d'y effectuer les modifications, ajouts ou suppressions et de mettre ensuite la base de données à jour qui se trouve sur une autre feuille de mon classeur.

    Les niveaux demandés correspondent à des filtres cumulés de ma base de données

    Pour cela je veux créer 3 listes en cascade:
    1er niveau: Banc
    2ème niveau: Moteur (seuls les moteur sur le banc précédemment sélectionné)
    3ème niveau: Nom (la ou les activités du moteur)

    => apparaissent en dessous les lignes complètes de ma base de données répondant au résultat (Est-ce que c'est un textbox qu'il faut à cet endroit?)

    1) Est-ce faisable?
    A l'heure actuelle je n'arrive même pas à indiquer la liste des banc dans mon niveau 1... je ne comprends pas où est l'erreur
    2) Comment procéder si je veux pouvoir sélectionner 2 moteurs par exemple?

    J'ai beaucoup lu sur les combobox ou les listbox, Est-ce que dans mon cas, les listbox ne serait-elles pas mieux adaptées pour les choix multiples?

    Mais je nage, j'ai besoin de vos conseils avisés et expérimentés!

    Y'a-t-il quelqu'un pour m'aider?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Je ne crois pas que tu auras de réponse.
    car par mesure de sécurité personne n'ouvrira de .xlsm

    voir : ici

    il serait mieux d'écrire ton code et d'expliqué qu'est-ce qui'il ne fonctionne pas.

  3. #3
    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,


    Faire une recherche Google: Listes cascades

    Boisgontier

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Responsable projets transverses
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable projets transverses
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    @gnain: merci pour ton retour j'ai retiré le fichier. Je t'avoue avoir souvent vu des fichiers joints aux discussions d'où mon ignorance dessus.

    @boisgontierjacques: je vais essayer une nouvelle recherche avec ces mots.

    Voici quand même les 2 macros écrites pour essayer de remplir mon premier niveau:

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    Private Sub ComboBox21_Change()
     
    Dim i As Byte
    Dim SH3 As Worksheet
    Set SH3 = Worksheets(NOM_F_DISPLAY)
     
    ComboBox21.ListIndex = 0
    ComboBox21.RowSource = "SC_Planning_Essais_S!F6:F4600"
     
    SH3.ComboBox21.AddItem "11S7"                'liste index = 0 => erreur de compilation membre de méthode ou de données introuvable???
    SH3.ComboBox21.AddItem "12H7"                'liste index = 1
    SH3.ComboBox21.AddItem "12S7"                'liste index = 2
    SH3.ComboBox21.AddItem "1H12"                'liste index = 3
    SH3.ComboBox21.AddItem "1H8"                 'liste index = 4
    SH3.ComboBox21.AddItem "3 bis"               'liste index = 5
    SH3.ComboBox21.AddItem "Banc 0"              'liste index = 6
    SH3.ComboBox21.AddItem "BU Pol"              'liste index = 7
    SH3.ComboBox21.AddItem "BU TA02"             'liste index = 8
    SH3.ComboBox21.AddItem "CEPr Caisson"        'liste index = 9
    SH3.ComboBox21.AddItem "CIAM"                'liste index = 10
    SH3.ComboBox21.AddItem "F5X 01 D"            'liste index = 11
    SH3.ComboBox21.AddItem "F5X 01 G"            'liste index = 12
    SH3.ComboBox21.AddItem "F5X 02 D"            'liste index = 13
    SH3.ComboBox21.AddItem "F5X 02 G"            'liste index = 14
    SH3.ComboBox21.AddItem "F5X 03 D"            'liste index = 15
    SH3.ComboBox21.AddItem "F5X 03 G"            'liste index = 16
    SH3.ComboBox21.AddItem "F5X Spare D"         'liste index = 17
    SH3.ComboBox21.AddItem "F5X Spare G"         'liste index = 18
    SH3.ComboBox21.AddItem "Istres Air Libre"    'liste index = 19
    SH3.ComboBox21.AddItem "Poluevo Air Libre"   'liste index = 20
    SH3.ComboBox21.AddItem "TA02"                'liste index = 21
    SH3.ComboBox21.AddItem "TA03"                'liste index = 22
    SH3.ComboBox21.AddItem "VOL US"              'liste index = 23
     
    If ComboBox21.Value = "11S7" Then
        SH3.Range("F6") = "11S7"
    End If
     
    If ComboBox21.Value = "12H7" Then
        SH3.Range("F6") = "12H7"
    End If
     
    If ComboBox21.Value = "12S7" Then
        SH3.Range("F6") = "12S7"
    End If
     
    If ComboBox21.Value = "1H12" Then
        SH3.Range("F6") = "1H12"
    End If
     
    If ComboBox21.Value = "1H8" Then
        SH3.Range("F6") = "1H8"
    End If
     
    If ComboBox21.Value = "3 bis" Then
        SH3.Range("F6") = "3 bis"
    End If
     
    If ComboBox21.Value = "Banc 0" Then
        SH3.Range("F6") = "Banc 0"
    End If
     
    If ComboBox21.Value = "BU Pol" Then
        SH3.Range("F6") = "BU Pol"
    End If
     
    If ComboBox21.Value = "BU TA02" Then
        SH3.Range("F6") = "BU TA02"
    End If
     
    If ComboBox21.Value = "CEPr Caisson" Then
        SH3.Range("F6") = "CEPr Caisson"
    End If
     
    If ComboBox21.Value = "CIAM" Then
        SH3.Range("F6") = "CIAM"
    End If
     
    If ComboBox21.Value = "F5X 01 D" Then
        SH3.Range("F6") = "F5X 01 D"
    End If
     
    If ComboBox21.Value = "F5X 01 G" Then
        SH3.Range("F6") = "F5X 01 G"
    End If
     
    If ComboBox21.Value = "F5X 02 D" Then
        SH3.Range("F6") = "F5X 02 D"
    End If
     
    If ComboBox21.Value = "F5X 02 G" Then
        SH3.Range("F6") = "F5X 02 G"
    End If
     
    If ComboBox21.Value = "F5X 03 D" Then
        SH3.Range("F6") = "F5X 03 D"
    End If
     
    If ComboBox21.Value = "F5X 03 G" Then
        SH3.Range("F6") = "F5X 03 G"
    End If
     
    If ComboBox21.Value = "F5X Spare D" Then
        SH3.Range("F6") = "F5X Spare D"
    End If
     
    If ComboBox21.Value = "F5X Spare G" Then
        SH3.Range("F6") = "F5X Spare G"
    End If
     
    If ComboBox21.Value = "Istres Air Libre" Then
        SH3.Range("F6") = "Istres Air Libre"
    End If
     
    If ComboBox21.Value = "Poluevo Air Libre" Then
        SH3.Range("F6") = "Poluevo Air Libre"
    End If
     
    If ComboBox21.Value = "TA02" Then
        SH3.Range("F6") = "TA02"
    End If
     
    If ComboBox21.Value = "TA03" Then
        SH3.Range("F6") = "TA03"
    End If
     
    If ComboBox21.Value = "VOL US" Then
        SH3.Range("F6") = "VOL US"
    End If
     
    End Sub
    et l'autre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Banc()
     
    Dim j As Integer
    ComboBox1.ListIndex = 0
    'L'index 0 correspond à la première donnée contenue dans le ComboBox
     
        'Récupère les données de la colonne A...
        For j = 1 To WB1.SH1.Range("F5000").End(xlUp).Row
            ComboBox1 = WB1.SH1.Range("F" & j)
            '...et filtre les doublons
            If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Range("F" & j)
        Next j
     
    End Sub
    => pas de ligne surlignée => erreur d'execution 424 Objet requis

    Ni l'une ni l'autre ne fonctionne et je ne comprends pas pourquoi car j'ai déclaré toutes mes variables dans un module à part en public ou public const

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/02/2016, 14h41
  2. [AC-2010] Comment créer une liste déroulante à choix multiple
    Par e2r34 dans le forum IHM
    Réponses: 2
    Dernier message: 24/02/2013, 17h35
  3. Réponses: 8
    Dernier message: 26/03/2010, 10h05
  4. Réponses: 2
    Dernier message: 23/04/2007, 14h26

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