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

Résolu/Fermé
Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018 - 29 sept. 2016 à 15:57
Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018 - 5 oct. 2016 à 08:31
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 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 428
29 sept. 2016 à 16:03
Bonjour

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

Cdlmnt
0
Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018
30 sept. 2016 à 08:23
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 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 428 > Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018
30 sept. 2016 à 14:08
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 lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018 > ccm81 Messages postés 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024
30 sept. 2016 à 15:01
Bonjour,

Je ne fais que ca depuis ce matin: Tester
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
30 sept. 2016 à 08:44
Bonjour,

tu as testé ?
eric
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
Modifié par Mike-31 le 30/09/2016 à 08:36
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 lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018
30 sept. 2016 à 08:48
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524 > Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018
30 sept. 2016 à 09:07
Bonjour,

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


A+
0
Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018 > Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016
30 sept. 2016 à 09:40
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 samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524 > Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018
30 sept. 2016 à 10:33
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 lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018 > Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016
30 sept. 2016 à 10:52
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
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 lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018
5 oct. 2016 à 08:30
Hello,

Malheureusement cela ne joue pas non plus...
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
4 oct. 2016 à 18:34
Bonjour,

Lorsque tu enlèves tout alignement tes dates sont bien à droite ?
eric
0
Xenos1705 Messages postés 93 Date d'inscription lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018
5 oct. 2016 à 08:17
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
5 oct. 2016 à 08:07
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 lundi 19 octobre 2015 Statut Membre Dernière intervention 11 juin 2018
5 oct. 2016 à 08:31
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