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 :

AutoFilter avec critères = #Valeur!


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Par défaut AutoFilter avec critères = #Valeur!
    Bonjour,

    J'ai enregistré une macro qui permet de filtrer sur #Valeur!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFilter Field:=20, Criteria1:="#VALEUR!"
    Quand je place ce code le résultat me donne aucune valeur, alors que si je fais le filtre manuellement excel me filtre bien sur les cellules contenant #VALEUR!

    Que faut-il coder en Criteria1 ?

    Merci de votre aide car je bloque et je ne trouve rien sur le net

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    Quand tu codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFilter Field:=20, Criteria1:="#VALEUR!"
    As-tu une Sélection, au départ ?, prends-tu la bonne colonne, exemple, si ta plage est de R à T (T est pourtant la colonne 20), 10 lignes à filtrer, je traduis par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Range("R1:T10").AutoFilter Field:=3, Criteria1:="#VALEUR!"
    dans ce cas, Field est à 3 (3ème colonne de la sélection), à voir........
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Par défaut
    Bonjour,

    Je suis bien dans la bonne colonne. D'ailleurs, quand je vais en manuel dans la colonne et que je fais personnalisation, dans le champs critère j'ai bien #VALEUR! Si je clique sur OK, le filtre fonctionne.

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    J'en déduis que ta sélection commence en colonne A, plutôt que mettre :
    , mets directement la plage concernée et fais attention à "Field", comme je l'ai dit avant,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1:T10").AutoFilter Field:=20
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B1:T10").AutoFilter Field:=19
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C1:T10").AutoFilter Field:=18
    voire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C1:V10").AutoFilter Field:=20
    Excuses-moi d'insister car je ne vois pas le problème
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    je pense tenir le problème mais j'arrive à créer différentes erreurs dans la feuille mais pas #VALEUR !

    Une formule pour créer cette erreur ? Merci …

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour Marc,

    au hasard, dans les 2 cellules précédentes de la même ligne, mets des lettres et pour "Valeur mets une division de ces 2 cellules, tu obtiendras "#Valeur"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Par défaut
    Lorsque je lance mon code en mettant une valeur, cela fonctionne ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFilter Field:=20, Criteria1:="=2013"
    J'obtiens bien dans ma colonne 20 toutes les cellules contenant 2013.

    Je change uniquement le critère, pour avoir les cellules contenant #VALEUR!, je relance la macro et cela ne fonctionne pas, je n'ai pas les cellules contenant #VALEUR! :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.AutoFilter Field:=20, Criteria1:="=#VALEUR!"
    Je passe sous excel, je vais dans ma colonne 20, je filtre sur #VALEUR! et cela fonctionne

    Pour obtenir #VALEUR!, recherche d'un caractére qui n'existe pas dans une cellule.


  8. #8
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Méa Culpa, je n'avais pas testé, ne connaissant pas la raison, je te propose cette solution, si les autres cellules ont également des formules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cells.SpecialCells(xlCellTypeFormulas).EntireRow.Hidden = True
    Cells.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Hidden = False
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Non, la santé mentale de cjo78 n'est pas à mettre en doute, je reproduis bien son problème dans la version 2003 !
    Si d'autres peuvent tester dans les versions ultérieures car il me semble que ce soit un dysfonctionnement ponctuel,
    bref un bug quoi !

    Car je le reproduis aussi avec une autre erreur ne fonctionnant déjà pas en filtre manuel !

    Je confirme si un filtre est déjà activé dans la feuille de calcul,
    Selection.AutoFilter quelque soit la plage de cellules sélectionnée fonctionne bien …
    … mais déclenchera une erreur dans le cas contraire ou si la sélection n'est pas une cellule !

    Ma piste n'a rien donné mais a été quand même utile par la suite.
    Une cellule en erreur correspond à un numéro d'erreur mais hélas impossible à passer dans le filtre, en tout cas en version 2003 …
    L'astuce consiste alors à récupérer ce numéro d'erreur en sélectionnant une cellule en erreur dans la feuille de calcul
    puis dans la fenêtre Exécution de l'environnement VBA taper ? activecell puis valider …

    Mon code est peut-être bien de la bidouille mais a le mérite d'obtenir le résultat escompté !
    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
    Function SpecCells(SCV As XlSpecialCellsValue, Optional Rg As Range) As Range
        Dim Rc As Range, Rf As Range
     
        If Rg Is Nothing Then Set Rg = ActiveSheet.UsedRange
        On Error Resume Next
        Set Rc = Rg.SpecialCells(xlCellTypeConstants, SCV)
        Set Rf = Rg.SpecialCells(xlCellTypeFormulas, SCV)
     
        If Not Rc Is Nothing And Not Rf Is Nothing Then Set SpecCells = Union(Rc, Rf) _
                                                   Else Set SpecCells = IIf(Rf Is Nothing, Rc, Rf)
     
        Set Rc = Nothing:  Set Rf = Nothing:  Set Rg = Nothing
    End Function
     
     
    Sub Demo()
        Dim Cel As Range, Rg As Range
     
        COL& = 1
        [H1:H10].AutoFilter COL, "#VALEUR!"
     
        With ActiveSheet.AutoFilter
            Select Case .Filters(COL).Criteria1
                   Case "=#NOM?"
                        V = CVErr(2029)
     
                   Case "=#VALEUR!"
                        V = CVErr(2015)
            End Select
     
            If IsError(V) Then
                Set Rg = SpecCells(xlErrors, .Range.Columns(COL))
     
                If Not Rg Is Nothing Then
                    Application.ScreenUpdating = False
     
                    For Each Cel In Rg
                        If Cel.Value = V Then Rows(Cel.Row).Hidden = False
                    Next
                                        Set Rg = Nothing
                    Application.ScreenUpdating = True
                End If
            End If
        End With
    End Sub
    Afin d'accélérer la procédure Demo, seules les cellules en erreur sont traitées.
    Adapter les lignes n°19 & 20 pour la colonne du filtre et sa plage …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    __________________________________________________________________________________________
    Quand une femme offre son soutien, est-ce par sein-pathie ?!

Discussions similaires

  1. Extraire valeur unique avec critère
    Par fdthierry dans le forum Excel
    Réponses: 1
    Dernier message: 03/05/2013, 13h59
  2. [AC-2003] Requête état avec critère = valeur d'une zone de liste d'un sous formulaire
    Par lio33 dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 12/10/2009, 11h45
  3. compte valeur avec critère sur autre colonne
    Par NATOU2 dans le forum Excel
    Réponses: 3
    Dernier message: 28/01/2008, 11h02
  4. autofilter avec 3 critères
    Par passicon dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/11/2007, 17h48
  5. Requête avec critère entre deux valeurs
    Par adrien.gendre dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/08/2007, 12h21

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