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 :

AIDE pour lier un combobox avec le listbox a l'aide d'un bouton


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club Avatar de dricks
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 86
    Points : 38
    Points
    38
    Par défaut AIDE pour lier un combobox avec le listbox a l'aide d'un bouton
    bonjour,

    voici mon probleme:

    à partir d'une feuille excel qui me sert de base de donnée j'ai créer a l'aide de VB un userform avec un combobox et un listbox.
    mon combobox affiche une liste avec un type d'activité
    ex: "étanchéité", "peinture", ect ...
    et mon listbox la liste des différentes entreprises . ma feuille excel se compose de plusieurs colonne dont la colonne "A" avec les noms d'entreprise et la colonne "G" le type de d'activité.

    je voudrais que quand je clique sur une activité sur ma combobox
    en cliquant sur le bouton validé que ma listbox affiche tout les nom de toute les entreprises qui font cette activité.

    y aurait t'il une âme charitable pour me conseiller et m'aider sur ce probleme ? SVP

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 66
    Points : 61
    Points
    61
    Par défaut
    Peut-être un truc un peu comme ça ? Merci aux plus professionnels de corriger ou de proposer meilleure solution, car je suis preneur aussi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim X As Long
    X=0
    For X = X + 1 To (Fin de liste)
        If Combobox.value = Range("G" & X).Value Then
     
        ListBox.AddItem
        ListBox.Column(0, 0) = Range("A" & X).Value
    'Si tu veux ajouter d'autres données...
        ListBox.Column(1, 0) = Range("B" & X).Value
        ListBox.Column(2, 0) = Range("C" & X).Value
        ListBox.Column(3, 0) = Range("D" & X).Value
        Exit For
        End If
        Next X
    .....non?.....

  3. #3
    Nouveau membre du Club Avatar de dricks
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 86
    Points : 38
    Points
    38
    Par défaut
    avec l'instruction DO WHILE ... EXIT DO sa ne fonctionnerait pas mieux? mais comme je ne fais que commencer j'ai un peux de mal

  4. #4
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    J'aurais pensé plsu à un autre type de repérage de données.

    En faisant des plages nommées, tu pourrais à la selection de "étanchéité" faire que listbox pointe sur une des plages nommées, avec un simple Select Case.
    Par contre il faudrais ajouter chaque cellule des plages avec la méthode AddItem.

    Ensuite penser à effacer le contenu de la listbox en cas de changement dans la combobox.

  5. #5
    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
    salut Dricks,

    j'avais un bout de code un peu dans le même style .. enfin si j'ai bien pigé ce que tu souaite faire.

    En fait, j'avais une première colonne CATEGORIE (colonne "A") et plusieurs colonne SOUSCATEGORIES (colonne"C" à colonne "F").

    Je lancais un USERFORME avec x2 ListBox.
    Et ma deuxieme ListBox dépendait de ma premiere, j'avais donc bien mes SOUCATEGORIES en fonction de mes CATEGORIES.
    j'avais un code comme ça :

    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 Feuil1.Range("C1").Text
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "CONTROLES!C2: C16"
     
        Case Feuil1.Range("D1").Text
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "CONTROLES!D2: D16"
     
        Case Feuil1.Range("E1").Text
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "CONTROLES!E2: E16"
     
        Case Feuil1.Range("F1").Text
            ListBox2.ColumnHeads = True
            ListBox2.RowSource = "CONTROLES!F2: F16"
     
    End Select
     
    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 = "CONTROLES!A2: A20"
    End Sub
     
    Private Sub CommandButton1_Click()
     
    UserForm1.Hide
    Feuil3.Activate
     
    End Sub
    En espérant le tout utile ... bon faut t'en inspirer et prendre ce que tu as besoin ... je t'écris du taff, j'espere ne pas être a coté de la plque ...
    A+

  6. #6
    Nouveau membre du Club Avatar de dricks
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 86
    Points : 38
    Points
    38
    Par défaut
    slt dado,
    ben j'ai essayé d'adapter ton code a mon projet mais j'ai un petit souci c'est que contrairement a toi tu a 2 listbox alors que moi j'ai 1 combobox ou son listé les differents lots d'activité et 1 listbox ou apparait tout les nom d'entreprise.

    donc pour adapter ton code au mien j'ai fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub ComboBox1_Change()
    lots = ComboBox1.Text
    Select Case lots
     
        Case Feuil1.Range("G").Text
            ListBox1.ColumnHeads = True
            ListBox1.RowSource = "feuil1!G2: G"
     
    End Select
    End Sub
    j'ai donc remplacé ta listbox1 par combobox1 et ajouter quelques modifs
    cependant j'ai un message d'erreur qui me dit :

    "la méthode 'range' de l'objet '_worksheet' à échoué".

    sa veut dire quoi???
    et swiper stp tu peux etre plus precis dans tes explications car je ne suis que débutant en VB pr le moment.
    merci

  7. #7
    Nouveau membre du Club Avatar de dricks
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 86
    Points : 38
    Points
    38
    Par défaut
    en fait ce que je veux c'est que quand j'ai choisis par exemple "etanchéité" dans le combobox je veux lorsque je clique sur le bouton "valider" qu'il m'affiche dans la listbox tout les noms d'entreprises qui font parti du lot etanchéité de ma feuil1 sous excel.

  8. #8
    Nouveau membre du Club Avatar de dricks
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 86
    Points : 38
    Points
    38
    Par défaut
    slt swiper voila ce que j'ai fais mais j'ai encore une erreur de compil sa me dit "qualificateur incorrect".

    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
     
    Private Sub ComboBox1_Change()
    Dim lot As String  ' c'est le nom du lot exemple "étanchéité"
    Dim ent As string  ' c'est  le nom de l'entreprise exemple "AGR"
    Dim cell As Range ' c'est la plage de cellule concerné
     
    Select Case lot
    Case étanchéité
      For Each cell In Range("G2:G")
     lot.étanchéité.AddItem cell, CStr(cell)
      Next cell
      For Each ent In lot
       Me.ListBox1.AddItem ent
      Next ent
    End Select
     
    End Sub
    comme je te l'ai dit je suis pas tres bon en VB. si je dois corrigé tout le code n'hésite pas a me dire.

  9. #9
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Essaie ca plutôt

    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
    Private Sub ComboBox1_Change()
    Dim lot As String  ' c'est le nom du lot exemple "étanchéité"
    Dim ent As string  ' c'est  le nom de l'entreprise exemple "AGR"
    Dim cell As Range ' c'est la plage de cellule 
    
    'il te faut incrémenter la variable du résultat du combobox
    Lot = NomUserfom.ComboBox1.Value
    
    Select Case lot
    
    Case "étanchéité" 'là, on compare la valeur du combobox avec une chaine de charactere
    
      For Each cell In Range("G2:G") ' Ici il te faut selectionner la plage d'entreprise qui correspond à "etancheite"
    NomUserform.NomListBox.AddItem cell ' Rajoute dans la listBox le contenu de la variable cell
      Next cell
    
    Case "AutreLot"
    
    For Each cell In Range("G2:G") ' Ici il te faut selectionner la plage d'entreprise qui correspond à "AutreLot"
    NomUserform.NomListBox.AddItem cell ' Rajoute dans la listBox le contenu de la variable cell
      Next cell
    
    Case 'Etc... jusqu'a la fin de tes lots
    
    End Select
     
    End Sub

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/08/2007, 15h39
  2. [C#]Aide pour gestion dataset / XML avec listview(débutant)
    Par Low-Fi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/04/2006, 12h21
  3. [VB6]Aide pour mettre format date avec inputbox
    Par Geliwy77 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 28/01/2006, 21h13
  4. Réponses: 5
    Dernier message: 26/05/2005, 16h40
  5. [CR8.5] Aide pour lier des etats
    Par Silvinho42 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 28/04/2005, 11h11

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