[RESOLU]] VBA - flitre élaboré avec dates

juju44

XLDnaute Nouveau
Bonjour,

J'ai un fichier excel, développé sur Excel 2003, sur lequel j'effectue par macro des filtres élaborés sur une plage de données vers une autre feuille.

Certains filtres se font sur un intervalle de temps, pour sélectionner les données qui m'intéresse.

Les critères du filtre sont en cellules AL2 et AM2

voici le code associé à un bouton (Sheets("TDB").Range("g4").Value est une date)

Code:
Sheets("TDB").Range("AL2") = "<=" & DateSerial(Year(Sheets("TDB").Range("g4").Value), Month(Sheets("TDB").Range("g4").Value) + 1, 0)

Sheets("TDB").Range("AM2") = ">=" & DateSerial(Year(Sheets("TDB").Range("g4").Value), Month(Sheets("TDB").Range("g4").Value), 1)

Sheets("segment").Cells.Clear

Sheets("IOP2").Range("data").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            Sheets("TDB").Range("AL1:AM2"), CopyToRange:=Sheets("segment").Range("A1"), Unique:=False

Certaines personnes qui utilisent ce fichier travaillent sur Excel 2010. Et les filtres avec des dates ne fonctionnent plus, alors que les autres filtres (sans date), fonctionnent parfaitement. J'ai fait le test moi même avec Excel 2010 et je ne comprends pas d'où vient le problème...

Si vous avez une piste...

Merci d'avance !
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : VBA - flitre élaboré avec dates

Bonjour

Il y a effectivement un problème du à la localisation qui affecte les dates sur diverses fonctionnalités dont les filtres avancés.

Il faut que les dates soient au format numérique : prévoir un zone de saisie des dates mais utiliser leur valeur numériques dans le filtre.

Comme tu travailles avec VBA, tu peux passer la date en format numérique, exécuter le filtre puis rétablir le format date et ainsi te passer de la zone de saisie évoquée.
 

juju44

XLDnaute Nouveau
Re : VBA - flitre élaboré avec dates

Merci beaucoup pour ta réponse rapide !

Qu'entends tu par problème de localisation ?

Donc si je convertis ma date en numérique, cela fonctionnera sur excel 2010 mais est ce que ce sera également le cas sur 2003...faut que je teste. Et comme le fichier doit fonctionner sur les 2 versions ...

Merci encore en tous cas
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : VBA - flitre élaboré avec dates

Bonjour,

Pour Excel 2007+, lorsque le filtre est activé par VBA, les dates des cellules du critère doivent être
sous la forme mm/jj/aaaa.

Code:
Private Sub CommandButton1_Click()
  If Val(Application.Version) >= 12 Then
    [G2] = ">=" & Format(TextBox1, "mm/dd/yyyy")
    [H2] = "<=" & Format(TextBox2, "mm/dd/yyyy")
  Else
    [G2] = ">=" & TextBox1
    [H2] = "<=" & TextBox2
  End If
  [A1:E1000].AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[G1:H2], CopyToRange:=[G6:K6]
End Sub

Extraction entre 2 dates

http://boisgontierjacques.free.fr/fichiers/Filtre/FiltreElaboreDate3.xls



JB
 
Dernière édition:

juju44

XLDnaute Nouveau
Re : VBA - flitre élaboré avec dates

Merci à vous pour vos réponses.

J'ai adapté mon programme de la sorte :

Code:
Sheets("TDB").Range("AL2").FormulaR1C1 = "=""<=""&DATE(YEAR(R4C7),MONTH(R4C7)+1,0)"

Sheets("TDB").Range("AM2").FormulaR1C1 = "=""<=""&DATE(YEAR(R4C7),MONTH(R4C7),1)"

Sheets("segment").Cells.Clear

Sheets("IOP2").Range("data").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            Sheets("TDB").Range("AL1:AM2"), CopyToRange:=Sheets("segment").Range("A1"), Unique:=False

Et tout fonctionne parfaitement.

Merci encore.
 

Discussions similaires

Réponses
3
Affichages
579
Réponses
3
Affichages
2 K
Réponses
0
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 184
dernier inscrit
Di Martino