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 :

Probleme application du filtre avancé sur les dates en format texte [XL-MAC 2011]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Osteopathe
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Osteopathe
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut Probleme application du filtre avancé sur les dates en format texte
    Bonjour,

    J'ai reussi non sans mal à créer un code pour filtrer ma base de donnée en fonction du nom de mon patient.

    Je cherche maintenant à séparer les données en fonction de l'année sachant que la collone reprenant cette donnée respecte la structure:

    2013-01-31 en format texte

    je me dit que le plus simple serait d'appliquer un filtre qui recherche 2012,2013, ect dans la cellule au lieu d'essayer de convertir le format imposé par ma base de donnée.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Ben tu utilise la même méthode filtre avancé ... avec comme critère si ta colonne A est la date :



  3. #3
    Membre à l'essai
    Homme Profil pro
    Osteopathe
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Osteopathe
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    C'est exactement ce que j'ai fait :'(

    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
    Sub infPatient()
     
    Workbooks("DOSSIER-SPIROMETRIE.xlsm").Worksheets("DATA").Cells.ClearContents
    Workbooks("DOSSIER-SPIROMETRIE.xlsm").Worksheets("2012").Cells.ClearContents
    Workbooks("DOSSIER-SPIROMETRIE.xlsm").Worksheets("2013").Cells.ClearContents
     
    Workbooks.Open Filename:="Macintosh HD:Users:Olivier:Documents:PROFESSIONNELS:BASE DE DONNEE BENTO:EXPORTATION:SPIROMETRIE.xlsx"
     
    Workbooks("SPIROMETRIE.xlsx").Worksheets("Sheet1").Cells.Copy _
    Workbooks("DOSSIER-SPIROMETRIE.xlsm").Worksheets("DATA").Range("A:S")
     
    Workbooks("SPIROMETRIE.xlsx").Close False
     
    Dim wkSource As Workbook
     
    'filtre Nom
     
    Set wkSource = Workbooks("DOSSIER-SPIROMETRIE.xlsm")
     With wkSource.Sheets("DATA")
            .Range("$A:$S").AdvancedFilter _
                    Action:=xlFilterCopy, _
                    CriteriaRange:=wkSource.Sheets("CRIT").Range("A1:A2"), _
                    Copytorange:=wkSource.Sheets("2012").Range("A1"), _
                    Unique:=False
     End With
     
    'Filtre date
     
    Set wkSource = Workbooks("DOSSIER-SPIROMETRIE.xlsm")
     With wkSource.Sheets("2012")
            .Range("$A:$S").AdvancedFilter _
                    Action:=xlFilterInPlace, _
                    CriteriaRange:=wkSource.Sheets("CRIT").Range("B1:B2"), _
                    Unique:=False
     End With
     
     
    Workbooks("DOSSIER-SPIROMETRIE.xlsm").Worksheets("DATA").Cells.ClearContents
     
    End Sub
    Normalement selon le Tuto de Mr Tulliez, je peux rentrer toute mes condition sur la même ligne pour obtenir un filtre multiple, mais le format des dates semble problématique. J'obtiens un tableau vide...

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 906
    Points : 28 881
    Points
    28 881
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si les dates sont vraiment en format texte la proposition de Bbil devrait fonctionner sauf que j'imagine que l'on fait certainement référence à A2 puisque la première ligne doit contenir les étiquettes de colonnes.
    Si elles sont au format numérique mais avec un format personnalisé AAAA-MM-JJ alors la formule doit être =ANNEE(A2)=2010.
    Attention que l'étiquette de la zone de critère doit être d'une orthographe différente de celle de l'étiquette de colonne dans le cas des critères calculés.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Tu est sur que ta colonne date est bien au format texte ?? ( essai de changer le format d'affichage sous excel ...)

    qu'as tu mis dans tes colonnes critères ...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Osteopathe
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Osteopathe
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Oui il est au format texte, j'ai deja essayé de le changer manuellement...rien ne se passe...pas moyen de le formater en JJ/MM/AAAA par exemple...

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par bbil Voir le message

    qu'as tu mis dans tes colonnes critères ...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Osteopathe
    Inscrit en
    Juin 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Osteopathe
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2013
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    =ANNEE(R2)=2012

    J'ai trouvé une solution qui fonctionne en manuel et j'ai donc essayé de la coder

    j'applique une formule ANNEE sur mes dates et je filtre en fonction de ces résultat. J'ai encodé une macro pour ce faire en voulant que la colonne T prennent ces valeur: T1= ANNEE ; T2= YEAR(R2) ; T3= YEAR(R3) ect ect

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim LastRow As Long
    LastRow = Workbooks("DOSSIER-SPIROMETRIE.xlsm").Worksheets("DATA").Cells(Rows.Count, "A").End(xlUp).Row + 1
     
    With Workbooks("DOSSIER-SPIROMETRIE.xlsm").Worksheets("DATA")
    .Range("T1").Value = "Annee"
    .Range("T2").FormulaR1C1 = "= year(RC18)"
    Range("T2").Select
    Selection.AutoFill Destination:=Range("T2:T" & LastRow), Type:=xlFillDefault
    End With
    Le plus souvent (pas tout le temps lol) le calcul s'arrete en T3....pourquoi ???

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/06/2009, 14h36
  2. Réponses: 8
    Dernier message: 26/04/2007, 17h24
  3. [MySQL] Requête de filtre sur les dates
    Par Mathieu72 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/01/2007, 11h18
  4. Programmation du filtre sur les Dates
    Par Alpha31 dans le forum Access
    Réponses: 5
    Dernier message: 26/06/2006, 09h21
  5. MS Access et TQuery (probleme sur les dates)
    Par Djob dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2004, 14h57

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