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 une combobox à l'aide d'une checkbox [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut Remplir une combobox à l'aide d'une checkbox
    Bonjour à tous,
    Je suis novice en VBA, alors je bidouille un peu en naviguant sur les forums pour m'aider mais là je suis bloqué je ne sais plus comment faire...

    Alors voila mon problème:

    Je souhaite me faire une bibliothèque ou base de donné en VBA avec Excel 2003.
    Dans ma colonne B j'ai du texte avec lesquels je souhaite charger ma combobox (ex: nom de film).
    Dans la C j'ai un chiffre (pour l'instant je ne ne le traite pas).
    Dans la D j'ai du texte (ex: genre du film).

    Exemple:
    ____B_________________C____________D_______
    __Poirot________________________policier___
    _Stargate_________________________S-F______
    _Sherlock_______________________policier___
    _Starwars_________________________S-F______
    _Les Inconnues___________________Humour____
    _robin des bois__________________Aventure__
    _Rambo___________________________Action____
    ect...

    ma combobox1 doit donc comporter les noms de film en fonction de la checkbox que je coche.
    Si je coche la checkbox1 la combobox doit me laisser le choix des films policier.
    Si je cohe la checkbox2 la combobox doit me laisser le choix des films S-F.
    Si je coche la checkbox1 et la checkbox2 la combobox doit me laisser le choix des films policier et S-F.... ect avec les autres combobox.

    j'ai donc 1 combobox pour 4 checkbox caractérisant des critères de sélection sur ce que je souhaite afficher ou non dans ma combobox.

    on à déjas commencé à m'aiguiller et à m'aider seulement il y a encore quelques erreures el mon code ne fonctionne pas...

    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
    Dim maCell As Object
    Dim sListe As String
    If UserForm1.CheckBox1m10.Value = True Then
      sListe = "<10"
    End If
    If UserForm1.CheckBox2m20.Value = True Then
      sListe = "<20"
    End If
    If UserForm1.CheckBox3p20.Value = True Then
      sListe = ">20"
    End If
    If UserForm1.CheckBox4p25.Value = True Then
      sListe = ">25"
    End If
     
    sListe = sListe & ","
     
    With Worksheets("Liste map")
      For Each maCell In .Range("B3:B10000")
        If maCell.Value = "" Then Exit For
        If sListe Like "*," & maCell.Offset(0, 2).Value & ",*" Then
          UserForm1.comboboxmaps.AddItem .maCell.Value
     
        End If
      Next
    End With
    Si une bonne âme s'égare... toutes aide me serait utile Merci

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,


    J'ai du mal a comprendre ton code

    A quoi correspond les <10 etc qui alimente la variable sliste ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Déjà, Excel n'est pas adapté pour ce genre de truc, et tu pourrais arriver à quelque chose de chouette sans une ligne de VBA en 5 minutes avec Access...

    Cela étant, si tu persistes à vouloir le faire dans Excel, tu as intérêt à poser les bonnes bases.

    Ton système avec checkbox peut fonctionner, mais est très figé (Si tu veux ajouter une catégorie de films, tu dois ajouter un checkbox et du code => mauvaise analyse au départ).

    Voilà les jalons que je te propose:
    1. Créer une liste des catégories dans une feuille et nommer la plage
    2. Jeter tes checkbox à la poubelle
    3. Appuyer un premier combobox sur cette liste des catégories. Ainsi, tu peux ajouter autant de catégories par la suite sans modifier une ligne de code
    4. Présenter un second combobox vide au départ
    5. A la mise à jour du premier comboboc, vider le second, puis le remplir par itération sur la liste des films en n'ajoutant que ceux qui correspondent à la catégorie...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut
    Bonsoir jerome,

    En fait les <10, <20, >20 et >25 ce sont les valeur que je souhaite récupérer...
    Si je te donne mon code par rapport à l'exemple ce serais ç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
    Dim maCell As Object
    Dim sListe As String
    If UserForm1.CheckBox1m10.Value = True Then
      sListe = "policier"
    End If
    If UserForm1.CheckBox2m20.Value = True Then
      sListe = "humour"
    End If
    If UserForm1.CheckBox3p20.Value = True Then
      sListe = "S-F"
    End If
    If UserForm1.CheckBox4p25.Value = True Then
      sListe = "Aventure"
    End If
     
    sListe = sListe & ","
     
    With Worksheets("Liste map")
      For Each maCell In .Range("B3:B10000")
        If maCell.Value = "" Then Exit For
        If sListe Like "*," & maCell.Offset(0, 2).Value & ",*" Then
          UserForm1.comboboxmaps.AddItem .maCell.Value
     
        End If
      Next
    End With
    C'est vrai que c'est peut etre un peut plus compréhensible lol désolé merci de ton aide...

  5. #5
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut
    Merci Pierre,
    ça me parait pas mal aussi mais en fait ce qui me bloque c'est que je n'arrive pas à charger ma première combobox à l'aide de ma colonne B en fonction de ma colonne D...

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Dans ton cas j'éviterais de lire les 10000 première lignes amoins qu'il y ait vraiment 10000 lignes de données
    J'utiliserais une simple lecture de chaque ligne avec test de la cellule contenant la donnée a tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Do while Range("A" & i).value<>""
        'Test a effectuer
     
        i=i+1
    loop
    Penches toi sur la méthode de Pierre qui sera plus évolutive

  7. #7
    Membre confirmé Avatar de mentat
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Août 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Electrotechnicien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 139
    Par défaut
    Ok mais ce qu'il me faut c'est que la boucle continue jusqu'a ce qu'elle ne trouve plus rien...

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    1. Dans une feuille vierge, crée la liste des catégories et nomme-là (sans les titres)


    2. Crée la liste de tes films, éventuellement avec un liste de validation, dans une autre feuille


    3. nomme cette plage (sans les titres)


    Dans le module du userform, avec le combobox1 pour la catégorie et le combobox2 pour les films, place le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ComboBox1_Change()
        Dim Cellule As Range
     
        ComboBox2.Clear
        For Each Cellule In Range("tfilms").Columns(1).Cells
            If Cellule(1, 2) = ComboBox1.Text Then ComboBox2.AddItem Cellule.Value
        Next Cellule
    End Sub
    En lançant le userform, tu auras


    En rendant les plages dynamiques (les nommer avec Decaler), tu évites de boucler sur rien => règle de base: Pour attaquer le VBA, toujours se simplifier la vie en plaçant le décor avec Excel...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [XL-2007] Sélectionner une ligne à l'aide d'une ComboBox
    Par csempere dans le forum Excel
    Réponses: 2
    Dernier message: 10/05/2010, 23h52
  2. inserer une image à l'aide d'une combobox
    Par Didpa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2010, 13h00
  3. Remplir une JComboBox à l'aide d'une requête ?
    Par spl0tch dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 10/10/2007, 21h57
  4. Comment remplir un dbcombo à l'aide d'une base donnée ?
    Par eclectik dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/09/2006, 15h50
  5. Réponses: 6
    Dernier message: 09/12/2005, 11h14

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