Aide pour trouver date suivante

bonjour le forum,

bonjour à tous,

je cherche de l'aide pour trouver la date suivante (la plus proche) lorsque la date à trouver en colonne B n'existe pas

--> lgn = Range("B:B").Find(dte, lookat:=xlWhole).Row

ici il s'agit de trouver la ligne du 01/07/2019 mais cette date n'existe pas, j'aimerais que le code recherche la ligne du 02/07/2019 et si cette date n'existe pas alors 03/07/2019....jusqu'a trouver une date et renvoyer sa ligne.

ici mon code bug depuis un moment et il m'a fallu du temps pour comprendre que c'est parce qu'il n'avait pas d’occurrence, le 01/07/2019 il n'y a pas eu de production donc cette date n'est pas dans la liste, ça peut changer d'une année à l'autre.

merci d'avance pour votre aide.

Pedro.

dte = DateSerial(Year(Date), 7, 1)

sem = Format(Now, "ww")

If sem < 40 Then

lgn = 2

Else: lgn = Range("B:B").Find(dte, lookat:=xlWhole).Row

End If

Bonjour,

.Find sur des dates c'est toujours scabreux.

Utilise plutôt Equiv (en vba si tu veux) pour avoir la date inférieure ou égale.

Si c'est l'inférieure prendre la ligne suivante.

eric

Bonjour

Un essai à tester. Te convient-il ?

Bye !

6classeur1-v1.xlsm (21.79 Ko)

bonjour @gmb,

votre proposition est intéressante, l'idée y est!! à moi de l'exploiter au mieux pour arriver à mes fins.

merci d'avoir consacré de votre temps à ma demande.

bien à vous.

Pedro.

mais de rien dudesson...

re:

voilà qui réglé mon problème.

j'ai testé sur plusieurs dates qui ne sont pas en colonne B, le code trouve le numéro de ligne de la date suivante la plus proche.

merci bcp.

dte = DateSerial(Year(Date), 9, 1)

For N = 0 To Range("B" & Rows.Count).End(xlUp).Row - 1

Set Cell = Range("B2:B15000").Find(dte + N)

If Not Cell Is Nothing Then

lgn2 = Cell.Row

Exit For

End If

Next N

sem = Format(Now, "ww")

If sem < 40 Then

lgn = 2

Else: lgn = lgn2

End If

J'avais bien une solution en 2 lignes, sans boucle sur toutes les cellule, mais comme j'ai ma cape d'invisibilité je vais la garder.

eric

J'avais bien une solution en 2 lignes, sans boucle sur toutes les cellule, mais comme j'ai ma cape d'invisibilité je vais la garder.

Salut Eric

Je te comprends !

Et je regrette : ta solution cachée pique ma curiosité.

Bye !

Bonjour Eric, Gmb,

j'ai mis du temps à comprendre mais là ça y est, vraiment désolé (tête ailleurs).

Pedro.

Bonjour,

ta solution cachée pique ma curiosité.

Spoiler

'date cherchée en D1

lig = Application.Match(CLng([D1]), [B:B], 1)

lig = lig - (Cells(lig, 2) <> [D1])

Je t'ai vu dudesson, tu as regardé !

eric

Bonjour à tous

@eriiic : merci et bravo !

bonjour @Eric, @gmb,

en effet c'est très très fort.

merci à vous deux.

Pedro.

Rechercher des sujets similaires à "aide trouver date suivante"