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 :

Tri bizarre sur date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Par défaut Tri bizarre sur date
    Bonjour,

    J'aimerais trier un classeur selon la date.
    Pour cela j'ai mis en place ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim Datefin As Date
     
        Datefin = ActiveSheet.Range("G10").Value
     
        Sheets("CounterpartsStatistics").Activate
        Range("A1").Select
        Selection.AutoFilter
        Selection.AutoFilter Field:=3, Criteria1:="<=" & Datefin, _
        Operator:=xlAnd
    ou G10 est la cellule qui recoit une valeur de date entrée par l'utilisateur.
    Toutes les dates sont au format dd-mmm-yy.

    En résultat j'obtiens bien un tri mais certaines dates, qui devraient etre enlevées par tri, subsistent...

    Avez-vous une idée d'ou ce bug peut provenir ?

    Merci d'avance !

    remarque: mes dates sont au format dd-mmm-yy. Le bug viendrait-il d'ici? sachant que quand je fais le tri/filtre manuellement ca marche comme il faut...

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Vérifie, sur tes dates "bizarres" qu'elles n'aient pas un espace indésirable...
    Sinon je ne vois pas.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Par défaut
    Ok merci je vais voir ca.

    ps: c'est le tri qui est bizarre lol

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut jeo13

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim Datefin As Date
        Datefin = ActiveSheet.Range("G10").Value
        Sheets("CounterpartsStatistics").Activate
        ActiveSheet.AutoFilterMode = False 'désactive l'autofiltre s'il y est
        Range("A1").AutoFilter
        Selection.AutoFilter Field:=3, Criteria1:="<=" & Datefin, _
        Operator:=xlAnd
    En résultat j'obtiens bien un tri mais certaines dates, qui devraient etre enlevées par tri, subsistent...
    repére une cellule qui devrait disparaître pour un G10 donné
    - tu copies dessus le format d'une cellule qui marche
    Si ça ne fonctionne pas, retape la date à la main.
    Le problème avec les date, c'est qu'on utilise la partie entière du nombre, et si il a une fraction de centième, dans la partie tronquée, il devient supérieur à la date visible et cest valable pour G10
    tu peux essayer de remplacer :
    Datefin = ActiveSheet.Range("G10")
    par
    Datefin = int(Range("G10"))
    A+

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello Gorfael,
    Encadre les citations des balises QUOTE et /QUOTE entre crochets, pas G, QUOTE.
    Icône Pièce jointe 27512 en mode d'édition

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    193
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 193
    Par défaut
    C'est bon ca fonctionne.
    En fait j'ai fait autrement:

    Dans la cellule G10, en imposant un format mm/dd/yyyy (et non pas dd-mmm-yy), ca fonctionne comme il faut.

    J'ai testé aussi
    Datefin = int(Range("G10"))
    Et ca fonctionne aussi!

    Merci !

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ok, alors c'est parce qu'un tri sur les dates range ces dates selon le premier caractère rencontré. Dans le format jj/mm/aaaa, le premier caractère est le jour. Et le 19 mai est avant le 20 janvier.
    Pour éviter ça et conserver le format, avant le tri tu mets ta colonne en format numérique et après le tri tu la remets au format voulu.
    Le passage en format numérique transforme les dates en N° de série qui eux sont triés dans le bon ordre.
    A toutes fins utiles

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

Discussions similaires

  1. [AC-2007] tri bizarre sur un champ converti
    Par tibofo dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 15/09/2009, 23h18
  2. Possibilité d'un Tri 'bizarre' sur fichier txt
    Par Fung999 dans le forum Langage
    Réponses: 7
    Dernier message: 13/01/2009, 10h15
  3. [MySQL 5] Double tri sur date et time
    Par titoine1978 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/06/2006, 19h46
  4. requete avec tri sur date erronée
    Par olivll dans le forum Access
    Réponses: 11
    Dernier message: 20/10/2005, 15h45
  5. [Interbase 6] tri sur date et SQL
    Par Yogy dans le forum InterBase
    Réponses: 6
    Dernier message: 21/06/2005, 09h15

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