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

  • Initiateur de la discussion Initiateur de la discussion juju44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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.
 
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
 
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:
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour