Rechercher : dans
Par :

Filtre automatique Excel et VBA

Dernière réponse le 10 fév 2008 à 16:31:18 claude999, le 7 fév 2008 à 12:59:51 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

1

gbinforme, le 7 fév 2008 à 16:57:48

Bonjour

Essaie avec cette syntaxe :

Selection.AutoFilter Field:=6, Criteria1:="<=" & vadate, Operator:=xlAnd
Le savoir est la seule matière qui s'accroît quand on la partage. (Socrate)

Répondre à gbinforme

2

claude999, le 10 fév 2008 à 16:21:18

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

Répondre à claude999

3

 gbinforme, le 10 fév 2008 à 16:31:18

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 !)

Le savoir est la seule matière qui s'accroît quand on la partage. (Socrate)

Répondre à gbinforme
Collection CommentÇaMarche.net