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 :

[VBA-E] 2 ListBox avec valeurs "dépendantes l'une de l'autre"


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 63
    Points : 66
    Points
    66
    Par défaut [VBA-E] 2 ListBox avec valeurs "dépendantes l'une de l'autre"
    salut à tous!

    je débute en VB et je me heurte à mes premiers beug...
    soyez indulgent, je suis novice... comme on dit c'est en boxant qu'on devient boxeur ...
    Je souhaiterais un petit coup de main, pour le problem suivant :

    j'ai un USERFORM avec (x2) ListBox.
    ListBox1 me permet de selectionner une catégorie de dépense.
    ListBox2, le détail de la catégorie.
    Autrement dit la valeur de ListBox1 influenceras le contenu de ListBox2, selon le tableau ci-dessous.


    DEPENSE ADMIN POLO SLK PERSO
    ADMIN IMPOT GASOIL ESSENCE KDO
    POLO CREDIT LAVAGE LAVAGE VETEMENT
    SLK ASSURANCE AMENDE AMENDE BOUFFE
    PERSO ENTRETIEN

    voici mon code, pourquoi je n'arrive pas à afficher ListBox2 en fonction de ListBox1????

    merci pour vos lumieres :

    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
     
     
    Private Sub UserForm_Initialize()
     
        Dim CategorieDepense As String
        Dim DetailDepense As String
     
    'on défini la plage de donnés à mettre dans ListBox1 (feuil1, plage A2:A10)
    ListBox1.ColumnHeads = True
    ListBox1.RowSource = "Feuil1!A2: A10"
     
     
    ListBox1.Value = CategorieDepense
    ListBox2.Value = DetailDepense
     
    Select Case CategorieDepense
     
        Case "ADMIN"
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "Feuil1!C2: C16"
     
        Case "POLO"
            CListBox2.ColumnHeads = True
            ListBox2.RowSource = "Feuil1!D2: D16"
     
        Case "SLK"
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "Feuil1!E2: E16"
     
        Case "PERSO"
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "Feuil1!F2: F16"
     
    End Select
     
    Range("B1") = CategorieDepense
     
    End Sub
    Private Sub CommandButton1_Click()
     
    Feuil1.Range("A15") = ListBox1.Value
    Feuil1.Range("B15") = ListBox2.Value
    Feuil1.Activate
     
    End Sub

  2. #2
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Salut à toi,

    j'ai un peu modifié ton code pour avoir un truc qui marche (chez moi en tout cas )
    2 trucs en particulier :
    - le categoriedepense du mauvais côté du signe égal
    - séparer le code en évènement listbox1_change, de manière à changer le contenu de ta listbox 2 en fonction du contenu de ta listbox1
    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
    Private Sub ListBox1_Change()
    CategorieDepense = ListBox1.Text
    Select Case CategorieDepense
     
        Case "ADMIN"
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "Feuil1!C2: C16"
     
        Case "POLO"
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "Feuil1!D2: D16"
     
        Case "SLK"
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "Feuil1!E2: E16"
     
        Case "PERSO"
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "Feuil1!F2: F16"
     
    End Select
     
    Range("B1") = CategorieDepense
    End Sub
    Private Sub UserForm_Initialize()
     
        Dim CategorieDepense As String
        Dim DetailDepense As String
     
    'on défini la plage de donnés à mettre dans ListBox1 (feuil1, plage A2:A10)
    ListBox1.ColumnHeads = True
    ListBox1.RowSource = "Feuil1!A2: A10"
    End Sub
    Private Sub CommandButton1_Click()
     
    Feuil1.Range("A15") = ListBox1.Value
    Feuil1.Range("B15") = ListBox2.Value
    UserForm1.Hide
    Feuil1.Activate
     
    End Sub
    J'espère que ça va t'aider

    Cwain

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

Discussions similaires

  1. Champs identiques avec valeur différente where dans une même table
    Par Cyrus59 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/11/2014, 16h56
  2. VBA: Erreur d'affichage listbox avec valeur unique
    Par polenade dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2012, 19h34
  3. Réponses: 2
    Dernier message: 02/05/2011, 19h23
  4. Problème avec valeur de retour d'une fonction
    Par ouranos21 dans le forum SQL Procédural
    Réponses: 11
    Dernier message: 20/01/2009, 08h52
  5. Réponses: 7
    Dernier message: 10/12/2007, 08h42

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