XL 2010 [Résolu] Créer un filtre date basé sur la valeur d'une cellule

arochab

XLDnaute Nouveau
Bonjour à tous :)

Premier message posté sur ce forum, ce n'est pourtant pas la première fois que je le consulte. Je remercie d'abord toutes et tous pour cela !

Je vous sollicite pour un problème qui me tire les cheveux !

J'ai deux bases. La première est une extraction comptable et la deuxième une base de gestion.

Je souhaiterai filtrer des données de la première, plus précisément des données date entre la valeur d'une cellule située sur le deuxième fichier et "aujourd'hui".
Est-ce possible ? Je ne trouve aucun moyen de le faire sauf à copier la valeur dans le filtre avancé.

Par ailleurs, j'aimerai automatiser la copie des lignes de la première base à la suite de celle de la seconde. J'ai utilisé la fonction LngLastRow mais elle ne semble pas fonctionner.

Voici mon code :

Windows("EDI_EXTRACT_CDG_DIVERSIFICATION.xls").Activate
ActiveWindow.SmallScroll Down:=-21
Selection.AutoFilter
Windows("Base Call & IP 2016-macro.xlsm").Activate
Range("A11").Select
Selection.Copy
Windows("EDI_EXTRACT_CDG_DIVERSIFICATION.xls").Activate
ActiveSheet.Range("$A$1:$AB$2764").AutoFilter Field:=22, Criteria1:= _
">=15/09/2016", Operator:=xlAnd, Criteria2:="<=19/09/2016"
ActiveSheet.Range("$A$1:$AB$2764").AutoFilter Field:=14, Criteria1:= _
"=PJECST6", Operator:=xlOr, Criteria2:="=PJEINTP"
Sheets("EDI-EXTRACT-CDG-DIVERSIFICATION").Range("$A$2:$AB$2704").SpecialCells(xlVisible).Copy
Windows("Base Call & IP 2016-macro.xlsm").Activate
Sheets("Base").Select
Dim LngLastRow As Long
LngLastRow = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Mille merci à celles et ceux qui prendront le temps de m'aider.

arochab
 

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

Un essai
La macro filtre les données de la Feuil1 avec un critère sur la Feuil2 et copie les données filtrées sur un Feuil3
VB:
Sub Macro1()
Dim Date_UN As Long
Dim Date_DEUX As Long
Date_UN = CLng(Feuil2.Range("A1"))
Date_DEUX = CLng(Date)
Feuil1.Range("A1").CurrentRegion.AutoFilter _
                Field:=22, _
                Criteria1:=">=" & Date_UN, Operator:=xlAnd, Criteria2:="<=" & Date_DEUX
Feuil1.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Copy
Feuil3.Activate
ActiveSheet.Paste
End Sub
 

arochab

XLDnaute Nouveau
Merci pour ton accueil Yurperqod

Merci également pour ton retour et ta macro...
En l'adaptant à mon cas, je reçois des messages d'erreur, pour le moment l'erreur est au niveau de l'écriture en gras...

Code:
Windows("Base Call & IP 2016-macro.xlsm").Activate
Dim Date_UN As Long
Dim Date_DEUX As Long
 Date_UN = CLng(Sheets("Check").Range("A11"))
 Date_DEUX = CLng(Date)
 Windows("EDI_EXTRACT_CDG_DIVERSIFICATION.xls").Activate
 Sheets("EDI-EXTRACT-CDG-DIVERSIFICATION.xls").Range("A1").CurrentRegion.AutoFilter _
  Field:=22, _
  Criteria1:=">=" & Date_UN, Operator:=xlAnd, Criteria2:="<=" & Date_DEUX
  ActiveSheet.Range("$A$1:$AB$2766").AutoFilter Field:=14, Criteria1:= _
  "=PJECST6", Operator:=xlOr, Criteria2:="=PJEINTP"
 Sheets("EDI-EXTRACT-CDG-DIVERSIFICATION.xls").AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Copy
 Windows("Base Call & IP 2016-macro.xlsm").Activate
 Sheets("Base").Select
 ActiveSheet.Paste
  Dim LngLastRow As Long
  LngLastRow = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False
T'aperçois-tu d'erreurs manifestes ?
Débutant en VBA, j'essai de comprendre au mieux son fonctionnement ! :)

Merci encore !

arochab
 

Yurperqod

XLDnaute Occasionnel
Avec un fichier exemple ajouté dans la discussion, on pourrait faire des tests.
Tu peux joindre une copie de ton classeur avec des données fictives ?

Ma macro fonctionne sur le fichier que je me suis créé pour la tester.
 

Yurperqod

XLDnaute Occasionnel
Ce test du filtre avec tes fichiers fonctionne chez moi
VB:
Sub Test19092016II()
Dim Date_UN As Long
Dim Date_DEUX As Long
Date_UN = Range("A11").Value
Date_DEUX = CLng(Date)

Windows("EDI_EXTRACT_CDG_DIVERSIFICATION.xls").Activate
ActiveSheet.Range("$A$1:$AB$2764").AutoFilter Field:=22, Criteria1:= _
        ">=" & Date_UN, Operator:=xlAnd, Criteria2:="<=" & Date_DEUX
End Sub
Les données sont bien filtrées.
La macro est exécutée quand c'est la feuille Check qui est active
 

arochab

XLDnaute Nouveau
Yurperqod c'est juste niquel, merci beaucoup à toi !

J'avais juste une autre demande concernant ma macro. Il s'agit de savoir comment faire pour copier les données filtrées (par la jolie macro que tu m'as transmis) et les coller à la première occurrence d'une ligne vide sur mon deuxième fichier "Base (envoiforum)-macro" sur l'onglet Check.

Merci beaucoup à nouveau pour ton aide,

arochab
 

Yurperqod

XLDnaute Occasionnel
Est-ce que cette macro donne le bon résultat?
(macro exécutée quand c'est la feuille Check qui est la feuille active)
VB:
Sub Macro2()
Dim Date_UN As Long
Dim Date_DEUX As Long
Date_UN = Range("A11").Value
Date_DEUX = CLng(Date)
With Workbooks("EDI_EXTRACT_CDG_DIVERSIFICATION.xls").Sheets(1)
.Range("A1").CurrentRegion.AutoFilter Field:=22, Criteria1:=">=" & Date_UN, Operator:=xlAnd, Criteria2:="<=" & Date_DEUX
.Range("A1").CurrentRegion.AutoFilter Field:=14, Criteria1:="=PJECST6", Operator:=xlOr, Criteria2:="=PJEINTP"
.AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy
.AutoFilterMode = False
End With
Cells(Rows.Count, 1).End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
End Sub
 

arochab

XLDnaute Nouveau
C'est quasiment parfait !
Le seul soucis restant est que la plage copiée contient les entêtes, je suppose que je dois changer quelquechose lié a Rows.count, 1 ?

Merci infiniment Yurperqod !

arochab
 

arochab

XLDnaute Nouveau
Yurperqod tu as résolu mon problème sur lequel je luttais depuis une semaine en 4 messages...
Merci infiniment pour ton temps et ton aide.
J'aimerai pouvoir te retourner la balle d'une manière mais j'imagine que ça ne passera pas par excel !
En tout cas à nouveau merci, :D

arochab
 

arochab

XLDnaute Nouveau
Bonjour

Juste savoir que la meme demande etait adressee ici deux heures plus toto avec proposition de solution http://forum.excel-pratique.com/excel/macro-vba-selectionner-plage-entre-deux-dates-t82855.html#p480345

Arochad il est de bonne habitude d'informer que vous postez une demande ailleurs egalement. Cela evite de passer son temps a rechercher une solution alors que d autres forumeurs attendent reponse a leur demande.

Cordialement
Hello Dan,

Je comprends je m'en excuse et le saurai à l'avenir. A vrai dire je n'ai même pas vu ta réponse...
Merci en tout cas pour ton aide et j'en prends note...

arochab
 

Haut Bas