Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche date à l'ouverture d'un fichier Excel

36 réponses
Avatar
ze_louloux
Bonjour à tous
Je voudrai créer une macro
A l'ouverture d'un fichier Excel
Sur une feuille nommée "Bilan des frais"

Sélectionner une date (si elle existe) antérieure à aujourd'hui de 4 ans
sur la 5ème ligne

Merci de votre aide

10 réponses

1 2 3 4
Avatar
ze_louloux
Bonjour à tous
Après utilisation, je m'aperçois qu'il m'aurait fallut une macro qui me
sélectionne la date supérieure à 4 ans et non égale à 4 ans comme je
l'avais demandé.

(Mon objectif est de supprimer des données qui ont plus de 4 ans d'age
et si je n'allume pas mon ordi de 2 ou 3 jours, là le programme me les
saute)

Merci encore de votre aide et on en particulier à MichD qui m'avait
traité exactement ma demande




Le 31/05/2011 19:07, MichD a écrit :
Bonjour,

Dans le ThisWorkbook de ton classeur, tu copies ceci :

'--------------------------------
Private Sub Workbook_Open()
Call Trouver_La_Date
End Sub
'--------------------------------

Dans un module standard, tu inscris cette procédure :
Tu adaptes le nom de la feuille dans la procédure.
Elle est adaptée pour la ligne 5, elle retrouve la première date qu'elle trouve
et sélectionne la cellule.
'--------------------------------------
Sub Trouver_La_Date()
Dim X As Variant
With Worksheets("Feuil1")
.Activate
X = Application.Match(CLng(DateSerial(Year(Now()) - 4, _
Month(Now()), Day(Now()))), Range("5:5").Value2, 0)
If IsNumeric(X) Then
.Range("A5").Offset(, X - 1).Select
Else
.Range("A1").Select
End If
End With
End Sub
'--------------------------------------


MichD




Bonjour à tous
Je voudrai créer une macro
A l'ouverture d'un fichier Excel
Sur une feuille nommée "Bilan des frais"

Sélectionner une date (si elle existe) antérieure à aujourd'hui de 4
ans sur la 5ème ligne

Merci de votre aide
Avatar
DanielCo
Bonjour,
Est-ce que les dates sont classées par ordre chronologique ?
Daniel


Bonjour à tous
Après utilisation, je m'aperçois qu'il m'aurait fallut une macro qui me
sélectionne la date supérieure à 4 ans et non égale à 4 ans comme je
l'avais demandé.

(Mon objectif est de supprimer des données qui ont plus de 4 ans d'age
et si je n'allume pas mon ordi de 2 ou 3 jours, là le programme me les
saute)

Merci encore de votre aide et on en particulier à MichD qui m'avait traité
exactement ma demande
Avatar
MichD
As-tu essayé quelque chose comme :

Tu dois adapter le nom de la feuille...

'--------------------------
Sub test()
Dim Rg As Range
With Worksheets("Feuil1")
.Activate
Set Rg = .Range("A5:" & .Cells(5, .Cells(, _
.Columns.Count).End(xlToLeft).Column).Address)
.Range(Evaluate("ADDRESS(1,MATCH(MAX(IF((TODAY()-(" & _
Rg.Address & "))>1460," & Rg.Address & "))," & _
Rg.Address & ",0))")).Select
End With
End Sub
'--------------------------


MichD
--------------------------------------------
"ze_louloux" a écrit dans le message de groupe de discussion : 4dfc892c$0$30791$

Bonjour à tous
Après utilisation, je m'aperçois qu'il m'aurait fallut une macro qui me
sélectionne la date supérieure à 4 ans et non égale à 4 ans comme je
l'avais demandé.

(Mon objectif est de supprimer des données qui ont plus de 4 ans d'age
et si je n'allume pas mon ordi de 2 ou 3 jours, là le programme me les
saute)

Merci encore de votre aide et on en particulier à MichD qui m'avait
traité exactement ma demande




Le 31/05/2011 19:07, MichD a écrit :
Bonjour,

Dans le ThisWorkbook de ton classeur, tu copies ceci :

'--------------------------------
Private Sub Workbook_Open()
Call Trouver_La_Date
End Sub
'--------------------------------

Dans un module standard, tu inscris cette procédure :
Tu adaptes le nom de la feuille dans la procédure.
Elle est adaptée pour la ligne 5, elle retrouve la première date qu'elle trouve
et sélectionne la cellule.
'--------------------------------------
Sub Trouver_La_Date()
Dim X As Variant
With Worksheets("Feuil1")
.Activate
X = Application.Match(CLng(DateSerial(Year(Now()) - 4, _
Month(Now()), Day(Now()))), Range("5:5").Value2, 0)
If IsNumeric(X) Then
.Range("A5").Offset(, X - 1).Select
Else
.Range("A1").Select
End If
End With
End Sub
'--------------------------------------


MichD




Bonjour à tous
Je voudrai créer une macro
A l'ouverture d'un fichier Excel
Sur une feuille nommée "Bilan des frais"

Sélectionner une date (si elle existe) antérieure à aujourd'hui de 4
ans sur la 5ème ligne

Merci de votre aide
Avatar
DanielCo
With Sheets("Bilan des frais")
Var = Evaluate("MIN(IF('Bilan des frais'!A5:IV5>0,'Bilan des
frais'!A5:IV5))")
If Var < Application.EDate(Date, -48) Then
.[A5:IV5].Find(CDate(Var), , xlValues).Select
End If
End With

(syntaxe valable pour Excel 2007 et versiions suivantes (voir remarque
de MichD pour les versions antérieures).
Daniel


Bonjour à tous
Après utilisation, je m'aperçois qu'il m'aurait fallut une macro qui me
sélectionne la date supérieure à 4 ans et non égale à 4 ans comme je l'avais
demandé.

(Mon objectif est de supprimer des données qui ont plus de 4 ans d'age
et si je n'allume pas mon ordi de 2 ou 3 jours, là le programme me les saute)

Merci encore de votre aide et on en particulier à MichD qui m'avait traité
exactement ma demande




Le 31/05/2011 19:07, MichD a écrit :
Bonjour,

Dans le ThisWorkbook de ton classeur, tu copies ceci :

'--------------------------------
Private Sub Workbook_Open()
Call Trouver_La_Date
End Sub
'--------------------------------

Dans un module standard, tu inscris cette procédure :
Tu adaptes le nom de la feuille dans la procédure.
Elle est adaptée pour la ligne 5, elle retrouve la première date qu'elle
trouve
et sélectionne la cellule.
'--------------------------------------
Sub Trouver_La_Date()
Dim X As Variant
With Worksheets("Feuil1")
.Activate
X = Application.Match(CLng(DateSerial(Year(Now()) - 4, _
Month(Now()), Day(Now()))), Range("5:5").Value2, 0)
If IsNumeric(X) Then
.Range("A5").Offset(, X - 1).Select
Else
.Range("A1").Select
End If
End With
End Sub
'--------------------------------------


MichD






Bonjour à tous
Je voudrai créer une macro
A l'ouverture d'un fichier Excel
Sur une feuille nommée "Bilan des frais"

Sélectionner une date (si elle existe) antérieure à aujourd'hui de 4
ans sur la 5ème ligne

Merci de votre aide
Avatar
ze_louloux
Re bonjour
A la commande
.Range(Evaluate("ADDRESS(1,MATCH(MAX(IF((TODAY()-("& _
Rg.Address& "))>1460,"& Rg.Address& ")),"& _
Rg.Address& ",0))")).Select

J'obtiens

Erreur d'exécution 1004
Erreur définie par l'application ou par l'objet









Le 18/06/2011 15:28, MichD a écrit :
As-tu essayé quelque chose comme :

Tu dois adapter le nom de la feuille...

'--------------------------
Sub test()
Dim Rg As Range
With Worksheets("Feuil1")
.Activate
Set Rg = .Range("A5:"& .Cells(5, .Cells(, _
.Columns.Count).End(xlToLeft).Column).Address)
.Range(Evaluate("ADDRESS(1,MATCH(MAX(IF((TODAY()-("& _
Rg.Address& "))>1460,"& Rg.Address& ")),"& _
Rg.Address& ",0))")).Select
End With
End Sub
'--------------------------


MichD
--------------------------------------------
"ze_louloux" a écrit dans le message de groupe de discussion : 4dfc892c$0$30791$

Bonjour à tous
Après utilisation, je m'aperçois qu'il m'aurait fallut une macro qui me
sélectionne la date supérieure à 4 ans et non égale à 4 ans comme je
l'avais demandé.

(Mon objectif est de supprimer des données qui ont plus de 4 ans d'age
et si je n'allume pas mon ordi de 2 ou 3 jours, là le programme me les
saute)

Merci encore de votre aide et on en particulier à MichD qui m'avait
traité exactement ma demande




Le 31/05/2011 19:07, MichD a écrit :
Bonjour,

Dans le ThisWorkbook de ton classeur, tu copies ceci :

'--------------------------------
Private Sub Workbook_Open()
Call Trouver_La_Date
End Sub
'--------------------------------

Dans un module standard, tu inscris cette procédure :
Tu adaptes le nom de la feuille dans la procédure.
Elle est adaptée pour la ligne 5, elle retrouve la première date qu'elle trouve
et sélectionne la cellule.
'--------------------------------------
Sub Trouver_La_Date()
Dim X As Variant
With Worksheets("Feuil1")
.Activate
X = Application.Match(CLng(DateSerial(Year(Now()) - 4, _
Month(Now()), Day(Now()))), Range("5:5").Value2, 0)
If IsNumeric(X) Then
.Range("A5").Offset(, X - 1).Select
Else
.Range("A1").Select
End If
End With
End Sub
'--------------------------------------


MichD






Bonjour à tous
Je voudrai créer une macro
A l'ouverture d'un fichier Excel
Sur une feuille nommée "Bilan des frais"

Sélectionner une date (si elle existe) antérieure à aujourd'hui de 4
ans sur la 5ème ligne

Merci de votre aide







Avatar
MichD
Oui tu as raison, comme ceci :
Si une telle date n'existe pas, cela provoquera une erreur.
Tu peux utiliser : "On error resume next"
1461 nombres de jours dans 4 ans + 1 pour l'année bissextile

'-----------------------------
Sub test()
Dim Rg As Range
With Worksheets("Feuil1")
.Activate
Set Rg = .Range("A5:" & .Cells(5, .Cells(5, _
.Columns.Count).End(xlToLeft).Column).Address)
.Range(Evaluate("ADDRESS(5,MATCH(MAX(IF((TODAY()-(" & _
Rg.Address & "))>1461," & Rg.Address & "))," & _
Rg.Address & ",0))")).Select
End With
End Sub
'-----------------------------


MichD
--------------------------------------------
"ze_louloux" a écrit dans le message de groupe de discussion : 4dfcb356$0$14669$

Re bonjour
A la commande
.Range(Evaluate("ADDRESS(1,MATCH(MAX(IF((TODAY()-("& _
Rg.Address& "))>1460,"& Rg.Address& ")),"& _
Rg.Address& ",0))")).Select

J'obtiens

Erreur d'exécution 1004
Erreur définie par l'application ou par l'objet









Le 18/06/2011 15:28, MichD a écrit :
As-tu essayé quelque chose comme :

Tu dois adapter le nom de la feuille...

'--------------------------
Sub test()
Dim Rg As Range
With Worksheets("Feuil1")
.Activate
Set Rg = .Range("A5:"& .Cells(5, .Cells(, _
.Columns.Count).End(xlToLeft).Column).Address)
.Range(Evaluate("ADDRESS(1,MATCH(MAX(IF((TODAY()-("& _
Rg.Address& "))>1460,"& Rg.Address& ")),"& _
Rg.Address& ",0))")).Select
End With
End Sub
'--------------------------


MichD
--------------------------------------------
"ze_louloux" a écrit dans le message de groupe de discussion : 4dfc892c$0$30791$

Bonjour à tous
Après utilisation, je m'aperçois qu'il m'aurait fallut une macro qui me
sélectionne la date supérieure à 4 ans et non égale à 4 ans comme je
l'avais demandé.

(Mon objectif est de supprimer des données qui ont plus de 4 ans d'age
et si je n'allume pas mon ordi de 2 ou 3 jours, là le programme me les
saute)

Merci encore de votre aide et on en particulier à MichD qui m'avait
traité exactement ma demande




Le 31/05/2011 19:07, MichD a écrit :
Bonjour,

Dans le ThisWorkbook de ton classeur, tu copies ceci :

'--------------------------------
Private Sub Workbook_Open()
Call Trouver_La_Date
End Sub
'--------------------------------

Dans un module standard, tu inscris cette procédure :
Tu adaptes le nom de la feuille dans la procédure.
Elle est adaptée pour la ligne 5, elle retrouve la première date qu'elle trouve
et sélectionne la cellule.
'--------------------------------------
Sub Trouver_La_Date()
Dim X As Variant
With Worksheets("Feuil1")
.Activate
X = Application.Match(CLng(DateSerial(Year(Now()) - 4, _
Month(Now()), Day(Now()))), Range("5:5").Value2, 0)
If IsNumeric(X) Then
.Range("A5").Offset(, X - 1).Select
Else
.Range("A1").Select
End If
End With
End Sub
'--------------------------------------


MichD






Bonjour à tous
Je voudrai créer une macro
A l'ouverture d'un fichier Excel
Sur une feuille nommée "Bilan des frais"

Sélectionner une date (si elle existe) antérieure à aujourd'hui de 4
ans sur la 5ème ligne

Merci de votre aide







Avatar
ze_louloux
J'obtiens toujours
Erreur d'exécution 1004
Erreur définie par l'application ou par l'objet

Faut que je vs précise ma version d'excel est :
Excel 2002

Bonne soirée



Le 18/06/2011 16:32, MichD a écrit :
Oui tu as raison, comme ceci :
Si une telle date n'existe pas, cela provoquera une erreur.
Tu peux utiliser : "On error resume next"
1461 nombres de jours dans 4 ans + 1 pour l'année bissextile

'-----------------------------
Sub test()
Dim Rg As Range
With Worksheets("Feuil1")
.Activate
Set Rg = .Range("A5:"& .Cells(5, .Cells(5, _
.Columns.Count).End(xlToLeft).Column).Address)
.Range(Evaluate("ADDRESS(5,MATCH(MAX(IF((TODAY()-("& _
Rg.Address& "))>1461,"& Rg.Address& ")),"& _
Rg.Address& ",0))")).Select
End With
End Sub
'-----------------------------


MichD
--------------------------------------------
"ze_louloux" a écrit dans le message de groupe de discussion : 4dfcb356$0$14669$

Re bonjour
A la commande
.Range(Evaluate("ADDRESS(1,MATCH(MAX(IF((TODAY()-("& _
Rg.Address& "))>1460,"& Rg.Address& ")),"& _
Rg.Address& ",0))")).Select

J'obtiens

Erreur d'exécution 1004
Erreur définie par l'application ou par l'objet









Le 18/06/2011 15:28, MichD a écrit :
As-tu essayé quelque chose comme :

Tu dois adapter le nom de la feuille...

'--------------------------
Sub test()
Dim Rg As Range
With Worksheets("Feuil1")
.Activate
Set Rg = .Range("A5:"& .Cells(5, .Cells(, _
.Columns.Count).End(xlToLeft).Column).Address)
.Range(Evaluate("ADDRESS(1,MATCH(MAX(IF((TODAY()-("& _
Rg.Address& "))>1460,"& Rg.Address& ")),"& _
Rg.Address& ",0))")).Select
End With
End Sub
'--------------------------


MichD
--------------------------------------------
"ze_louloux" a écrit dans le message de groupe de discussion : 4dfc892c$0$30791$

Bonjour à tous
Après utilisation, je m'aperçois qu'il m'aurait fallut une macro qui me
sélectionne la date supérieure à 4 ans et non égale à 4 ans comme je
l'avais demandé.

(Mon objectif est de supprimer des données qui ont plus de 4 ans d'age
et si je n'allume pas mon ordi de 2 ou 3 jours, là le programme me les
saute)

Merci encore de votre aide et on en particulier à MichD qui m'avait
traité exactement ma demande




Le 31/05/2011 19:07, MichD a écrit :
Bonjour,

Dans le ThisWorkbook de ton classeur, tu copies ceci :

'--------------------------------
Private Sub Workbook_Open()
Call Trouver_La_Date
End Sub
'--------------------------------

Dans un module standard, tu inscris cette procédure :
Tu adaptes le nom de la feuille dans la procédure.
Elle est adaptée pour la ligne 5, elle retrouve la première date qu'elle trouve
et sélectionne la cellule.
'--------------------------------------
Sub Trouver_La_Date()
Dim X As Variant
With Worksheets("Feuil1")
.Activate
X = Application.Match(CLng(DateSerial(Year(Now()) - 4, _
Month(Now()), Day(Now()))), Range("5:5").Value2, 0)
If IsNumeric(X) Then
.Range("A5").Offset(, X - 1).Select
Else
.Range("A1").Select
End If
End With
End Sub
'--------------------------------------


MichD






Bonjour à tous
Je voudrai créer une macro
A l'ouverture d'un fichier Excel
Sur une feuille nommée "Bilan des frais"

Sélectionner une date (si elle existe) antérieure à aujourd'hui de 4
ans sur la 5ème ligne

Merci de votre aide










Avatar
DanielCo
Plus exactement :

Application.Goto Sheets("Bilan des frais").[A1]
With Sheets("Bilan des frais")
Var = Evaluate("MIN(IF('Bilan des frais'!5:5>0,'Bilan des
frais'!5:5))")
If Var < Application.EDate(Date, -48) Then
.[A5:IV5].Find(CDate(Var), , xlValues).Select
End If
End With

Daniel


With Sheets("Bilan des frais")
Var = Evaluate("MIN(IF('Bilan des frais'!A5:IV5>0,'Bilan des
frais'!A5:IV5))")
If Var < Application.EDate(Date, -48) Then
.[A5:IV5].Find(CDate(Var), , xlValues).Select
End If
End With

(syntaxe valable pour Excel 2007 et versiions suivantes (voir remarque de
MichD pour les versions antérieures).
Daniel


Bonjour à tous
Après utilisation, je m'aperçois qu'il m'aurait fallut une macro qui me
sélectionne la date supérieure à 4 ans et non égale à 4 ans comme je
l'avais demandé.

(Mon objectif est de supprimer des données qui ont plus de 4 ans d'age
et si je n'allume pas mon ordi de 2 ou 3 jours, là le programme me les
saute)

Merci encore de votre aide et on en particulier à MichD qui m'avait traité
exactement ma demande




Le 31/05/2011 19:07, MichD a écrit :
Bonjour,

Dans le ThisWorkbook de ton classeur, tu copies ceci :

'--------------------------------
Private Sub Workbook_Open()
Call Trouver_La_Date
End Sub
'--------------------------------

Dans un module standard, tu inscris cette procédure :
Tu adaptes le nom de la feuille dans la procédure.
Elle est adaptée pour la ligne 5, elle retrouve la première date qu'elle
trouve
et sélectionne la cellule.
'--------------------------------------
Sub Trouver_La_Date()
Dim X As Variant
With Worksheets("Feuil1")
.Activate
X = Application.Match(CLng(DateSerial(Year(Now()) - 4, _
Month(Now()), Day(Now()))), Range("5:5").Value2, 0)
If IsNumeric(X) Then
.Range("A5").Offset(, X - 1).Select
Else
.Range("A1").Select
End If
End With
End Sub
'--------------------------------------


MichD






Bonjour à tous
Je voudrai créer une macro
A l'ouverture d'un fichier Excel
Sur une feuille nommée "Bilan des frais"

Sélectionner une date (si elle existe) antérieure à aujourd'hui de 4
ans sur la 5ème ligne

Merci de votre aide
Avatar
MichD
La procédure fonctionne correctement sur une version 2002

SAUF SI :

a ) si une des cellules de la ligne 5 est au format "Texte" ou contient du texte.
b ) Une date répondant à ton critère n'existe pas en ligne 5:S .
Dans les 2 cas, cela génère une erreur : "Erreur d'exécution 1004"

Si tu veux passer outre ces 2 types d'erreur, tu ajoutes en début de macro : On Error Resume Next
Évidement, aucune date ne sera sélectionnée.

Sinon, publie ton fichier en utilisant cette adresse cijoint.fr en ne laissant que la feuille et la ligne
contenant les dates. Tu nous retournes ici, l'adresse que tu auras obtenue.

MichD
--------------------------------------------
Avatar
ze_louloux
Bonjour
Effectivement sur la ligne 5, il y a format date, format texte et format
monétaire

Ci-joint le fichier

http://www.cijoint.fr/cjlink.php?file=cj201106/cijc2t1bYT.xls

Merci de m'aider autant



Le 18/06/2011 20:19, MichD a écrit :
La procédure fonctionne correctement sur une version 2002

SAUF SI :

a ) si une des cellules de la ligne 5 est au format "Texte" ou contient du texte.
b ) Une date répondant à ton critère n'existe pas en ligne 5:S .
Dans les 2 cas, cela génère une erreur : "Erreur d'exécution 1004"

Si tu veux passer outre ces 2 types d'erreur, tu ajoutes en début de macro : On Error Resume Next
Évidement, aucune date ne sera sélectionnée.

Sinon, publie ton fichier en utilisant cette adresse cijoint.fr en ne laissant que la feuille et la ligne
contenant les dates. Tu nous retournes ici, l'adresse que tu auras obtenue.

MichD
--------------------------------------------

1 2 3 4