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 :

Excel VBA ne prend pas en compte mes criteres de filtrage et aucun message d'erreur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 24
    Par défaut Excel VBA ne prend pas en compte mes criteres de filtrage et aucun message d'erreur
    Bonjour,

    J'ai cree un code pour filtrer des donnees et je n'ai aucun message d'erreur. Cependant il ne fait pas son travail car il ne prend pas en compte les criteres que je lui ai donne.
    Voici mon code :

    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
     
    Private Sub CommandButton1_Click()
    ' Get a new revision number
     
        ActiveSheet.Unprotect
     
        a = Sheets("NEW REVISION").Range("C4")
        b = Sheets("NEW REVISION").Range("E4")
     
        Sheets("COMPLETE LIST").Visible = True
        Sheets("COMPLETE LIST").Select
        ActiveSheet.Unprotect
     
    ' Refresh complete list
     
        ActiveSheet.Range("C7").AutoFilter Field:=1
        ActiveSheet.Range("D7").AutoFilter Field:=2
        ActiveSheet.Range("E7").AutoFilter Field:=3
        ActiveSheet.Range("F7").AutoFilter Field:=4
        ActiveSheet.Range("G7").AutoFilter Field:=5
        ActiveSheet.Range("H7").AutoFilter Field:=6
     
    ' Filtering
     
        Sheets("COMPLETE LIST").Select
        Dim LastLig As Long
        Dim Plage As Range
     
        With Worksheets("COMPLETE LIST")
            LastLig = .Cells(.Rows.Count, "C").End(xlUp).Row
            If LastLig >= 8 Then
                Set Plage = .Range("C8:FG" & LastLig)
                ' Suite de ton code concernant Plage (de type range)
                ActiveSheet.Range("C9:FG" & LastLig).Select
                Else
                    Set Plage = Nothing
            End If
        End With
     
        Selection.Sort Key1:=ActiveSheet.Range("H9"), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
        If a <> "" Then
            Selection.AutoFilter Field:=1, Criteria1:=a
            a = ""
        End If
     
        If b <> "" Then
            Selection.AutoFilter Field:=4, Criteria1:=b
            b = ""
        End If
     
        Selection.Sort Key1:=ActiveSheet.Range("H9"), Order1:=xlDescending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
    End Sub
    Le critere A etant du genre "T000" et le critere B etant du genre "AA". je demande a ma macro d'aller chercher ces criteres dans une autre page de travail.

    Sauriez vous pourquoi il ne l'ai prend pas en compte ?

    Amicalement

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Par défaut
    Bonjour,

    A mon humble avis le problème vient de là.

    Juste par curiosité à quoi te servent les lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ActiveSheet.Range("C7").AutoFilter Field:=1
        ActiveSheet.Range("D7").AutoFilter Field:=2
        ActiveSheet.Range("E7").AutoFilter Field:=3
        ActiveSheet.Range("F7").AutoFilter Field:=4
        ActiveSheet.Range("G7").AutoFilter Field:=5
        ActiveSheet.Range("H7").AutoFilter Field:=6

  3. #3
    Membre éprouvé
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Août 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 162
    Par défaut
    Bonjour,

    Voilà je code que j'ai pour rechercher un critère dans un filtre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CRITERE= Application.InputBox("Quel est le critère recherché ?", "CRITERE ?", Type:=1)
        Sheets("Feuil1").Select
        ActiveSheet.ListObjects("MonTableauFiltré").Range.AutoFilter Field:=1, Criteria1:=CRITERE
    Vous pouvez essayer de l'adapter à votre code ?

    Cdlt,

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 24
    Par défaut
    Les lignes de codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("C7").AutoFilter Field:=1
    me servent (comme indiquer en commentaire) a rafraichir ma liste complete.

    euh non le probleme ne vient pas de sinon j'aurai des problemes dans toutes les macro que j'utilise. C'est une simple ligne de code pour ne plus proteger la feuille.

    Pour le code que tu m'as donne j'ai du mal a le comprendre (2eme personne a m'avoir repondu)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Août 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 162
    Par défaut
    Coco.on.off,

    Mon code affiche une input box, qui est une boite de dialogue avec une barre de saisie. Je demande à l'utilisateur de la macro de saisir le critère qui sera filtré dans la macro.

    Est-il possible pour toi d'adapter mon code à ta macro ?

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2014
    Messages : 24
    Par défaut
    J'ai adapte ton code comme ceci :

    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
     
    Private Sub CommandButton1_Click()
    ' Get a new revision number
     
        'a = Sheets("NEW REVISION").Range("C4")
        'b = Sheets("NEW REVISION").Range("E4")
     
        Sheets("COMPLETE LIST").Visible = True
        Sheets("COMPLETE LIST").Select
        ActiveSheet.Unprotect
     
    ' Refresh complete list
     
        ActiveSheet.Range("C7").AutoFilter Field:=1
        ActiveSheet.Range("D7").AutoFilter Field:=2
        ActiveSheet.Range("E7").AutoFilter Field:=3
        ActiveSheet.Range("F7").AutoFilter Field:=4
        ActiveSheet.Range("G7").AutoFilter Field:=5
        ActiveSheet.Range("H7").AutoFilter Field:=6
     
    ' Filtering
     
        Sheets("COMPLETE LIST").Select
        Dim LastLig As Long
        Dim Plage As Range
     
        With Worksheets("COMPLETE LIST")
            LastLig = .Cells(.Rows.Count, "C").End(xlUp).Row
            If LastLig >= 8 Then
                Set Plage = .Range("C9:FG" & LastLig)
                ' Suite de ton code concernant Plage (de type range)
                ActiveSheet.Range("C9:FG" & LastLig).Select
                Else
                    Set Plage = Nothing
            End If
        End With
     
        Selection.Sort Key1:=ActiveSheet.Range("H9"), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
        'If a <> "" Then
            'Selection.AutoFilter Field:=1, Criteria1:=a
            'a = ""
        'End If
     
        'If b <> "" Then
            'Selection.AutoFilter Field:=4, Criteria1:=b
            'b = ""
        'End If
     
        CRITERIA = Application.InputBox("Sought Engine ?", "CRITERIA ?", Type:=1)
        Sheets("COMPLETE LIST").Select
        ActiveSheet.ListObjects("Plage").Range.AutoFilter Field:=1, Criteria1:=CRITERIA
     
        CRITERIA = Application.InputBox("Sought Document ?", "CRITERIA ?", Type:=1)
        Sheets("COMPLETE LIST").Select
        ActiveSheet.ListObjects("Plage").Range.AutoFilter Field:=4, Criteria1:=CRITERIA
     
        Selection.Sort Key1:=ActiveSheet.Range("H9"), Order1:=xlDescending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
    End Sub
    Quand j'execute mon code en debugage, et que je rentre mon premier critere dans la boite de dialogue, il me repond que mon numero n'est pas valide.
    Il me met se message d'erreur pour la ligne 53

    Amicalement

  7. #7
    Membre éprouvé
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Août 2014
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 162
    Par défaut
    Essayes avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CRITERIA = Application.InputBox("Sought Engine ?", "CRITERIA ?", Type:=2)
        Sheets("COMPLETE LIST").Select
        ActiveSheet.ListObjects("Plage").Range.AutoFilter Field:=1, Criteria1:=CRITERIA
     
        CRITERIA = Application.InputBox("Sought Document ?", "CRITERIA ?", Type:=2)
        Sheets("COMPLETE LIST").Select
        ActiveSheet.ListObjects("Plage").Range.AutoFilter Field:=4, Criteria1:=CRITERIA
    Si tu as un message d'erreur, essayes avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CRITERIA = Application.InputBox("Sought Engine ?", "CRITERIA ?")
        Sheets("COMPLETE LIST").Select
        ActiveSheet.ListObjects("Plage").Range.AutoFilter Field:=1, Criteria1:=CRITERIA
     
        CRITERIA = Application.InputBox("Sought Document ?", "CRITERIA ?")
        Sheets("COMPLETE LIST").Select
        ActiveSheet.ListObjects("Plage").Range.AutoFilter Field:=4, Criteria1:=CRITERIA
    Si tu as encore un message d'erreur, tu peux essayer avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CRITERIA = Application.InputBox("Sought Engine ?", "CRITERIA ?", Type:=0)
        Sheets("COMPLETE LIST").Select
        ActiveSheet.ListObjects("Plage").Range.AutoFilter Field:=1, Criteria1:=CRITERIA
     
        CRITERIA = Application.InputBox("Sought Document ?", "CRITERIA ?", Type:=0)
        Sheets("COMPLETE LIST").Select
        ActiveSheet.ListObjects("Plage").Range.AutoFilter Field:=4, Criteria1:=CRITERIA
    Dis nous si ça fonctionne.

Discussions similaires

  1. Dev c++ ne prends pas en compte mes modifications.
    Par Geo34 dans le forum Dev-C++
    Réponses: 1
    Dernier message: 29/03/2010, 09h37
  2. Réponses: 2
    Dernier message: 02/11/2009, 12h57
  3. IIS ne prend pas en compte mes changement de dll
    Par MAXXPER dans le forum IIS
    Réponses: 1
    Dernier message: 06/10/2008, 14h12
  4. [Info]Eclipse ne prend pas en compte mes modifs...
    Par Baptiste Wicht dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/01/2006, 17h50

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