Incrementation automatique pour RechercheV via Validation de donnée

Bonjour
Dans mon fichier en annexe deux onglets pour effectuer des payement à échéance.
A) Payement; B) TableauMois
J’ai déjà réalisé certains relations (Onglet A) que j’ai appelé « Pre-Defini » faisant appel à des date pré-fixées et d’autres plus nombreuses (jour-mois) qui font appel dans l’onglet B à la colonne « J ».
Afin de concentrer la recherche sur un seul tableau serait-il possible d’incrémenter a chaque nouveau choix de payement la partie de l’onglet B dans la colonne « J » =DATE($J$1;$K18;11) où le chiffre « 11 » serait remplacer par un autre chiffre (correspondant à la date choisie dans l’onglet A de la cellule de la colonne « ChoixMois »
Une question annexe me vient à l’esprit :« Dois-je définir, dans la fonction"RechercheV », la table des matrices par la créations de « Tableau » ou bien seulement en nommant des plages par « Définir des nom »"? Quelle en serait l’avantage?
Je vous remercie d’avance pour vos réponses et vous souhaite une belle journée.
Jean-Léon
DatePayement.xlsx (20,6 Ko)

un essai avec une formule et une fonction personnalisée
DatePayement.xlsm (29,2 Ko)

Bonjour,
Hello Cow18,
Une proposition.
Cordialement
DatePayement.xlsx (28,4 Ko)

bonjour Zebulon, j’avais pris la date « après », mais c’était « avant » …
DatePayement.xlsm (25,7 Ko)

re,
Et, comme tout le monde le sait :
c’était mieux avant. :stuck_out_tongue_winking_eye:

1 « J'aime »

Bonjour à vous deux !
Vous êtes merveilleux un tout grand merci !
Je ne connaissais pas la formule « precedent » et je n’ai pas encore trouvé son explication.
Pourriez-vous me faire un petit mot sur cette formule et quel est son contraire?
Dans quelle formule les tableaux de l’onglet « Parametre » entre-t-il ?
J’ai complété votre tableau par la formule en D1 de l’onglet « Payement »:
=FIN.MOIS(AUJOURDHUI();0)
Encore un tout grand merci
Jean-Léon

c’est une fonction personnalisée, spécialement écrit pour ce problème, vous la trouvez dans le module1

Function Precedent(Quoi, Optional Apres As Long)
     Dim sp, jour, r, d As Long, X, MaDate As Long
     sp = Split(Quoi, "-")
     MaDate = IIf(Apres = 0, Date, Apres)
     If UBound(sp) <> 1 Then
          X = "erreur"
     Else
          If StrComp(sp(1), "mois", 1) = 0 Then     'on demande le jour d'un mois
               b = (Day(MaDate) > --sp(0))      'on a déjà dépassé ce jour pendant le mois actuel
               d = DateSerial(Year(MaDate), Month(MaDate) - b, 1)     'le premier du mois voulu
               d = d + Application.Min(--sp(0), Day(WorksheetFunction.EoMonth(d, 0))) - 1     'si sp(0) > nombre de jours de ce mois
               X = Application.Max(MaDate, CLng(WorksheetFunction.WorkDay_Intl(d, -1, , Range("fériés"))))
          Else
               r = Application.Match(sp(1), Range("tbl_mois"), 0)     'quel mois
               If Not IsNumeric(r) Then
                    X = "problème"           'mois pas reconnu
               Else
                    b = MaDate > DateSerial(Year(MaDate), r, sp(0))     'on a déjà dépassé ce jour pendant l'année actuelle
                    X = Application.Max(MaDate, CLng(WorksheetFunction.WorkDay_Intl(DateSerial(Year(MaDate) - b, r, sp(0)), -1, , Range("Fériés"))))
               End If
          End If
     End If

     Precedent = X
End Function

Bonjour Cow18 je comprend mieux pourquoi je ne trouvais pas…
J’ai essayer plus en profondeur et j’ai remarqué que le 1° janvier, le 1° mai, le 1° novembre reste, or il est considéré comme jour féries dans l’onglet « paramètre ».
Serait-il possible,pour le payement de ces jours (1°), d’annoncer le 2° jour du mois et non le dernier jour du mois précédant ?
Grand merci à vous.