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 :

Recherche conditionnelle avec checkbox


Sujet :

Macros et VBA Excel

  1. #1
    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 Recherche conditionnelle avec checkbox
    Re-bonjour a tous

    Mon probleme avec Outlook étant réglé, je reviens vers vous pour un petit souci de recherche...

    Soit sur un feuille excel :

    Nom / Produit1 / Produit2 / Produit3 / etc...

    Dupond / oui / non / oui / etc...
    Maurice / non / non / oui / etc...
    Alex / oui / oui / non / etc...

    J'ai 24 produits en tout. Sur un Userform, j'ai 24 checkbox (une par produit) et je souhaite faire une recherche on fonction des produits qu'ont les clients.

    Exemple:

    Je cherche par exemple tous les clients qui ont le produit1 ET le produit2 ET le produit 17... Je clique donc sur les checkbox relatives aux produits et je veux en cliquant sur un bouton "Recherche" qu'il m'affiche les résultats dans une listbox.

    L'affichage dans la listbox n'est pas un problème, le problème c'est la fonction de recherche en fonction des checkbox qui sont cochées !

    Je pourrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If   ....   and   .....   and ....  then
    , et le faire pour chaque possibilité, mais ..... 2 puissance 25 possibilités je crois....

    Quelqu'un aurait-il une solution ?

    (J'espere que j'ai été clair ...)

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Bonjour
    Pour contourner le problème il faut tout d'abord "Setter" tes checkbox
    C'est à dire
    Dans un module tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim choix(24) as checkbox
    Set Choix(1)=checkbox1
    Set Choix(2)=checkbox2)
    ...
    Set Choix(24=checkbox24
    Ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ligne=1 'je suppose
    Do 
      For I = 2 to 25
         If cells(I,ligne)="Oui" and choix(i).value=false then
              exit for
         elseif cells(I,ligne)="Non" and choix(i)=true then 
              exit for
         end if
      next
    ta procédure pour mettre dans ta listbox
    ligne=ligne+1
    loop while...
    A l'attention de tous, merci de m'expliquer comment insérer une fenêtre de code (ce serait plus simple pour moi)
    A+

  3. #3
    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
    Merci bien chef, je regarde tout ça cet apres midi et te retiens au courant.

    Merci encore (beaucoup).

  4. #4
    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
    Bon j'ai essayé de "Setter" comme tu dis, mais j'ai une erreur sur la ligne 2:
    (Déclaration existante dans la portée en cours)

    (Surement que je fais ca mal !)

    J'ai essayé de faire comme tu m'as dit :

    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
    Dim choix(1) As CheckBox
    Dim choix(2) As CheckBox
    Dim choix(3) As CheckBox
    Dim choix(4) As CheckBox
    Dim choix(5) As CheckBox
    Dim choix(6) As CheckBox
    Dim choix(7) As CheckBox
    Dim choix(8) As CheckBox
    Dim choix(9) As CheckBox
    Dim choix(10) As CheckBox
    Dim choix(11) As CheckBox
    Dim choix(12) As CheckBox
    Dim choix(13) As CheckBox
    Dim choix(14) As CheckBox
    Dim choix(15) As CheckBox
    Dim choix(16) As CheckBox
    Dim choix(17) As CheckBox
    Dim choix(18) As CheckBox
    Dim choix(19) As CheckBox
    Dim choix(20) As CheckBox
    Dim choix(21) As CheckBox
    Dim choix(22) As CheckBox
    Dim choix(23) As CheckBox
    Dim choix(24) As CheckBox
     
    Set choix(1) = CheckBox1
    Set choix(2) = CheckBox2
    Set choix(3) = CheckBox3
    Set choix(4) = CheckBox4
    Set choix(5) = CheckBox5
    Set choix(6) = CheckBox6
    Set choix(7) = CheckBox7
    Set choix(8) = CheckBox8
    Set choix(9) = CheckBox9
    Set choix(10) = CheckBox10
    Set choix(11) = CheckBox11
    Set choix(12) = CheckBox12
    Set choix(13) = CheckBox13
    Set choix(14) = CheckBox14
    Set choix(15) = CheckBox15
    Set choix(16) = CheckBox16
    Set choix(17) = CheckBox17
    Set choix(18) = CheckBox18
    Set choix(19) = CheckBox19
    Set choix(20) = CheckBox20
    Set choix(21) = CheckBox21
    Set choix(22) = CheckBox22
    Set choix(23) = CheckBox23
    Set choix(24) = CheckBox24
    c'est bien ça ? Cette partie de code, je la met dans ma macro ou faut il la déclarer ailleurs....? J'avoue que je suis un ti peu perdu...

    Je n'ai pas pu tester l'autre partie du code pour le moment, vu que ca "crotte" au début

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Bonjour
    Tu as fait du zèle
    Je vais être un peu plus clair
    Dans un module, hors procédure, à la première ligne c'est très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public choix(24) as checkbox 'tu défini un tableau 24 lignes une fois pour toute
    set choix(1) as checkbox1 'tu associes ta checkbox à une variable
    set choix(2) as checkbox2 'etc
    L'erreur générée par VB est normale, tu as voulu redéfinir ta variable choix déjà définie à la première ligne
    Le code peut être inséré dans ta procédure aussi comme je te l'avais indiqué au début, l'avantage dasn cette solution est que tes variables pourront être utilisées à n'importe quel endroit et dans n'importe quelle procédure
    Slts

  6. #6
    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
    Je suis vraiment désolé de faire le gros lourd débutant.... mais ca marche pas

    J'ai créé un nouveau module dans lequel j'ai mis ce que tu m'a dit, et quand je charge le Useform, ca me donne ceci :



    Moi pas comprendre... si tu pouvais me donner la procedure texto... peut etre on avancerais plus vite ? (Du moins je te ferais moins perdre de temps )

    So sorry....

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Excuse moi
    L'erreur vient de moi cette fois
    Le Dim se met soit dans la procédure soit à l'extérieur mais en Public dans ce cas
    Les Set se mettent dans la procédure
    Sorry

  8. #8
    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
    Bon.....

    J'ai mis dans un nouveau module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public choix(24) As CheckBox 'tu défini un tableau 24 lignes
    Ensuite dans le code de mon bouton, j'ai mis cela :

    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
    Private Sub CommandButton3_Click()
     
    Set choix(1) = CheckBox1
    Set choix(2) = CheckBox2
    Set choix(3) = CheckBox3
    Set choix(4) = CheckBox4
    Set choix(5) = CheckBox5
    Set choix(6) = CheckBox6
    Set choix(7) = CheckBox7
    Set choix(8) = CheckBox8
    Set choix(9) = CheckBox9
    Set choix(10) = CheckBox10
    Set choix(11) = CheckBox11
    Set choix(12) = CheckBox12
    Set choix(13) = CheckBox13
    Set choix(14) = CheckBox14
    Set choix(15) = CheckBox15
    Set choix(16) = CheckBox16
    Set choix(17) = CheckBox17
    Set choix(18) = CheckBox18
    Set choix(19) = CheckBox19
    Set choix(20) = CheckBox20
    Set choix(21) = CheckBox21
    Set choix(22) = CheckBox22
    Set choix(23) = CheckBox23
    Set choix(24) = CheckBox24
     
    'suite de la procédure....
     
    End sub
    Et quand j'actionne mon bouton, il me met cette erreur :

    ( Erreur d'execution '13' : Incompatibilité de type ) sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set choix(1) = CheckBox1


    Une idée ? Peut-etre n'ai je toujours pas compris....

  9. #9
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    On va y arriver
    Tu fais juste
    Je vérifié, ça marche
    Slts

  10. #10
    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
    Bon, je dois être vraiment naze, alors voici mon fichier :
    http://guillaumedhy.zevillage.org/files/CVtheque.xls

    Peut-être qu'on avancera un peu mieux comme ça...

  11. #11
    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


    Mille fois merci ! T'es un chef !

    Ca fonctionne parfaitement et c'est pile poil ce que je souhaitais !

    Je remets le code final pour ceux que cela pourrait interesser :

    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
    Private Sub CommandButton3_Click()
     
    Dim Ligne As Integer
    Const Premiere_Col = 3
    Dim Test As Boolean
     
    Set choix(1) = CheckBox1
    Set choix(2) = CheckBox2
    Set choix(3) = CheckBox3
    Set choix(4) = CheckBox4
    Set choix(5) = CheckBox5
    Set choix(6) = CheckBox6
    Set choix(7) = CheckBox7
    Set choix(8) = CheckBox8
    Set choix(9) = CheckBox9
    Set choix(10) = CheckBox10
    Set choix(11) = CheckBox11
    Set choix(12) = CheckBox12
    Set choix(13) = CheckBox13
    Set choix(14) = CheckBox14
    Set choix(15) = CheckBox15
    Set choix(16) = CheckBox16
    Set choix(17) = CheckBox17
    Set choix(18) = CheckBox18
    Set choix(19) = CheckBox19
    Set choix(20) = CheckBox20
    Set choix(21) = CheckBox21
    Set choix(22) = CheckBox22
    Set choix(23) = CheckBox23
    Set choix(24) = CheckBox24
     
    Dim c As String
    c = 0
     
    Ligne = 3 'première ligne de recherche
    ListBox2.Clear
     
    Do
        Test = True
        For i = Premiere_Col To Premiere_Col + 23
            If LCase(Cells(Ligne, i)) <> "oui" And choix(i + 1 - Premiere_Col).Value = True Then
                Test = False
                Exit For
            End If
        Next
        If Test = True Then
            ListBox2.AddItem
            ListBox2.Column(0, c) = Range("A" & Ligne).Value
            ListBox2.Column(1, c) = Range("B" & Ligne).Value
            c = c + 1
        End If
        Ligne = Ligne + 1
    Loop While Not IsEmpty(Cells(2, Ligne)) 'boucle tant que la colonne Nom est pleine
    End Sub
    Ne pas oublier dans un autre module :

    Je ne le dirais jamais assez : MERCI !

    Au dela de l'apero, ce que tu m'a fourni vaut bien un resto
    Mais bon... en attendant.... santé !

    Merci

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

Discussions similaires

  1. tri de recherche multicritère avec bouton checkbox
    Par solofoniaina alain p dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/11/2010, 19h40
  2. recherche d'une combobox avec checkbox
    Par thor76160 dans le forum C#
    Réponses: 17
    Dernier message: 12/08/2010, 15h44
  3. displaytag avec checkbox, choix rechercher dans le bean
    Par jayjaypg22 dans le forum Struts 1
    Réponses: 1
    Dernier message: 02/03/2010, 13h32
  4. Recherche avancée avec checkbox
    Par Marcus15 dans le forum Langage
    Réponses: 6
    Dernier message: 05/07/2007, 18h15
  5. Recherche SelectBox avec Checkbox pour multiselection
    Par yousky dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 08/03/2007, 10h27

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