Qq peut me dire comment cela peut être possible
Le
Fredo P.

La routine suivante passe la première condition et pas la suivante:?????
Public Sub RechCourseetTir()
Dim c As Object, Lp As Long
If Application.CountIf([Mémo!A1:A5000], Date) > 0 Then
If Not [Mémo!A1:A5000].Find(Date) Is Nothing Then
Lp = [Mémo!A1:A5000].Find(Date).Row
End If
End If
End Sub
--
Fréd.
Public Sub RechCourseetTir()
Dim c As Object, Lp As Long
If Application.CountIf([Mémo!A1:A5000], Date) > 0 Then
If Not [Mémo!A1:A5000].Find(Date) Is Nothing Then
Lp = [Mémo!A1:A5000].Find(Date).Row
End If
End If
End Sub
--
Fréd.
ne se pose pas.
Est ce une chose connue? MD?
J'ai une réponse pour Xl2007,(un comble!)
Public Sub RechCourseetTir()
Dim c As Object, Lp!, Ld!
If Application.CountIf([Mémo!A1:A5000], Date) > 0 Then
If Not IsError(Application.Match(CDbl(Date),
Sheets("Mémo").Range("A1:A5000"), 0)) Then
Lp = Application.Match(CDbl(Date),
Sheets("Mémo").Range("A1:A5000"), 0)
Ld = Application.Match(CDbl(Date),
Sheets("Mémo").Range("A1:A5000"), 1)
End If
End If
End Sub
À signaler que Cdbl(Date) ne résoud rien avec XL2007
"Fredo P." ktbs7i$965$
désactivés.
"Fredo P." ktbs7i$965$
À moins que tu recherches spécifiquement une date + une heure
ce qu'exprime par exemple la fonction "Now()" ou "Maintenant()"
il est préférable d'utiliser la fonction de conversion "Clng()" au lieu
de "Cdbl()"
Utiliser la fonction "Match()" au lieu de la méthode "Find()" est la
meilleure approche pour rechercher une date. Le seul hic est si dans
ta colonne du avais des valeurs numériques et des dates, la fonction
"Match()" ne pourrait faire une différence entre la valeur numérique
et la date s'il y avait une correspondance!
Aussi loin que je me souvienne, la méthode "Find()" a toujours été
problématique dans la recherche d'une date, et ce pour toutes les
versions d'Excel. (1997 à 2013 inclusivement)
Je te suggère de lire le "Nota bene" dans le bas de la page affichant
l'aide sur la méthode "Find()" dans la fenêtre VBA. Il n'est pas conseillé
d'utiliser la méthode "Find()" sans les paramètres "LookIn", "LookAt"....
car ces paramètres sont définis lors de la première recherche de l'usager
et d'une recherche à l'autre, ils conservent leurs valeurs même s'ils ne
sont
pas nécessairement appropriés pour ces dernières recherches.
MichD
---------------------------------------------------------------
d'impact sur la méthode "Find()" d'un objet "Range".
MichD
---------------------------------------------------------------
Pourtant dés que j'ai coché ses deux complémentaires, la recherche find de
cette routine a fonctionné.
Public Sub RechCourseetTir()
Dim c As Object, Lp As Long
If Application.CountIf([Mémo!A1:A5000], Date) > 0 Then
If Not [Mémo!A1:A5000].Find(Date) Is Nothing Then
Lp = [Mémo!A1:A5000].Find(Date).Row
End If
End If
End Sub
Il y a longtemps, je m'étais amusé à formuler des
commentaires sur le sujet traité par ce fil. Si tu en as le
courage, tu peux lire les commentaires sur les différents codes!
http://cjoint.com/?CHdn2Yv25Wf
En passant, as-tu essayé la méthode "Find" lorsque la colonne
contenant des dates affiche des divers formats de date? As-tu
du succès, peu importe le format de la date? Peu importe si la
date affichée est le résultat d'une saisie manuelle ou le renvoi
d'une formule.
Je te donne une réponse que j'ai faite sur la méthode Find
concernant une autre problématique...
'-------------------------------------------
Effet de la largeur des colonnes sur la méthode "Find" - VBA
Si tu saisis une date manuellement dans la boîte de message, la date doit
avoir le format court date des options régionales du panneau de
configuration ou du format affiché dans la barre des formules... sinon, tu
peux cliquer directement sur une cellule contenant une date pour la
saisie... Contenant la largeur des colonnes, SI le contenu de la plage de
cellules contenant des dates n'est pas le résultat d'une formule, utilise
dans la méthode "Find" ce paramètre :"LookIn:=xlFormulas" au lieu de
"LookIn:=xlValues" et la méthode Find devrait trouver la date que tu
recherches même si la cellule affiche des dièses à cause de son étroitesse.
Cependant, si les dates des cellules sont le résultat de formules ou si tu
as des dates saisies manuellement, tu dois utiliser le paramètre
"LookIn:=xlValues". Dans ce cas, les cellules doivent être suffisamment
larges pour afficher complètement les dates.
'---------------------------------------------------
P.-S. Je maintiens que les macros complémentaires mentionnées
ne devraient pas et n'ont pas d'effet sur le comportement de la
méthode "Find".
Conclusion : Je ne dis pas qu'on ne peut pas utiliser la méthode "find"
pour la recherche d'une date, simplement cette approche et alambiquée
et non avenue dans un certain nombre de cas.
MichD
---------------------------------------------------------------
J'ai eu le courage de lire tous tes commentaires sur le sujet.
Cela met bien au clair toutes les astuces de Find, j'en avait déjà la notion
par la pratique sauf pour "Maintenant()" pour ma part très peu utilisé, que
tu expliques bien, par le fait de sa valeur changeante, est donc impossible
à trouver à l'aide d'une constante.
Merci pour cet apport de commentaires.
"MichD" ktirpg$og6$