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 04/12/2011, 17h27   #1
Invité régulier
 
dalo02
Inscription : février 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : dalo02

Informations forums :
Inscription : février 2010
Messages : 28
Points : 8
Points : 8
Par défaut bloque sur un probleme de date

bonsoir
je bloque sur un pb de date
je veux filter les feuilles d'un classeur par l'intermediaire d'une cellule
la colonne a filtrer et la cellule sont remplies a l'aide de formules
et sont formatees "mmm,yy"
la formule en A1 est ='F1'!A1 et col 9 =EDATUM(G6;H6)
resultat j'ai par ex. en A1 Dec.11 ainsi que dans la col9
j'ai essaye avec formula,text ect.. a la place de Value mais sans succes
merci pour votre aide
Code :
1
2
With ws
    Rows("5:5").AutoFilter Field:=9, Criteria1:="=" & Range("a1").Value
dalo02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 17h44   #2
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 669
Points : 7 669
Bonjour,

Il ne manque pas un point devant Rows et Range?
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/12/2011, 19h12   #3
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonsoir,

Code :
.Range(.[I5], .Cells(.Rows.Count, 9).End(xlUp)).AutoFilter Field:=1, Criteria1:="=" & Format([A1], "m/d/yyyy")
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 21h13   #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 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par Daniel.C Voir le message
Bonsoir,

Code :
.Range(.[I5], .Cells(.Rows.Count, 9).End(xlUp)).AutoFilter Field:=1, Criteria1:="=" & Format([A1], "m/d/yyyy")
il manque juste des . devant les .row et .range comme dit plus haut par Alain ... utiliser la feuille courante comme ici avec le [A1] provoque les mêmes erreurs que lorsqu'on utilise Range ou Row sans préciser la feuille..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 22h46   #5
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Citation:
il manque juste des . devant les .row et .range comme dit plus haut par Alain ... utiliser la feuille courante comme ici avec le [A1] provoque les mêmes erreurs que lorsqu'on utilise Range ou Row sans préciser la feuille..
La modif (erreur de copier / coller) a été faite dans la minute qui a suivi le post initial

Par contre, utiliser la syntaxe sans point est parfaitement licite quand il s'agît de la feuille courante.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 22h58   #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 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par Daniel.C Voir le message
La modif (erreur de copier / coller) a été faite dans la minute qui a suivi le post initial

Par contre, utiliser la syntaxe sans point est parfaitement licite quand il s'agît de la feuille courante.
Non... Travailler sans préciser la feuille concernée est toujours une source potentielle de bug.. De plus ici il ne s'agit pas dela feuille active voir le with..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2011, 23h29   #7
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Je l'ai dit, l'oubli des points est une erreur de ma part. Ceci dit, la présence de la ligne :

laisse le doute quant à l'intention de dalo02. Veut-il travailler avec cette feuille ou avec la feuille active ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 12h31   #8
Invité régulier
 
dalo02
Inscription : février 2010
Messages : 28
Détails du profil
Informations personnelles :
Nom : dalo02

Informations forums :
Inscription : février 2010
Messages : 28
Points : 8
Points : 8
bonjour a tous
je reprends mon pb et vous remercie pour votre aide
j'ai essaye la formule de Daniel malheureusement sans succes
je pense cela vient du formatage des cellules col et cellule en "mmm,yy"
ou du fait que la cellule et la col a filtrer sont toutes 2 avec des formules????
j'ai contourne le probleme en convertissant dans 1 autre colonne , les dates en standard-40858 pour le 1 nov 2011-et la pas de probleme.
ca depanne
mais j'aimerai bien savoir pourquoi ,histoire d'aller me coucher moins ......
merci pour votre aide
Code :
.Rows("5:5").AutoFilter Field:=256, Criteria1:="=" & .Range("iu1").Value
dalo02 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 13h36   #9
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
@ bbil :
Citation:
Non... Travailler sans préciser la feuille concernée est toujours une source potentielle de bug.
J'ai, dans mon classeur de macros personnelles, plusieurs macros destinées à s'exécuter sur la feuille active. Peux-tu me dire comment les modifier pour introduire les noms du classeur et de la feuille sur laquelle je veux agir ?

Citation:
De plus ici il ne s'agit pas dela feuille active voir le with
C'est ce que nous supposons et c'est pourquoi j'ai modifié mon post initial. Cependant dalo02 n'a pas mis de point. Ou l'on suppose un oubli, ou il veut effectivement agir sur la feuille active.

@dalo02 :

Ton format est-il vraiment "mmm,yy" ? dans ce cas, essaie :

Code :
.Range(.[I5], .Cells(.Rows.Count, 9).End(xlUp)).AutoFilter Field:=1, Criteria1:="=" & Format([A1], "mmm,yy")
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 13h49   #10
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
J'ai toujours eu le même souci avec les filtres automatiques dès qu'il ne s'agit pas de texte. Que ce soit des dates ou du numérique, impossible de mettre un critère qui marche, en formatant ou en mettant la valeur réelle.
Quand tu le fais avec l'enregistreur de macro (ça faisait longtemps que je ne l'avais pas utilisé, celui-là ), ça ne marche pas non plus.

J'ai toujours du chercher des solutions autre. Ne sachant pas quel est ton but, je ne peux pas t'aider sur ce point.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 16h05   #11
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 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Bonjour,

J'avais gardé dans mon souvenir que le filtre sur des dates marchait en utilisant un long comme critère ( avec fonction Clng) ... cependant cela ne fonctionne plus sous mon Excel 2003 ..?


si ta cellule A1 et ta plage à tester sont dans la même feuille et utilise le même formatage de date tu peu écrire :

Code :
1
2
3
4
5
Set ws = ActiveSheet ' N'utilise ActiveSheet qu'as l'initialisation...
With ws
    .Range("A5").CurrentRegion.AutoFilter Field:=9, Criteria1:=.Range("A1").Text, Operator:=xlAnd
Debug.Print CLng(.Range("A1").Value)
End With
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 16h10   #12
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Ne marche pas chez moi. J'avais retourné le problème dans tous les sens et finis par faire une passe sur les lignes et un hide sur les lignes concernées.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 16h17   #13
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour Zebreloup, tu réponds à qui, là ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 16h51   #14
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Oui, désolé, ce n'était pas très clair, ni constructif.

L'idée de bbil de passer par la valeur ou le texte directement d'un range ne marche pas non plus chez moi. dalo02 peut quand même tester, on ne sait jamais, ça peut venir d'une version d'Excel.

Pour ce qui est du coté constructif. Si aucune solution ne marche, je préconise donc de mettre en place le filtre automatique sans option, puis de faire une passe sur toutes les lignes et de les masquer si elles ne répondent pas au critère. C'est bien sûr une solution de dernier recours.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Sub test()
    Dim ws As Worksheet
    Set ws = ActiveSheet 'ou autre
 
    Dim rg As Range
    Set rg = ws.Range("A5").CurrentRegion 'ou autre
 
    rg.AutoFilter
 
    Dim i As Integer
    For i = rg.Rows To 1 Step -1
        If rg.Cells(i, 9).Value <> ws.Range("A1").Value Then rg.Rows(i).EntireRow.Hide
    Next i
End Sub
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h15.


 
 
 
 
Partenaires

Hébergement Web