Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Extraction de dates

Escourb

XLDnaute Nouveau
Bonjour,
Je voudrais extraire pour une année donnée les dates correspondant au troisième vendredi de chacun des mois.
J'y arrive en partant du calendrier de l'année en recherchant pour chaque date le code jour = 5 (vendredi), puis dans un second temps en recherchant dans chacun de mois la troisième occurrence de ce code 5.
C'est très lourd!
Je voudrais trouver un moyen via une macro en VBA de faire cette recherche à base de 3 paramètres.
Paramètre 1 Année
Paramètre 2 Code du jour recherche (Dans mon cas 5)
Paramètre 3 Resultat occurs 12 qui contiendra 12 dates correspondant pour chacun des 12 mois de l'année au troisième vendredi.
Merci de me dire si vous pensez que cela est faisable.
EG
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

A essayer formule matricielle
VB:
=DATE($B$1;{1;2;3;4;5;6;7;8;9;10;11;12};7)-JOURSEM(DATE($B$1;{1;2;3;4;5;6;7;8;9;10;11;12};1)-5;3)+14

JHA
 

Pièces jointes

  • Classeur troisieme vendrdi.xlsx
    9.3 KB · Affichages: 12

job75

XLDnaute Barbatruc
Bonjour Escourb, Bruno, JHA,

Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim an%, jour, pos As Byte, dat&, n As Byte, resu&(), nn As Byte
an = [C3]: jour = [D3]: pos = [E3]
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
[G3:G14].ClearContents 'RAZ
If Application.CountBlank([C3:E3]) = 0 Then
    jour = Application.Match(jour, Array("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"), 0)
    For dat = DateSerial(an, 1, 1) To DateSerial(an + 1, 1, 0)
        If Month(dat) <> Month(dat - 1) Then n = 0
        If Weekday(dat) = jour Then n = n + 1: If n = pos Then ReDim Preserve resu(nn): resu(nn) = dat: nn = nn + 1
    Next
    If nn Then [G3].Resize(nn) = Application.Transpose(resu) 'restitution
End If
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on modifie une cellule quelconque.

A+
 

Pièces jointes

  • Classeur(1).xlsm
    18 KB · Affichages: 5

mapomme

XLDnaute Barbatruc
Bonsoir @Escourb , salut @BrunoM45 ,

Un essai avec une formule à 4 paramètres :
  • l'année (à quatre chiffres)
  • le mois (entre 1 et 12)
  • le type de jour (deux lettres: "lu", "ma", "me", "je", "ve", "sa", "di")
  • le quantième (un chiffre N pour le Nème type de jour du mois)

exemple : pour le 2ème jeudi d'octobre 2023, les quatre arguments seront : 2023, 10, "je", 2

La formule est dans la colonne E :
Code:
=DATE(A2;B2;7*D2)+1-JOURSEM(DATE(A2;B2;7*D2);10+CHERCHE(C2;"xlumamejevesadi")/2)
où A2 contient l'année, B2 contient le mois, C2 contient le type de jour et D2 l’occurrence à chercher.
 

Pièces jointes

  • Escourb- Nème jour mois- v1.xlsm
    12 KB · Affichages: 18
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…