Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2812 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2235384
_pollux_
Pan ! t'es mort
Posté le 11-08-2014 à 15:03:27  profilanswer
 

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 !
mood
Publicité
Posté le 11-08-2014 à 15:03:27  profilanswer
 

n°2235396
patrice337​40
Avec la réponse, c'est facile.
Posté le 11-08-2014 à 19:39:44  profilanswer
 

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
n°2235436
Marc L
Posté le 12-08-2014 à 10:08:00  profilanswer
 

 
           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 …
 

n°2235443
_pollux_
Pan ! t'es mort
Posté le 12-08-2014 à 10:55:12  profilanswer
 

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 !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
[RESOLU ] [VBA] ERREUR 91 - FINDNEXTFonction Onmouseover
[RESOLU] [VBA] - EXCEL 2010 - Optimisation de codeProgrammeur C++/OpenGL recherché
HELP pour comparaison de cellules VBAVBA - creer tableau dans word
Recherche script de grid tres performantSQL | Sélection sur le max d'une date
Critère avec Fonction Year() 
Plus de sujets relatifs à : [VBA] - fonction FIND associée à la recherche d'une date


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR