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

Résolu
Xenos1705 Messages postés 97 Statut Membre -  
Xenos1705 Messages postés 97 Statut Membre -
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 11033 Statut Membre 2 433
 
Bonjour

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

Cdlmnt
0
Xenos1705 Messages postés 97 Statut Membre
 
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 11033 Statut Membre 2 433 > Xenos1705 Messages postés 97 Statut Membre
 
Comme dit Eric (salut à toi), il faut tester !!!!
Date est une fonction vba qui renvoie la date actuelle

Cdlmnt
0
Xenos1705 Messages postés 97 Statut Membre > ccm81 Messages postés 11033 Statut Membre
 
Bonjour,

Je ne fais que ca depuis ce matin: Tester
0
eriiic Messages postés 25847 Statut Contributeur 7 279
 
Bonjour,

tu as testé ?
eric
0
Mike-31 Messages postés 19571 Statut Contributeur 5 136
 
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 97 Statut Membre
 
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 3360 Statut Membre 526 > Xenos1705 Messages postés 97 Statut Membre
 
Bonjour,

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


A+
0
Xenos1705 Messages postés 97 Statut Membre > Gyrus Messages postés 3360 Statut Membre
 
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 3360 Statut Membre 526 > Xenos1705 Messages postés 97 Statut Membre
 
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 97 Statut Membre > Gyrus Messages postés 3360 Statut Membre
 
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 97 Statut Membre
 
Hello,

Malheureusement cela ne joue pas non plus...
0
eriiic Messages postés 25847 Statut Contributeur 7 279
 
Bonjour,

Lorsque tu enlèves tout alignement tes dates sont bien à droite ?
eric
0
Xenos1705 Messages postés 97 Statut Membre
 
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 15478 Statut Contributeur 4 726
 
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 97 Statut Membre
 
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