OVH Cloud OVH Cloud

RRRRo!! la date

5 réponses
Avatar
Frédo P.
Bonsoir ttes et ts
Encore un pb de date
çà coince à la 2ième ligne sauf si je formate la plage en standard ou
nombre, avec dte non pas "as Date" mais "as Double". je souhaite garder la
plage formatée en Date, je cherche l'astuce.

dte = Evaluate("Max(feuil1!A18:A29)") 'en pas à pas dte affiche 01/12/03
derl = Sheets("Feuil1").[A18:A29].Find(dte, LookIn:=xlValue).Row

--
Fred

5 réponses

Avatar
Daniel.M
Salut Frédo,

Dans une ficelle de six mois (environ), Denis (de même que d'autres) faisait
part des problèmes de recherche selon qu'on faisait varier le format des dates.

La solution que je préfère est de convertir en Long et de faire un Match()
ensuite.
Ça fonctionne peu importe les conventions/formats de dates. La méthode FIND ne
pourra pas t'assurer de cela.

Dim dte As Date
Dim derL As Variant

dte = Application.Max(Worksheets("Feuil1").Range("A18:A29"))
derL = Application.Match(CLng(dte), _
Worksheets("Feuil1").Range("A18:A29"), 0)
If IsError(derL) Then
'msgbox "Pas Trouvé" ' on gère l'erreur comme on veut!
Else
derL = derL + 17 ' Première ligne doit être = 18
End If

Salutations,

Daniel M.

"Frédo P." wrote in message
news:3fcb8929$0$2354$
Bonsoir ttes et ts
Encore un pb de date
çà coince à la 2ième ligne sauf si je formate la plage en standard ou
nombre, avec dte non pas "as Date" mais "as Double". je souhaite garder la
plage formatée en Date, je cherche l'astuce.

dte = Evaluate("Max(feuil1!A18:A29)") 'en pas à pas dte affiche 01/12/03
derl = Sheets("Feuil1").[A18:A29].Find(dte, LookIn:=xlValue).Row

--
Fred





Avatar
Vincent.
Bonsoir
Entre la première et la deuxième, ajoute :
dte = FormatDateTime(DateValue(dte),"dd/mm/yyyy")
de sorte que la date a cherché soit écrité exactement de
la même façon dans la variable dte et dans la barre de
formule d'XL...
A adapter donc !
A+

V.

-----Message d'origine-----
Bonsoir ttes et ts
Encore un pb de date
çà coince à la 2ième ligne sauf si je formate la plage en
standard ou

nombre, avec dte non pas "as Date" mais "as Double". je
souhaite garder la

plage formatée en Date, je cherche l'astuce.

dte = Evaluate("Max(feuil1!A18:A29)") 'en pas à pas dte
affiche 01/12/03

derl = Sheets("Feuil1").[A18:A29].Find(dte,
LookIn:=xlValue).Row


--
Fred



.



Avatar
Frédo P.
Ah! Voila !
J'ai essayé aussi avec Match mais il me manquait le CLng
Merci Daniel
--
Fred


"Daniel.M" a écrit dans le message de
news:
Salut Frédo,

Dans une ficelle de six mois (environ), Denis (de même que d'autres)
faisait

part des problèmes de recherche selon qu'on faisait varier le format des
dates.


La solution que je préfère est de convertir en Long et de faire un Match()
ensuite.
Ça fonctionne peu importe les conventions/formats de dates. La méthode
FIND ne

pourra pas t'assurer de cela.

Dim dte As Date
Dim derL As Variant

dte = Application.Max(Worksheets("Feuil1").Range("A18:A29"))
derL = Application.Match(CLng(dte), _
Worksheets("Feuil1").Range("A18:A29"), 0)
If IsError(derL) Then
'msgbox "Pas Trouvé" ' on gère l'erreur comme on veut!
Else
derL = derL + 17 ' Première ligne doit être = 18
End If

Salutations,

Daniel M.

"Frédo P." wrote in message
news:3fcb8929$0$2354$
Bonsoir ttes et ts
Encore un pb de date
çà coince à la 2ième ligne sauf si je formate la plage en standard ou
nombre, avec dte non pas "as Date" mais "as Double". je souhaite garder
la


plage formatée en Date, je cherche l'astuce.

dte = Evaluate("Max(feuil1!A18:A29)") 'en pas à pas dte affiche 01/12/03
derl = Sheets("Feuil1").[A18:A29].Find(dte, LookIn:=xlValue).Row

--
Fred









Avatar
AV
Salut Daniel,

La solution que je préfère est de convertir en Long


Application.Match(dte * 1.....
Me semble que ça permet d'éviter des surprises (erreur type) si par hasard la
date affichée est 31-déc alors que la réalité est qque chose comme ça :
31/12/2003 12:35:15
Ou plus académique (?) : Match(CDbl(dte)......

C'était pour 2 sous TTC ;-)
AV

Avatar
Daniel.M
Salut Alain,

:-)
Tu as bien raison. La conversion en Double est plus générale et permet de
traiter les cas avec des heures.

Salutations,

Daniel M.

"AV" wrote in message
news:
Salut Daniel,

La solution que je préfère est de convertir en Long


Application.Match(dte * 1.....
Me semble que ça permet d'éviter des surprises (erreur type) si par hasard la
date affichée est 31-déc alors que la réalité est qque chose comme ça :
31/12/2003 12:35:15
Ou plus académique (?) : Match(CDbl(dte)......

C'était pour 2 sous TTC ;-)
AV