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 :

Problème avec macro filtre avancé [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2013
    Messages : 55
    Par défaut Problème avec macro filtre avancé
    bonjour et bon dimanche au forum

    j'ai repris le code ci-dessous sur ce site, pour l'adapter à mon cas, mais le résultat n'est pas à la hauteur de mes espoirs de novice:
    -je filtre sur la colonne N de la feuille 3
    -AreaCriteria se remplit correctement
    -quelque soit les valeurs de resize, je n'obtiens que ma ligne de titres de colonnes


    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
        Dim AreaSource As Range, AreaTarget As Range, AreaCriteria As Range, LastRow As Long
        Dim MyFormula As String
     
    With ThisWorkbook
        Set AreaSource = .Sheets(3).Range("B1:N" & Rows.Count)    '.CurrentRegion
        Set AreaTarget = .Sheets(4).Range("A1").CurrentRegion
        MyFormula = ">31/12/1999"
    End With
     
    With AreaSource: Set AreaCriteria = .Offset(0, .Columns.Count).Resize(2, 13): End With
    With AreaCriteria: .Cells(1) = "Dat_†=48": .Cells(2, 1).Formula = MyFormula: End With
    With AreaTarget ' Exportation des lignes répondant au critères
      AreaSource.AdvancedFilter Action:=xlFilterCopy, Criteriarange:=AreaCriteria, copytorange:=.Offset(.Rows.Count).Resize(1, 1)
    End With
     
     ' Suppressions
    AreaCriteria.Clear ' Suppression de la zone des critères
    si vous pouviez aider l'âne bâté que je suis, mon dimanche paraîtrait moins triste (hi)

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Suivant la version d'Excel , il faut que les dates soient en jj/mm/aa ou mm/jj/aa.
    A partir d'Excel 2007, si l'extraction est activée par VBA, il faut que la date soit sous la forme mm/jj/aa.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub CommandButton1_Click()
      If Val(Application.Version) >= 12 Then
        [G2] = ">=" & Format(TextBox1, "mm/dd/yyyy")
        [H2] = "<=" & Format(TextBox2, "mm/dd/yyyy")
      Else
        [G2] = ">=" & TextBox1
        [H2] = "<=" & TextBox2
      End If
      [A1:E1000].AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[G1:H2], CopyToRange:=[G6:K6]
    End Sub

    La version en PJ est compatible 2000-2007-2010. Les dates sont affichées au format Français jj/mm/aa.


    Jacques Boisgontier

  3. #3
    Membre confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Août 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2013
    Messages : 55
    Par défaut
    @ boisgontierjacques, un grand merci
    honnetement le code de ton post me fut sibyllin, mais pas le fichier joint
    problème résolu

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Excel, dans les versions récentes, exige dans la zone de critères, le format de date anglais (Etats-Unis) "mm/dd/yyyy" ou le format de date international "YYYY/mm/dd".

    Dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(TextBox1, "mm/dd/yyyy")
    Le fait d'inverser de changer dd/mm en mm/dd fonctionne, le mois se retrouvant en premier comme attendu, mais présente le problème d'afficher 11/02/2013 au lieu de 02/11/2013, ce qui engendre confusion.

    Mieux vaut à mon sens utiliser le format international "YYYY/mm/dd" qui lui ne prête pas à confusion.

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Excel, dans les versions récentes, exige dans la zone de critères, le format de date anglais (Etats-Unis) "mm/dd/yyyy" ou le format de date international "YYYY/mm/dd".
    Pas avec la méthode mentionnée en pj (critère formule)

    Jacques Boisgontier

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Tu as raison, en utilisant une formule, le problème ne se pose pas car la date doit être au format jj/mm/aaaa.

    Mais je ne suis pas très formule. Je suis plutôt porté à utiliser l'enregistreur de macro.

    Et je viens de voir que le Filtre avancé ne fonctionne pas de la même façon s'il est exécuté manuellement ou par macro.

    Si j'exécute manuellement un Filtre avancé
    et que j'entre comme critère >=02/10/1960
    le résultat est bon.

    Par contre, si j'enregistre la macro et que je l'exécute, elle ne donne plus le résultat attendu.
    Pour exécuter le même Filtre avancé par macro, je dois
    entrer comme critère >=10/02/1960 au lieu de >=02/10/1960
    et ce qui s'affiche dans la zone critère est 10/02/1960 au lieu de la date 02/10/1960 que je cherche.

    C'est pourquoi, si je ne veux pas voir s'afficher dans la zone de critère 10/02/1960 au lieu de 02/10/1960
    je vais utiliser le format de date international 1960/10/02.

    Docmarti

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

Discussions similaires

  1. probléme avec le filtre
    Par lila23 dans le forum Débuter
    Réponses: 6
    Dernier message: 31/03/2009, 10h02
  2. Problème avec macro variables
    Par auredura dans le forum Macro
    Réponses: 8
    Dernier message: 17/11/2008, 16h30
  3. Problème avec le filtre de RichFaces
    Par denisdevdg dans le forum JSF
    Réponses: 2
    Dernier message: 18/01/2008, 18h49
  4. [JDOM] Problème avec les filtres
    Par Djay_jee dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 09/03/2007, 17h59
  5. Problème avec des REXEXP Avancées
    Par chicorico dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 01/12/2006, 16h25

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