[VBA] - fonction FIND associée à la recherche d'une date

- fonction FIND associée à la recherche d'une date [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 11-08-2014 à 15:03:27    

Bonjour,

 

je débute en VBA et je cale sur une connerie ...

 

je cherche à détecter une date dans un vecteur de dates. Je suis parti sur l'utilisation de FIND de la façon suivante :

 
Code :
  1. Set foundCell = zone.Find(What:=CDate("01/05/2014" ), LookAt:=xlPart)
 

Mon problème, c'est que si ma date est écrite telle quelle dans ma feuille, ça marche. Mais si il s'agit d'une date calculée préalablement par une autre fonction, ça ne marche plus. Comme si FIND n'était pas capable de simplement lire la valeur et qu'il cherchait dans la formule...

 

Si un spécialiste a une idée, je suis preneur...

 

edit: j'ai bien essayé de rajouter un .Value quelque part... mais FIND ne peut travailler que sur un vecteur (RANGE) semble-il.

 

edit² : trouvé, fallait mettre le bon format de date sur la feuille (xx/xx/xxxx) et demander à FIND de chercher dans les valeurs avec LookIn:=Values


Message édité par _pollux_ le 11-08-2014 à 16:16:03

---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 11-08-2014 à 15:03:27   

Reply

Marsh Posté le 11-08-2014 à 19:39:44    

Bonjour
 

Citation :

Mon problème, c'est que si ma date est écrite telle quelle dans ma feuille, ça marche. Mais si il s'agit d'une date calculée préalablement par une autre fonction, ça ne marche plus.

Ton problème vient certainement d'ailleurs car ce code fonctionne parfaitement :

Dim d As Date
d = #5/1/2014#  'Attention en VBA le format est m/j/aaaa
Set foundcell = zone.Find(What:=d, LookAt:=xlPart)


Message édité par patrice33740 le 11-08-2014 à 19:40:40

---------------
Cordialement, Patrice
Reply

Marsh Posté le 12-08-2014 à 10:08:00    

 
           Bonjour,
 
           il est primordial de bien passer les paramètres à cette fonction Find,
           particulièrement avec des cellules au format Date !  (Donc ni Standard ni Texte …)
 
           Ne pas préciser son paramètre LookIn (consulter l'aide VBA intégrée de cette fonction) est une erreur ! …
           Pourtant rien qu'en effectuant la recherche manuellement depuis la feuille de calculs
           tout en utilisant le Générateur de macros, le code est livré sur un plateau ‼ …
 
           LookIn peut prendre deux valeurs :  xlFormulas ou xlValues
 
           Astuce pour des cellules au format Date saisies directement (donc sans formule de calculs) : toujours préférer xlFormulas !
 
           Le format Date est juste un format d'affichage car en interne la valeur est stockée sous la forme d'un nombre.
           Il est donc aisé de chercher une date sous forme de texte via les fonctions CDate et DateValue par exemple …
 
           Rappel primordial : VBA étant nativement en anglais, il évalue donc les dates "texte" uniquement sous le format Mois/Jour/Année !
           D'où l'importance d'utiliser une fonction de conversion au format Date
 
           Avec le paramètre xlValues de la fonction Find, la recherche s'effectue selon le format d'affichage ‼
           Donc penser à uniformiser le format de ces cellules puis passer le paramètre via la fonction Format
           ou bien rechercher via une valeur numérique comme une date convertie en entier numérique via une variable
           ou comme la propriété Value2 d'une cellule …
 

Reply

Marsh Posté le 12-08-2014 à 10:55:12    

Marc L a écrit :

 
           Bonjour,
 
           il est primordial de bien passer les paramètres à cette fonction Find,
           particulièrement avec des cellules au format Date !  (Donc ni Standard ni Texte …)
 
           Ne pas préciser son paramètre LookIn (consulter l'aide VBA intégrée de cette fonction) est une erreur ! …
           Pourtant rien qu'en effectuant la recherche manuellement depuis la feuille de calculs
           tout en utilisant le Générateur de macros, le code est livré sur un plateau ‼ …
 
           LookIn peut prendre deux valeurs :  xlFormulas ou xlValues
 
           Astuce pour des cellules au format Date saisies directement (donc sans formule de calculs) : toujours préférer xlFormulas !
 
           Le format Date est juste un format d'affichage car en interne la valeur est stockée sous la forme d'un nombre.
           Il est donc aisé de chercher une date sous forme de texte via les fonctions CDate et DateValue par exemple …
 
           Rappel primordial : VBA étant nativement en anglais, il évalue donc les dates "texte" uniquement sous le format Mois/Jour/Année !
           D'où l'importance d'utiliser une fonction de conversion au format Date
 
           Avec le paramètre xlValues de la fonction Find, la recherche s'effectue selon le format d'affichage ‼
           Donc penser à uniformiser le format de ces cellules puis passer le paramètre via la fonction Format
           ou bien rechercher via une valeur numérique comme une date convertie en entier numérique via une variable
           ou comme la propriété Value2 d'une cellule …
 


 
Oui, je confirme, c'est ce que j'avais écrit dans mon edit² ;)


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed