Recherche dans une plage de données

hollen ar mor

XLDnaute Nouveau
Bonjour.

Je suis en train de faire un calendrier "perpétuel".
J'ai une colonne qui contient tous les jours fériés (avec calcul de la date de Pâque).
Pour faire une mise en forme conditionnelle et faire apparaître le jour férié de la même couleur qu'un week-end, je cherche à comparer toutes mes dates avec une colonne contenant tous les jours fériés de l'année.
J'aimerais avoir une fonction qui me renvoie 1 si la date est dans ma colonne et 0, sinon...
J'essaie avec RECHERCHEV, INDEX, EQUIV... Mais pour l'instant je n'arrive à rien...

Quelqu'un a une idée ??

Merci !
 

hollen ar mor

XLDnaute Nouveau
Re : Recherche dans une plage de données

Suite...
Code:
[B][COLOR=DarkSlateGray]=PLANCHER(DATE(A1;5;JOUR(MINUTE(A1/38)/2+56));7)-34[/COLOR][/B]
est valable jusqu'à l'an 2078.​
ROGER2327
#4511


Dimanche 8 As 138 (Saint Rimbe, Oisif, ST)
20 Brumaire An CCXIX
2010-W45-3T16:29:06Z

Cette formule ne donne pas le dimanche de Pâque, mais le lundi.
Ça peut porter à confusion...
 

ROGER2327

XLDnaute Barbatruc
Re : Recherche dans une plage de données

Re...
Cette formule ne donne pas le dimanche de Pâque, mais le lundi.
Ça peut porter à confusion...
Ça m'étonnerait. Voyez le classeur joint.
Quoi qu'il en soit, aucune des formules proposées jusqu'ici ne peuvent convenir pour un calendrier perpétuel car ce sont toutes des formules approchées.
ROGER2327
#4515


Dimanche 8 As 138 (Saint Rimbe, Oisif, ST)
20 Brumaire An CCXIX
2010-W45-3T21:36:01Z
 

Pièces jointes

  • Temp.xls
    27.5 KB · Affichages: 69
  • Temp.xls
    27.5 KB · Affichages: 88
  • Temp.xls
    27.5 KB · Affichages: 70

ROGER2327

XLDnaute Barbatruc
Re : Recherche dans une plage de données

Suite…
Une formule valable jusqu'à la fin des Temps (Algorithme de Oudin) :
Code:
[COLOR=DarkSlateGray][B]=DATE(A1;3;28)+(ENT(MOD(19*MOD(A1;19)+ENT(A1/100)-ENT(ENT(A1/100)/4)-ENT((8*ENT(A1/100)+13)/25)+15;30)/28)*ENT(29/(MOD(19*MOD(A1;19)+ENT(A1/100)-ENT(ENT(A1/100)/4)-ENT((8*ENT(A1/100)+13)/25)+15;30)+1))*ENT((21-MOD(A1;19))/11)-1)*ENT(MOD(19*MOD(A1;19)+ENT(A1/100)-ENT(ENT(A1/100)/4)-ENT((8*ENT(A1/100)+13)/25)+15;30)/28)+MOD(19*MOD(A1;19)+ENT(A1/100)-ENT(ENT(A1/100)/4)-ENT((8*ENT(A1/100)+13)/25)+15;30)-MOD(A1+ENT(A1/4)+(ENT(MOD(19*MOD(A1;19)+ENT(A1/100)-ENT(ENT(A1/100)/4)-ENT((8*ENT(A1/100)+13)/25)+15;30)/28)*ENT(29/(MOD(19*MOD(A1;19)+ENT(A1/100)-ENT(ENT(A1/100)/4)-ENT((8*ENT(A1/100)+13)/25)+15;30)+1))*ENT((21-MOD(A1;19))/11)-1)*ENT(MOD(19*MOD(A1;19)+ENT(A1/100)-ENT(ENT(A1/100)/4)-ENT((8*ENT(A1/100)+13)/25)+15;30)/28)+MOD(19*MOD(A1;19)+ENT(A1/100)-ENT(ENT(A1/100)/4)-ENT((8*ENT(A1/100)+13)/25)+15;30)+2+ENT(ENT(A1/100)/4)-ENT(A1/100);7)[/B][/COLOR]
(843 caractères)
ROGER2327
#4516


Dimanche 8 As 138 (Saint Rimbe, Oisif, ST)
20 Brumaire An CCXIX
2010-W45-3T23:19:06Z
 

ROGER2327

XLDnaute Barbatruc
Re : Recherche dans une plage de données

Suite (2)
Une fonction personnalisée, compatible avec Excel et OpenOffice.org :
Code:
[COLOR=DarkSlateGray][B]Function paq(a&) [COLOR=DarkOrange]'Algorithme de Oudin
' Valable de 1583 à la fin des Temps.[/COLOR]
Dim g&, c&, d&, h&, i&, r&
  paq = ""
  If a > 1582 Then
    g = a Mod 19
    c = Int(a / 100)
    d = Int(c / 4)
    h = (19 * g + c - d - Int((8 * c + 13) / 25) + 15) Mod 30
    i = (Int(h / 28) * Int(29 / (h + 1)) * Int((21 - g) / 11) - 1) * Int(h / 28) + h
    r = DateSerial(a + 400, 3, 28) + i - (2 + a + Int(a / 4) + i + d - c) Mod 7
    paq = Day(r) & "/" & Month(r) & "/" & a
  If a > 1899 Then paq = CDbl(CDate(paq))
  End If
End Function[/B][/COLOR]
ROGER2327
#4517


Lundi 9 As 138 (Equarrissage pour tous, V)
21 Brumaire An CCXIX
2010-W45-4T00:41:53Z
 
Dernière édition:

hollen ar mor

XLDnaute Nouveau
Re : Recherche dans une plage de données

Re...
Ça m'étonnerait. Voyez le classeur joint.
Quoi qu'il en soit, aucune des formules proposées jusqu'ici ne peuvent convenir pour un calendrier perpétuel car ce sont toutes des formules approchées.
ROGER2327
#4515


Dimanche 8 As 138 (Saint Rimbe, Oisif, ST)
20 Brumaire An CCXIX
2010-W45-3T21:36:01Z

C'est bizarre.
Le fichier "Temps.xls" donne les bonnes dates.
Par contre, si je copie la formule dans mon fichier, Open Office me décale la date d'une journée... (correction : la formule me donne un samedi...)

La formule de Oudin est trop longue pour Open Office : j'ai une erreur 512...
Il faut que je trouve autre chose. (sans macro)
 
Dernière édition:

hollen ar mor

XLDnaute Nouveau
Re : Recherche dans une plage de données

J'avais aussi trouvé cette drôle de formule :

Code:
=FRANC((JOUR(MINUTE(ANNEE(MAINTENANT())/38)/2+55&"/4/"&annee)/7;)*7-6

Mais elle n'est pas compatible avec OOO...


Je sens que je vais quand même être obligé de passé par une macro...

Zut.
 

ROGER2327

XLDnaute Barbatruc
Re : Recherche dans une plage de données

Bonjour hollen ar mor
(...)
Je sens que je vais quand même être obligé de passé par une macro...

Zut.
Je ne suis même pas certain que c'est la solution.
Je n'ai pas le temps de dire pourquoi maintenant, mais je reviendrai dans la soirée. Bon courage.
ROGER2327
#4518


Lundi 9 As 138 (Equarrissage pour tous, V)
21 Brumaire An CCXIX
2010-W45-4T09:26:36Z
 

Monique

Nous a quitté
Repose en paix
Re : Recherche dans une plage de données

Bonjour,

Dans le fichier joint, il y a une dizaine de formules (feuille extraite de Dates et Heures, plus quelques rajouts)
Essayer, passer dans Open Office pour voir...
 

Pièces jointes

  • DateDePaquesV1.zip
    8.1 KB · Affichages: 38

hollen ar mor

XLDnaute Nouveau
Re : Recherche dans une plage de données

En fait, pour contourner le problème, je dis que si la date obtenue est un samedi, il faut y ajouter un jour... :

Code:
=SI(JOURSEM(PLANCHER(DATE(annee;5;JOUR(MINUTE(annee/38)/2+56));7)-34)=1;PLANCHER(DATE(annee;5;JOUR(MINUTE(annee/38)/2+56));7)-34;PLANCHER(DATE(annee;5;JOUR(MINUTE(annee/38)/2+56));7)-33)

Pas très élégant, mais au moins, il y a des chances que ça marche partout.


J'imagine que l'erreur entre les différents tableurs vient du fait qu'ils ne commencent pas leurs calendriers à la même date ? Il faudrait cocher "calendrier à partir de 1904" dans Excel ou qqch comme ça, non ?



Merci pour toutes les formules de dates, je vais y jeter un oeil.
 

ROGER2327

XLDnaute Barbatruc
Re : Recherche dans une plage de données

Bonsoir à tous
Ci joint : un classeur MicrosoftOffice et un classeur OpenOffice.org qui montrent que rien n'est simple…
ROGER2327
#4520


Lundi 9 As 138 (Equarrissage pour tous, V)
21 Brumaire An CCXIX
2010-W45-4T21:28:19Z
 

Pièces jointes

  • PAQUES.zip
    26.9 KB · Affichages: 29
  • PAQUES.zip
    26.9 KB · Affichages: 33
  • PAQUES.zip
    26.9 KB · Affichages: 39

hollen ar mor

XLDnaute Nouveau
Re : Recherche dans une plage de données

Bonjour.

Bon, je ne vois pas trop ce que vous avez essayé de montrer avec vos 2 classeurs...

Mais la fonction que j'utilise semble fonctionner, au moins pour les 10 ans à venir.

Pour comparer, il y a la fonction "DIMANCHEDEPAQUE" dans Open Office qui ne se trompe pas, je pense...
 

ROGER2327

XLDnaute Barbatruc
Re : Recherche dans une plage de données

Re...
(…)
Bon, je ne vois pas trop ce que vous avez essayé de montrer avec vos 2 classeurs...
(…)
C'est pourtant assez évident : le même rang de jour compté en prenant pour jour 1 le 31/12/1899* ne correspond pas nécessairement au même jour dans les deux tableurs.
Par exemple, 820 renvoie dimanche 30 mars 1902 dans Excel, samedi 29 mars 1902 dans Calc.
Pire : 117 et 118 renvoient tous deux jeudi 26 avril 1900 dans Calc, tandis qu'aucun rang ne renvoie dimanche 26 octobre 1913.
Pour obtenir l'affichage correct dans le format "jjj. j mmm aaaa", on doit utiliser les "formules corrigées" dans Calc. Malheureusement, si l'affichage est correct dans ce cas, le rang du jour correspondant peut être incorrect…

(…)
Mais la fonction que j'utilise semble fonctionner, au moins pour les 10 ans à venir.
(…)
Sans doute, mais n'ai-je pas lu quelque part que vous vouliez construire un calendrier perpétuel ? Pour ce faire, il vous faut trouver des fonctions valables pour beaucoup plus de dix ans !

(…)
Pour comparer, il y a la fonction "DIMANCHEDEPAQUE" dans Open Office qui ne se trompe pas, je pense...
Hélas, hélas !
Code:
[COLOR=DarkSlateGray][B]=DIMANCHEDEPAQUES(1907)[/B][/COLOR]
renvoie sam. 30 mars 1907. Gênant dans un calendrier perpétuel.
________________________________

* En réalité, le jour "un" varie selon la date considérée : du 1/1/1900 au 28/2/1900, le jour "un" est le 1/1/1900 (jours 1 à 59), du 1/3/1900 au 31/12/9999, le jour "un" est le 31/12/1899 (jours 61 à 2958465).
(Ce qui ne facilite pas le calcul du nombre de jours écoulés entre deux dates.)
________________________________
ROGER2327
#4524


Mardi 10 As 138 (Saint Abstrait, bourreau, SQ)
22 Brumaire An CCXIX
2010-W45-5T09:58:03Z
 

hollen ar mor

XLDnaute Nouveau
Re : Recherche dans une plage de données

Je comprends mieux. Merci pour les explications.

En fait je fais un calendrier pour que ma nounou puisse y rentrer ses horaires. Je n'ai donc pas besoin d'aller dans le passé et un avenir proche me suffit.

J'avais mis "calendrier perpétuel" par raccourci.

Mais ce genre de calendrier doit être très compliqué (dates avant l'avènement du calendrier grégorien). Le compte des années bissextiles (tous les 4 ans, sauf si divisible par 100, mais bissextile quand même si divisible par 400) doit aussi avoir ses limites : en l'an 4000, ça m'étonnerait pas qu'il faille faire un petit recalage...

Bonne journée !
 

ROGER2327

XLDnaute Barbatruc
Re : Recherche dans une plage de données

Re...
Je comprends mieux. Merci pour les explications.

En fait je fais un calendrier pour que ma nounou puisse y rentrer ses horaires. Je n'ai donc pas besoin d'aller dans le passé et un avenir proche me suffit.

J'avais mis "calendrier perpétuel" par raccourci.

Mais ce genre de calendrier doit être très compliqué (dates avant l'avènement du calendrier grégorien). Le compte des années bissextiles (tous les 4 ans, sauf si divisible par 100, mais bissextile quand même si divisible par 400) doit aussi avoir ses limites : en l'an 4000, ça m'étonnerait pas qu'il faille faire un petit recalage...

Bonne journée !

...
ROGER2327
#4525


Mardi 10 As 138 (Saint Abstrait, bourreau, SQ)
22 Brumaire An CCXIX
2010-W45-5T13:13:15Z
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 191
Membres
103 755
dernier inscrit
Nicolas TULENGE