Posez votre question Signaler

Filtre automatique Excel et VBA

claude999 - Dernière réponse le 14 mars 2011 à 23:02
Bonjour,
Dans une routine VBA (Excel) j'aimerai trier une liste avec le filtre automatique. Le deuxième critère doit être le suivant :
plus petit qu'une date contenue dans la variable vadate. Cette variable est saisie par l'utilisateur dans un formulaire. Le tri fonctionne très bien si le code est "Criteria1:=vadate" mais je ne sais pas comment saisir le code avec le signe <= (inférieur ou égal à).
Voici la routine
Public vadate As Date
Public txtdatelimite As Date
Private Sub CommandButton1_Click()
ActiveSheet.Unprotect
vadate = DateValue(txtdatelimite)
Range("A3").Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:=cmbconseillerimp.Value
Selection.AutoFilter Field:=6, Criteria1:=<=vadate, Operator:=xlAnd 'cette ligne pose un problème
Selection.AutoFilter Field:=8, Criteria1:=""
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlUp)).Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range("A2:i2").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Range(Selection, Selection.End(xlToLeft)).Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$I$2000"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Selection.AutoFilter
Unload Userimprime
ActiveSheet.Protect
Range("A3").Select
End Sub
Merci d'avance pour votre aide
Lire la suite 

Filtre automatique Excel et VBA »

7 réponses
Réponse
+4
moins plus
bonjour

Essaie avec cette syntaxe :

Selection.AutoFilter Field:=6, Criteria1:="<=" & vadate, Operator:=xlAnd
Ajouter un commentaire
Réponse
+0
moins plus
Merci gbinforme,

J'ai modifié le code selon vos indications et le conenu de la variable est transférée correctement dans le filtre personnalisé.

Toutefois, Excel ne reconnaît pas le contenu de la variable. Aucune ligne n'est sélectionnée. Par contre, si je saisi manuellement
la même date, cela fonctionne.

Je ne comprend pas pourquoi Excel refuse de reconnaître le contenu de la variable.
Pourtant, si je fais un test dans le code avec IsDate, le résultat est "vrai".

Merci pour votre aide
Ajouter un commentaire
Réponse
+0
moins plus
bonjour

a priori, cela vient certainement du format de ta variable, texte au lieu de numérique ou l'inverse : essaies de regarder dans cette direction lorsque tu valorises la variable.

essaies peut-être : vadate = format(DateValue(txtdatelimite),"dd/mm/yyyy") (attention je n'ai pas testé, cela dépend de tes données !)
Ajouter un commentaire
Réponse
+0
moins plus
La solution est sur ce site:
http://www.ozgrid.com/News/aug-2006.htm paragraphe: " PASSING THE DATE TO A LONG VARIABLE "

En gros, il faut passer par une date au format "Long"
en utilisant DateSerial( year, month, day)

Je devais faire un filtre sur la date du jour du système et je rencontrais le meme genre de problème que vous....

Maintenant ca fonctionne ! :D
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Moi, j'ai le meme problème sauf que je désire trier sur une colonne qui contient des prénoms par exemple "arnaud" donc une colonne qui contient que des strings.
Dans mon code la variable St est un string mais ca ne marche pas, la variable est vide dans :
ActiveSheet.Range("$B$11:$K$31").AutoFilter Field:=6, Criteria1:= _
"St"


Private Sub Workbook_Open()

Dim St As String
St = "arnaud"

Sheets("Miss. inputs").Select
Range("B11:K11").Select
Selection.AutoFilter

ActiveSheet.Range("$B$11:$K$31").AutoFilter Field:=6, Criteria1:= _
"St"

End Sub

Je vous remercie de m'aider si vous pouvez.
cordialement,
gbinforme- 14 mars 2011 à 22:48
Bonsoir,

Tu aurais dû créer ton sujet au lieu de venir dans une vieille discussion.

Quand tu défini une variable (st) il faut ensuite l'utiliser car en codant Criteria1:= "St" tu ne recherche pas "arnaud" mais "St" ! Ceci devrait être plus adapté :

ActiveSheet.Range("$B$11:$K$31").AutoFilter Field:=6, Criteria1:= St 
papachico31- 14 mars 2011 à 23:02
Oui, tu as raison désolé !
et encore merci pour ta solution
Ajouter un commentaire
Ce document intitulé « Filtre automatique Excel et VBA » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?