Macro - Détection de l'année d'une date

Résolu
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   -  
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai le code suivant:

Selection.AutoFilter Field:=2, Criteria1:="<=" & CDbl(CDate("01/01/2016"))
Range("A2:A" & Range("A65536").End(xlUp).Row).SpecialCells(xlVisible).EntireRow.Select
Selection.Delete
Selection.AutoFilter Field:=2


Ce code me permet de filtrer une colonne en affichant toutes les lignes avec une date antérieure au 01.01.2016.

Ce que je souhaite, via macro, c'est de pouvoir filtrer les données et de ne retenir que tout ce qui est antérieur au 01.01 de l'année en cours. J'aimerais éviter de renseigner l'année afin de m'éviter d'aller modifier ma macro en début de chaque nouvelle année. En résumé, je souhaiterait détecter l'année en cours.

D'avance merci pour votre aide.

Xenos
A voir également:

5 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

l'année en cours es données par
Year(Date)

Cdlmnt
0
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Le problème avec cette solution c'est que l'on doit malgré tout renseigner une date entre parenthèses...

Y-aurait-il pas un moyen de dire à la macro de détecter l'année en cours en se basant sur l'horloge du système d'exploitation?

D'avance merci.


Xenos
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433 > Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Comme dit Eric (salut à toi), il faut tester !!!!
Date est une fonction vba qui renvoie la date actuelle

Cdlmnt
0
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   > ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Je ne fais que ca depuis ce matin: Tester
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

tu as testé ?
eric
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Bonjour,

essaye comme cela
Year(Now)

pour avoir l'année en cellule B5
Private Sub CommandButton1_Click()
[B5] = Year(Now)
End Sub

mais pour l'adapter à ton code il serait bon d'avoir un bout de ton fichier et code existant pour ne pas induire en erreur
A+
Mike-31

Pas savoir n'est pas un échec, l'échec est le refus d'apprendre.
0
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Hello,

Merci pour ton message...

Le code fonctionne mais ce n'est pas encore le résultat que je souhaiterais...

Pour des raisons de confidentialité, je suis dans l'impossibilité de te transmettre le fichier en question...

Si jamais tu as bout de mon code dans mon post initial.

Si tu veux j'ai une BDD avec plus de 8'000 lignes, et ce que je souhaite c'est supprimer toutes les lignes contenant une date antérieur au 01.01 de l'année en cours.

Actuellement, je filtre les données en renseignant la date à la main comme ci-dessous:

Selection.AutoFilter Field:=2, Criteria1:="<=" & CDbl(CDate("01/01/2016"))


Je souhaiterai adapter ce code pour éviter chaque année d'aller corriger ma macro...

Encore merci pour ta réponse et ton aide...


Xenos
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526 > Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Essaie avec :
Selection.AutoFilter Field:=2, Criteria1:="<" & DateSerial(Year(Date), 1, 1)


A+
0
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   > Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention  
 
Hello Gyrus,

J'ai eu un petit espoir en essayant ton code mais malheureusement celui-ci ne fonctionne pas.

Le code a bien filtré la colonne mais n'a retenu aucune donnée.

Aucune case n'est sélectionner dans les options de filtrage.

Aurais-tu une autre idée de comment pouvoir rédiger le code?

D'avance merci...

A+


Xenos
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526 > Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Et pourtant, elle tourne !
Voici un fichier exemple (non confidentiel ...)
https://www.cjoint.com/c/FIEiCz6APSN

Si le filtre ne s'applique pas, c'est que ton fichier a une spécificité que j'ignore.

A+
0
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention   > Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention  
 
Hello,

J'ai pensé que c'était dû au fait que les données proviennent d'un autre fichier mais non car j'ai pris un fichier excel vierge, j'ai fait un exemple avec trois colonnes, exécuter ta macro et le résultat est le même, il filtre les données mais ne retiens rien, aucune case coché dans les critères.

Est-ce que ce serait du au fait que mes dates sont au format: 01.01.2016?
0
Maurice
 
Bonjour
peux être comme ca

Sub Test()
Dim An As Long
An = Year(Now)
Columns("A:E").Select
   Selection.AutoFilter field:=2, _
      Criteria1:=">=" & "1/1/" & An, Operator:=xlAnd, Criteria2:="<=" & "12/31/" & An
End Sub


A+
Maurice
0
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Hello,

Malheureusement cela ne joue pas non plus...
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

Lorsque tu enlèves tout alignement tes dates sont bien à droite ?
eric
0
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Hello,

Oui mes dates se trouvent bien à droite...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 724
 
Bonjour à tous,

J'ai le code suivant:
Selection.AutoFilter Field:=2, Criteria1:="<=" & CDbl(CDate("01/01/2016"))

Puisqu'il fonctionne pourquoi ne pas effectuer ce simple changement ?
Selection.AutoFilter Field:=2, Criteria1:="<=" & CDbl(CDate("01/01/" & Year(Date)))
0
Xenos1705 Messages postés 93 Date d'inscription   Statut Membre Dernière intervention  
 
Hello,

Merci bcp CA FONCTIONNE...

Je te remercie infiniment, je n'ai pas encore assez d'expérience pour faire de simples changements lol

A+
0