Macro trouvant la date la plus proche

BenHarber

XLDnaute Occasionnel
Bonjour les « Forumers » du samedi,
Plusieurs posts traitent du pb. mais je n’ai pas trouvé de solution exacte à ce que je cherche, aussi je me permets de vous l’exposer.

Soit une plage A1 à A10 qui recense, dans l’ORDRE CHRONOLOGIQUE, une série de jours fériés.
Je saisis une date aléatoire que je place dans une variable « maDate »
Je souhaiterais connaître le code VBA qui me donne le n° de ligne du jour férié le plus proche situé AVANT maDate et le n° de ligne du jour férié le plus proche qui se situe APRES maDate.

Quelqu’un peut-il me donner un coup de main ?

Merci beaucoup

Cordialement,
 

ERIC S

XLDnaute Barbatruc
Re : Macro trouvant la date la plus proche

Bonjour

non testé

dim madate as date,lferieavant as single
madate=........
lferieavant=0
for i=1 to 10
if cell(i,1).value<madate then lferieavant=i
next
if not lferieavant=0 then msgbox ("Jour férié précédent ligne " & lferieavant)
il not lferieavant=10 then msgbox ("Jour férié suivant ligne " & lferieavant+1)


peut-être cdate(cell(i,1)) si pb
 

BenHarber

XLDnaute Occasionnel
Re : Macro trouvant la date la plus proche

Bonjour Eric et Bernard,
Vos solutions fonctionnent et je vous en remercie.

Cependant, vu que ma plage de recherche peut comporter plusieurs milliers de lignes (et non pas 10 comme je l'ai annoncé par simplification, dans mon exemple) je me demandais s'il n'existait pas une méthode plus "directe" qui ne me fasse pas passer par une boucle.
Un genre de "find" la valeur exacte ou la valeur immédiatement inférieure + valeur immédiatement supérieure ??

Savez-vous si ça existe ?

Merci d'avance pour votre réponse !

Cordialement,
 

BenHarber

XLDnaute Occasionnel
Re : Macro trouvant la date la plus proche

OK Eric, MAIS ...
...je souhaiterais le faire en code VBA. J'ai lu sur le sîte qu'il y avait une fonction "VlookUp" mais je ne sais pas si elle pourrait répondre à mon besoin, et je ne sais pas l'utiliser, n'ayant pas l'aide Excel de cette fonction installée sur mon poste !
 

chris

XLDnaute Barbatruc
Re : Macro trouvant la date la plus proche

Bonjour
Vlookup et recherchev c'est la même chose.
Si les lignes sont classées on peut trouver la plus proche en dessous avec cette fonction et déduire l'autre en ajoutant 1.
Sinon equiv (ou match) permet de demander la valeur en-dessous ou la velur au-dessus selon le dernier argument utilisé.
 

BenHarber

XLDnaute Occasionnel
Re : Macro trouvant la date la plus proche

Bonjour Chris et merci pour ta réponse,
Mais si j'ai bien compris (ce qui n'est pas sur du tout !) les fonctions 'equiv' ou 'match' ou 'RechercheV' ou 'Vlookup' sont des fonctions Excel et pas VBA : y-a-til une correspondance en VBA ou dois-je obligatoirement passer par une boucle ?

Merci d'avance pour ta réponse.

Cordialement,
 

chris

XLDnaute Barbatruc
Re : Macro trouvant la date la plus proche

RE
Oui ce sont des fonctions Excel.
En VBA je ne vois rien d'autre qu'une boucle.
On pourrait aussi travailler sur le principe de la dichotomie mais je ne pense pas que ce soit plus rapide.
Pour info cela revient à tester la valeur située au milieu, dont sur 1000 lignes, le 500ème ce qui élimine déjà une moitié, puis le milieu de la moitié restante donc 250ème ligne ou 750 ème.
La boucle n'a plus qu'à traiter au maximum 1/4 des lignes (ou un 8ème si on recoupe en deux).
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 415
Messages
2 088 237
Membres
103 779
dernier inscrit
FrancoisB2