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

Qq peut me dire comment cela peut être possible

7 réponses
Avatar
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.

7 réponses

Avatar
Fredo P.
C'est une à priori une spécificité XL2007 vu que pour Xl2002 et 2003 le pb
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." a écrit dans le message de news:
ktbs7i$965$
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.

Avatar
Fredo P.
Il faut oublier tout mon tintouin, Analysis Toolpak et Toolpak VBA étaient
désactivés.



"Fredo P." a écrit dans le message de news:
ktbs7i$965$
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.

Avatar
MichD
Bonjour,

À 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
---------------------------------------------------------------
Avatar
MichD
Analysis Toolpak et Toolpak VBA n'ont pas vraiment
d'impact sur la méthode "Find()" d'un objet "Range".


MichD
---------------------------------------------------------------
Avatar
Fredo P.
"MichD" a écrit dans le message de news:
ktdbsv$m5s$
Analysis Toolpak et Toolpak VBA n'ont pas vraiment
d'impact sur la méthode "Find()" d'un objet "Range".



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
Avatar
MichD
Bonjour Fredo P.


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
---------------------------------------------------------------
Avatar
Fredo P.
Bonsoir 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" a écrit dans le message de news:
ktirpg$og6$
Bonjour Fredo P.


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
---------------------------------------------------------------