Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 13h35   #1
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 68
Points : 33
Points : 33
Par défaut filtre en fonction du résultat date(aujourdhui)-date(dernière visite mensuelle)

Bonjour,
Voilà mon souci!
Je souhaiterai faire une macro qui me filtre ma BDD en fontion du résultat de la Date(d'aujourdhui) - la Date qui figure dans ma colonne (Dernière visite mensuelle)!
Je voudrais que seuls les appareils, dont la dernière visite date d'y à plus d'un an , s'affiche!
Voilà le code que j'ai mis pour l'instant mais cela ne fonctionne pas:
Code :
1
2
3
4
5
6
7
8
9
10
 
Sub Bouton1051_QuandClic()
 
    date_du_jour = Format(Now, "dd/mm/yyyy")
 
     ThisWorkbook.Sheets("BDD").Select
    Sheets("BDD").Range("A:P").Sort Key1:=Sheets("BDD").Range("D2"), Order1:=xlAscending, Key2:=Sheets("BDD").Range("F2") _
, Order2:=xlAscending, Header:=xlYes
    Selection.AutoFilter Field:=9, Criteria1:=((date_du_jour - Range("N2")) > 365)    
End Sub
biddal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 20h09   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
Bonsoir,

en supposant que la date est en colonne N :

Code :
1
2
3
4
5
6
7
8
9
10
 
Sub Bouton1051_QuandClic()
 
     ThisWorkbook.Sheets("BDD").Range("A:P").Sort Key1:=Sheets("BDD").Range("D2"), _
     Order1:=xlAscending, Key2:=Sheets("BDD").Range("F2") _
      , Order2:=xlAscending, Header:=xlYes
 
    ThisWorkbook.Sheets("BDD").Range("A1").CurrentRegion.AutoFilter Field:=14, Criteria1:= _
    "<= " & CLng(DateSerial(Year(Now) - 1, Month(Now), Day(Now))), Operator:=xlAnd
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/08/2011, 10h52   #3
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 68
Points : 33
Points : 33
Bonjour bbil,
Merci pour ta réponse cela fonctionne très bien le seul souci que je rencontre c'est que dans certaines cellules il n'y a aucune date étant donné que c'est une nouvelle et que l'on a pas l'historique de tout et les matériels dont il n'y a pas de date ne sont pas pris en compte dans avec cette macro alors que lorsqu'il n'y a pas de date je les considère comme à visiter!
Merci d'avance!

NB: Eh aussi pourrais tu m'expliquer brièvement ton code car je ne comprend pas tout en fait! Merci beaucoup
biddal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 11h09   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
Peu-être que la solution la plus simple est de "remplir" les dates vides par une date particulière style "01/01/1990" ...

pour l'explication je suppose qu'il s'agit de ce morceau de code :
Code :
"<= " & CLng(DateSerial(Year(Now) - 1, Month(Now), Day(Now)))
ici calcul de la date actuelle - 1 an .. Now et la date actuelle les fonctions Day,Month et Year permettent d'en extraire les composantes Jour , Mois , Annnée ..
DateSerial : permet à partir de ces composantes de créer une date au format date d'excel
Code :
DateSerial(Year(Now) - 1, Month(Now), Day(Now))
Ensuite le Clng, transforme cette date au format long ce qui évite qu'Excel prennent cela pour une chaine de caractères car sous forme de chaine de caractères les tests sur les ces chaines ce font celon l'ordre alphabétique ce qui nous fait perdre l'ordre des dates .. (par exemple sous forme de chaine l'on as "10/10/2011" < "2/10/2011" ),
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/08/2011, 11h22   #5
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 68
Points : 33
Points : 33
Merci beaucoup pour ces explications c'est beaucoup plus clair maintenant!
Par contre le soucis est que dans la date j'ai une liste déroulante et je ne peux pas mettre ce que je veux comme date je ne peux pas revenir avant 01/07/2010 à cause de notre historique on a pas avant cette date donc on ne peut pas mettre une date inférieur à celle ci
Merci pour ta réponse
biddal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 11h30   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
alors il faut rajouter un second critère avec colonne date vide un Ou...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 13h10   #7
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 68
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 68
Points : 33
Points : 33
Merci beaucoup j'ai tout simplement rajouté une date bidon dans ma liste déroulante c'était tout bête désolé du dérangement lol!
Bonne journée
biddal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h40.


 
 
 
 
Partenaires

Hébergement Web