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 avec filtre qui marche une fois sur deux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut Recherche avec filtre qui marche une fois sur deux
    j'ai un code pour filtrer en fonction de la valeur de la cellule active .mais il n'y a rien a faire ca ne marche pas
    je ne comprends pas pourquoi .je n'en peux plus là avec ce code
    merci pour votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub rech_filtre()
    col_num = ActiveCell.Column: col_s = Split(ActiveCell.Address, "$")(1)
    val_rech = ActiveCell.Value
    dern = Range(col_s & "65536").End(xlUp).Row
    Set plage = Range(col_s & "2", col_s & dern
    Range("w" & "2", col_s & dern).AutoFilter Field:=col_num, Criteria1:="=" & UCase(val_rech)
    End Sub

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Connais-tu la syntaxe Cells ? Cela t'évitera de devoir avoir 2 variables pour la colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    '--- syntaxe de Cells : ---
    Cells(num_ligne, num_colonne)
    '--- tu peux donc l'utiliser ainsi : ---
    col_num = ActiveCell.Column
    dern = Cells(Rows.Count, col_num).End(xlUp).Row
    Du coup, pour sélectionner une plage de cellules, tu peux faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = Range(Cells(2, col_num), Cells(dern, col_num))
    Le UCase n'est pas vraiment nécessaire.
    Pourquoi "w" & "2" et pas "w2" ?
    Ta plage ne commence-t-elle pas en colonne A ? Pourquoi tu commences en colonne W ? Après Field, il faut mettre le n° de champ que tu veux filtrer. Si ta plage va de la colonne C à F, et que tu veux filtrer sur la colonne C, alors le n° de champ est 1 et pas 3.
    Ta colonne est bien après la colonne W, du coup ?
    Tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(2, 23), Cells(dern, col_num)).AutoFilter Field:=col_num - 23 + 1, Criteria1:=val_rech, Operator:=xlAnd

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    merci .j'ai suivi votre méthode avec ce code
    et je voudrais filtrer v173 qui correspond a ma cellule active avec comme colonne field 1
    mais ca m'affiche pas les 4 lignes avec v173 (ligne 79,82 a 84)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub rech_filtre()
    col_num = ActiveCell.Column
    dern = Cells(Rows.Count, col_num).End(xlUp).Row
    Set plage = Range(Cells(2, col_num), Cells(dern, col_num))
    Range(Cells(dern, col_num), Cells(2, 5)).Select
    Range(Cells(dern, col_num), Cells(2, 5)).AutoFilter Field:=1, Criteria1:=val_rech, Operator:=xlAnd
    End Sub
    Nom : 0img89.jpg
Affichages : 226
Taille : 104,0 Ko

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Attention, dans le code que tu donnes, il y a plusieurs problèmes :
    1. Tu écris Criteria1:=val_rech, mais tu ne dis pas auparavant ce que vaut val_rech
    2. Tu mets le filtre sur la plage suivante : Range(Cells(dern, col_num), Cells(2, 5)). Mais ton filtre doit se faire sut TOUT le tableau. Par contre, le critère s'effectue sur un seul champ/une seule colonne.
    3. Ces deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set plage = Range(Cells(2, col_num), Cells(dern, col_num))
    Range(Cells(dern, col_num), Cells(2, 5)).Select
    ne servent à rien. Tu définis une plage plage, mais tu ne l'utilises pas ensuite. Et ça ne sert à rien de sélectionner la plage avant d'effectuer le filtre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub rech_filtre()
        val_rech = ActiveCell.Value
        dern = Cells(Rows.Count, 1).End(xlUp).Row
        Range(Cells(1, 1), Cells(dern, 10)).AutoFilter Field:=1, Criteria1:=val_rech, Operator:=xlAnd
    End Sub
    Ici, j'ai supposé que ton tableau s'étend de la colonne A (n°1) à la colonne J (n°10)

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    merci pour ta réponse très pertinente.oui ca marche maintenant par contre
    1-ca ferais quoi si le filtre n'est pas sut TOUT le tableau.
    2-c'est quoi la différence avec le critère s'effectue sur un seul champ/une seule colonne?

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    En fait, par défaut, ça le fait sur tout le tableau.
    Champ et colonne sont la même chose ici. C'est juste que dans la syntaxe de filtre, il y a "Field" ce qui veut dire champ, mais au final on filtre sur une colonne ...

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/10/2011, 10h14
  2. Pb de requête qui marche une fois sur deux
    Par emulamateur dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/04/2011, 16h45
  3. NamedQuery qui marche une fois sur deux
    Par Damascus06 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 06/12/2010, 15h41
  4. Erreur ASP : le test qui marche une fois sur 2 !
    Par Ryo_san dans le forum ASP
    Réponses: 2
    Dernier message: 04/07/2006, 09h47
  5. Pb : malloc qui marche une fois sur deux .... ?
    Par guillaume_pfr dans le forum C
    Réponses: 14
    Dernier message: 21/07/2003, 09h52

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