|
Publicité | ||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : mars 2008 Messages : 19 ![]() |
Bonjour,
Dans cette procédure, je passe en revue un certain nombre de date calculée à partir d'une date initiale et incrémentée à chaque passage. J'ai besoin de savoir si cette date est un jour férié ou non. Je dispose donc dans une feuille de la liste des jours fériés, et j'utilise la fonction FIND Code :
Jour 14/07/2008 15/08/2008 11/11/2008 25/12/2008 01/01/2009 13/04/2009 01/05/2009 08/05/2009 21/05/2009 01/06/2009 14/07/2009 15/08/2009 01/11/2009 11/11/2009 25/12/2009 01/01/2010 05/04/2010 01/05/2010 08/05/2010 13/05/2010 24/05/2010 14/07/2010 01/11/2010 11/11/2010 25/12/2010 Ca marche bien en général : c renvoie Nothing si le jour n'est pas férié, et la date trouvée si le jour est férié. SAUF dans un cas particulier : pour le cas où DateEn Cours est le 11/01/2010 (non férié...) il me renvoie la date du 11/11/2010. J'ai beau tourner le pb dans tous les sens, je ne trouve pas d'explication, donc pas de solution. D'où cela peut-il venir ? Merci pour votre réponse. |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 201 ![]() |
Bonjour,
une solution peut-être... Tu sélectionnes tes données de jours et tu passes les cellules en format Standard, tu obtiendras des nombres (Numéro de série)*. *vois le tutoriel à côté de ma signature si besoin pour les explications. et tu modifies ton code ainsi : Code :
cordialement, Didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mars 2008 Messages : 19 ![]() |
Merci pour la réponse. J'avais bien pensé à cette solution, mais je trouve bizarre qu'il faille mettre en œuvre des solutions de contournement... Est ce un bug ? J'ai constaté que cela se produisait pour toutes les années : le 11/01 est confondu avec le 11/11. Je ne pense pas que cela soit un problème de format de date. J'ai essayé de formater de différentes manières sans résoudre quoi que ce soit. Alors que la fonction RECHERCHEV ne provoque pas cette erreur dans une feuille de calcul.
|
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : décembre 2008 Messages : 264 ![]() |
J'ai bien essayer de comprendre pourquoi mais je ne vois vraiment pas.
Effectivement ça ne parait pas normal de contourner le problème, et encore faut-il savoir qu'il y a un problème. Lorsque l'on développe quelque chose on ne peut matériellement pas vérifier toutes les dates. J'espère qu'on aura une explication Merci de l'info JP Petite omission Même problème avec Excel 2007 Dernière modification par Pierre Fauconnier ; 11/03/2010 à 22h08. Motif: Merci d'édier votre message pour le modifier |
|
|
00
|
|
|
#5 |
|
Office & Excel ![]() ![]() ![]() |
VBA ne confond pas 11/01 avec 11/11 mais avec 01/11 (01/11 et 11/11 sont tous deux fériés)=> c'est bien un problème de format de date (date us vs date fr)
Le tuto de Didier explique bien le pourquoi du comment...
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire) --------------- Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP Vous souhaitez rédiger pour DVP? Contactez-moi Amoureux de la langue française? Venez corriger nos ressources VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA... N'oubliez pas de VOTER (en bas à droite d'un message) --------------- |
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : mars 2008 Messages : 19 ![]() |
J'ai bien pensé à un pb de format US ... Mais je ne crois pas que ça vienne de là. Le code suivant montre bien qu'il trouve le 11/11 et pas le 01/11.
Code :
|
||
|
|
00
|
|
|
#7 | |||||
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 201 ![]() |
Bonjour,
Find ne bogue pas et se comporte normalement par rapport à sa définition et aux choix de la langue et des paramètres système, mais peut causer des résultats inattendus si on ne prend pas en compte tous les paramètres Fais le test suivant : colonne 7, mets la liste suivante : 6 667 666 669 3663 66664 Dans un module les macros suivantes (brouillions adapté des tiennes qui sont propres) Code :
Code :
Attention, il y a un piège de mémorisation, invalide la paramètre ajouté d'une des deux et fais les tourner à suivre... Conseils : voir attentivement l'aide vba, dans ce genre de cas, il est précisé de bien renseigner l'intégralité de certains paramètres, les derniers utilisés devenant ceux par défaut jusqu'au redémarrage d'Excel ! Ici, il serait bon aussi de préciser ceux concernés : Citation:
Didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
Dernière modification par Ormonth ; 14/03/2010 à 13h39. Motif: Ajout de "conseils" |
|||||
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : mars 2008 Messages : 19 ![]() |
Ok, et merci pour la solution
le code est donc le suivant : Code :
le paramètre LookAt indique si la recherche doit se faire sur l'ensemble ou sur une partie de la chaîne (c'est l'équivalent de la fonction Edition>Recherche ou ^f du menu d'Excel) , ce qu'illustre parfaitement tes exemples. Mais dans le cas d'une date ? Je ne comprends pas comment il peut trouver que "11/11/2010" contient "11/01/2010" et ce qu'on soit en format jj/mm/aaaa ou mm/jj/aaaa. |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com