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 :

Filtre générique ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Par défaut Filtre générique ?
    Bonjour le forum, j'ai un code assez long qui concerne des checkbox, chaque checkbox active un filtre sur sur la colonne 1 ou 2. Du coup, je me suis embêté à cherché toutes les possibilités ... Je me demandais s'il était possible de créer un filtre générique, qui permettrait en fonction de la checkbox sélectionnée d'activé le filtre.
    Voic i le code que j'ai créer :
    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
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    Private Sub Filtre_Horiz()
        If btAcier = True Then
            Call Acier1
                If CheckAcier = True Then
                Call Acier2
                End If
     
        ElseIf BtAss = True Then
            Call Ass
                If CheckPVC = True Then
                Call PVC
                    If CheckFourreaux = True Then
                    Call PVC_Fourreaux
                        If CheckDrainage = True Then
                        Call PVC_Fourreaux_Drainage
                        End If
                    ElseIf CheckDrainage = True Then
                    Call PVC_Drainage
                    End If
                ElseIf CheckFourreaux = True Then
                Call Fourreaux
                    If CheckDrainage = True Then
                    Call Fourreaux_Drainage
                    End If
                ElseIf CheckDrainage = True Then
                Call Drainage
                End If
     
        ElseIf btAutresMtx = True Then
            Call AutresMtx
                If CheckFourn = True Then
                Call Fourn
                    If CheckEtai = True Then
                    Call Fourn_Etai
                        If CheckVisserie = True Then
                        Call Fourn_Etai_Visserie
                        End If
                    ElseIf CheckVisserie = True Then
                    Call Fourn_Visserie
                    End If
                ElseIf CheckEtai = True Then
                Call Etai
                    If CheckVisserie = True Then
                    Call Etai_Visserie
                    End If
                ElseIf CheckVisserie = True Then
                Call Visserie
                End If
     
        ElseIf btBéton = True Then
            Call Béton1
                If CheckAgrégats = True Then
                Call Agrégats
                    If CheckBéton = True Then
                    Call Agrégats_Béton2
                        If CheckCiment = True Then
                        Call Agrégats_Béton2_Ciment
                        End If
                    ElseIf CheckCiment = True Then
                    Call Agrégats_Ciment
                    End If
                ElseIf CheckBéton = True Then
                Call Béton2
                    If CheckCiment = True Then
                    Call Béton2_Ciment
                    End If
                ElseIf CheckCiment = True Then
                Call Ciment
                End If
     
        ElseIf btBois = True Then
            Call Bois1
                If CheckBois = True Then
                Call Bois2
                End If
     
        ElseIf BtCloison = True Then
            Call Cloison1
                If CheckCloison = True Then
                Call Cloison2
                End If
     
        ElseIf btIsolants = True Then
            Call Isolants1
                If CheckIsolants = True Then
                Call Isolants2
                End If
     
        ElseIf btPMB = True Then
            Call PMB
                If CheckBC = True Then
                Call BC
                    If CheckMaçonnerie = True Then
                    Call BC_Maçonnerie1
                        If CheckHourdis = True Then
                        Call BC_Maçonnerie1_Hourdis
                            If CheckEltsPréfa = True Then
                            Call BC_Maçonnerie1_Hourdis_EltsPréfa
                            End If
                        ElseIf CheckEltsPréfa = True Then
                        Call BC_Maçonnerie1_EltsPréfa
                        End If
                    ElseIf CheckHourdis = True Then
                    Call BC_Hourdis
                        If CheckEltsPréfa = True Then
                        Call BC_Hourdis_EltsPréfa
                        End If
                    ElseIf CheckEltsPréfa = True Then
                    Call BC_EltsPréfa
                    End If
                ElseIf CheckMaçonnerie = True Then
                Call Maçonnerie1
                    If CheckHourdis = True Then
                    Call Maçonnerie1_Hourdis
                        If CheckEltsPréfa = True Then
                        Call Maçonnerie1_Hourdis_EltsPréfa
                        End If
                    ElseIf CheckEltsPréfa = True Then
                    Call Maçonnerie1_EltsPréfa
                    End If
                ElseIf CheckHourdis = True Then
                Call Hourdis
                    If CheckEltsPréfa = True Then
                    Call Hourdis_EltsPréfa
                    End If
                ElseIf CheckEltsPréfa = True Then
                Call EltsPréfa
                End If
     
        ElseIf BtToiture = True Then
            Call Toiture1
                If CheckChem = True Then
                Call Cheminée
                    If CheckEcran = True Then
                    Call Cheminée_Ecran
                        If CheckTuiles = True Then
                        Call Cheminée_Ecran_Tuiles
                        End If
                    ElseIf CheckTuiles = True Then
                    Call Cheminée_Tuiles
                    End If
                ElseIf CheckEcran = True Then
                Call Ecran
                    If CheckTuiles = True Then
                    Call Ecran_Tuiles
                    End If
                ElseIf CheckTuiles = True Then
                Call Tuiles
                End If
     
        End If
     
    End Sub

    Les checkbox activent par exemple ce type de filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Ass()
        ActiveSheet.Range("$A$6:$B$500").AutoFilter Field:=1, Criteria1:="ASSAINISSEMENT"
    End Sub
     
    Sub PVC()
        ActiveSheet.Range("$A$6:$B$500").AutoFilter Field:=1, Criteria1:="ASSAINISSEMENT"
        ActiveSheet.Range("$A$6:$B$500").AutoFilter Field:=2, Criteria1:="CANALISATION"
    End Sub

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Sans le classeur ça va être difficile de comprendre.
    Tu pourrais mettre un exemple en pièce jointe ?
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Par défaut
    Bonjour,
    Voici le programme et le fichier qui va avec j'èspère ne pas l'avoir trop épuré
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Par défaut
    pourquoi tu utilise do while()....loop a la place d'un simple while()... wend ou do...loop until() ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Par défaut
    Pour tout de dire ce code sur les doublons je l'ai trouver sur le forum

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 41
    Par défaut
    d'après ce que je voi tes filtre ne diffère que par le critère, si tu remplace ce critère par le caption de la checkbox coché ca pourrai ptete te simplifier le traitement

    pour les boucle c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while(condition d'entrée)-> tant que()
     
    wend
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    do->faire
     
    loop until(condition de sortie)->jusqu'a()

Discussions similaires

  1. Algorithme d'un filtre ?
    Par Vince78 dans le forum Algorithmes et structures de données
    Réponses: 17
    Dernier message: 04/09/2002, 15h54
  2. recherche filtre flou gaussien
    Par gimlithedwarf dans le forum Langage
    Réponses: 4
    Dernier message: 01/08/2002, 22h32
  3. TADOTable et filtre
    Par GaL dans le forum C++Builder
    Réponses: 16
    Dernier message: 02/07/2002, 16h52
  4. Filtre passe Bande
    Par Mau dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 28/06/2002, 17h03
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

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