Fonction qui coince pour obtenir la date du dernier dimanche du mois

Magic_Doctor

XLDnaute Barbatruc
Bonsoir à tous,

J'ai essayé de réaliser une fonction permettant de connaître la date d'un jour quelconque de la semaine quelle que soit sa position dans un mois donné (par exemple : 3ème lundi du mois de mars 2009). Si cette position va au-delà du mois en question, on obtiendra la date correspondante (par exemple 63ème dimanche après le début du mois choisi comme paramètre de la fonction).
La fonction a l'air de bien marcher, sauf concernant l'option de trouver la date du dernier dimanche (par exemple) d'un mois donné. Suivant les années elle peut se tromper d'une semaine.
Cette fonction est prévue pour fonctionner en français, anglais et espagnol. Afin d'éviter les erreurs, elle fait appel à une autre fonction (de Ti) qui supprime tous les accents. Mercredi en espagnol s'écrit miércoles, on peut très facilement oublier l'accent sur le e. Idem pour février en français.

Merci pour toute aide au sujet de cette fonction.
 

Pièces jointes

  • dates.xls
    47 KB · Affichages: 105
  • dates.xls
    47 KB · Affichages: 110
  • dates.xls
    47 KB · Affichages: 114

Magic_Doctor

XLDnaute Barbatruc
Re : Fonction qui coince pour obtenir la date du dernier dimanche du mois

Bonjour à tous, bonjour Roger,

J'ai donc essayé les 2 formules proposées par Roger et la première semble mieux faire l'affaire.
Mais quant à la traduire en VBA... c'est une toute autre histoire, d'autant que je n'y ai pratiquement rien compris dans la syntaxe.

=B2+(HALLAR(IZQUIERDA(D2;2);"lumamejevesadi")-1)/2-DIASEM(B2;3)+7*(K2+(K2=0)*((HALLAR(IZQUIERDA(D2;2);"lumamejevesadi")-1)/2<DIASEM(B2;3)))

Bon, elle est ici en espagnol, mais peu importe.
N'étant pas un spécialiste des formules, que signifie, par exemple K2+(K2=0) ??

Une chose est certaine : elle marche, mais de là la comprendre pour ensuite la traduire en VBA sans passer par l'enregistreur de macro qui donne forcément des références du type RC[-12]...

Décidément, jongler avec les semaines sur Excel est loin d'être une cinécure !
 

Fo_rum

XLDnaute Accro
Re : Fonction qui coince pour obtenir la date du dernier dimanche du mois

Salut,

que signifie K2 + (K2 = 0) :confused:

C'est magique :

K2 + (K2=0) = K2 + 0 = K2 quand K2 <> 0 et K2 numérique;
K2 = 0 est FAUX et ici, FAUX = 0.

K2 + (K2=0) = K2 + 1 = 1 quand, soit K2 = 0, soit K2 = "";
K2 = 0 est VRAI et ici, VRAI = 1.

Exemple :
si K2 = 1, K2 = 0 est FAUX donc K2 + (K2=0) = K2 + 0 = K2 = 1 !

Le tournis ? Vite, un cachet Docteur !

Cela correspond encore à SI(K2 <> 0 ; K2 ; 1) à la différence prés, qu'ici, K2 peut n'être pas numérique (pas d'erreur signalée).
 

Magic_Doctor

XLDnaute Barbatruc
Re : Fonction qui coince pour obtenir la date du dernier dimanche du mois

Merco Fo Rhum pour cette explication ébrieuse.
Décidément c'est plus abscons que l'embryologie du péritoine !!

Je vais de ce pas me fumer un morceau de moquette pour y voir plus clair.
En fait, sans exemple concret, cette syntaxe est plutôt duraille à capter. Pas étonnant qu'on ne l'a voit qu'à chaque mort d'évèque, ou même de Pape...

Mais merci quand même !
 

ROGER2327

XLDnaute Barbatruc
Re : Fonction qui coince pour obtenir la date du dernier dimanche du mois

À Magic_Doctor
Vous trouverez en pièce jointe l'analyse de la première formule de mon classeur d'hier.​
Bon courage,
ROGER2327
 

Pièces jointes

  • Première formule de Date_décalée_xls.zip
    1 008 bytes · Affichages: 24
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
Re : Fonction qui coince pour obtenir la date du dernier dimanche du mois

Bonjour le forum matinal (il n'est que 1h 30 du mat chez moi...),

J'ai quand même un chouïa étudié les explications de Fo Rum et ai mieux compris la subtilité de cette syntaxe. Mais ça doit mûrir encore un peu près de la scissure de Sylvus...

Merci encore à Roger qui a eu la gentillesse de m'adresser les explications de la formule qu'il m'avait proposée.
Un peu déconcerté par la complexité de celle-ci, je me suis dit qu'il fallait revenir à la case précédente, autrement dit la solution que vous m'aviez envoyée le 5 Germinal CCXVII.
Tout était parfait, au détail près de la date qui pouvait dépasser celle où apparaissait pour la dernière fois dans le mois le jour de la semaine choisi (comprendront ceux qui auront suivi la saga...). Suivant vos conseils, j'ai pris un papier + un crayon gras (j'aime les mines grasses), ai expiré profondément en attendant l'inspiration. Résultat au 1er étage :
je me suis débarrassé d'un paramètre (et hop un de moins !) pour assujettir sa valeur à celle de "RangJourSemaine" qui, dans le fond, n'avait aucune raison d'avoir comme valeur 0.
La fonction a l'air de fonctionner.
Autant dire que sans votre aide je n'y serais jamais arrivé !
Bonne nuit ou bonne journée... car avec ces p... de décalages horaires de m... je ne sais plus !!
 

Pièces jointes

  • Compilation Dates5zazounette4.zip
    18.3 KB · Affichages: 25

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 365
Membres
103 528
dernier inscrit
maro