AccueilVersion Calc 1.x Version Calc 2.x Présentation Calc 3.xBien débuter Calc Fonctions Calc Exercices Calc FormulairesAstuces CalcPrécisions calculsLa bonne formuleProgrammation BasicLiens diversDéfinitionsRecherche sur siteHumourInfos, news

EXERCICES CALC. Calendrier annuel. Partie 2

 

Accès direct : Page 1 Page 2 Page3

 

Nous avons réussi à créer un calendrier annuel, mais bien triste. Il serait bien utile de pouvoir ajouter les fêtes officielles ainsi que leurs noms. De nouveaux problèmes se présentent. On trouve les fêtes à dates fixes (Noël, par exemple), mais aussi les fêtes mobiles, essentiellement basées sur la date de Pâques. Toutes ces fêtes, notamment religieuses ne sont pas fériées.

On pourra également ajouter des informations utiles comme les saisons, les heures été et hiver,...

Attention, nombreux pièges en perspective !

Voici donc un petit tableau des fêtes, valable pour la France. On pourra bien entendu adapter suivant les pays.

Nom Férié Jour Mois Décalages, infos
Jour de l'an oui 1 1  
Epiphanie non 6 1  
Chandeleur non 2 2  
Fête du travail oui 1 5  
Victoire 1945 oui 8 5  
Fête nationale oui 14 7  
Assomption oui 15 8  
Toussaint oui 1 11  
Armistice 1918 oui 11 11  
Noël oui 25 12  
         
Mardi Gras non     -47 (décalage Pâques)
Cendres non     -46 (décalage Pâques)
Carême non     -42 (décalage Pâques)
Rameaux non     -07 (décalage Pâques)
Vendredi saint variable     -02 (décalage Pâques)
Pâques oui      
Lundi de Pâques oui     +01 (décalage Pâques)
Ascension oui     +39 (décalage Pâques)
Pentecôte oui     +49 (décalage Pâques)
Lundi de Pentecôte variable     +50 (décalage Pâques)
Trinité non     +56 (décalage Pâques)
Fête-Dieu non     +60 (décalage Pâques)
Sacré-Coeur non     +68 (décalage Pâques)
         
Printemps non 20 03  
Eté non 21 06  
Automne non 23 09  
Hiver non 22 12  
         
Heure d'été non     Dernier dimanche de mars
Heure d'hiver non     Dernier dimanche d'octobre
         
Fêtes des mères non     Dernier dimanche de mai
Fêtes des pères non     3ème dimanche de juin
         


Pour faire simple, nous allons commencer par les jours fériés uniquement. Ouvrons donc un nouveau classeur. Nommons les feuilles : AN, Officiel, Calendrier. Par défaut, le classeur s'ouvre avec 3 feuilles. Il faudra donc insérer une nouvelle feuille que l'on nommera CalculOfficiel.

Dans la feuille AN, nous recopions comme sur cet exemple. Il faudra nommer la cellule B1, ChoixAn.

Il faudra également enregistrer les styles sous les noms de StyleFérié, StyleWeekEnd, StyleNormal.

Dans la feuille Officiel, nous reproduisons ce calendrier. Ensuite, nous allons entrer les formules qui seront différentes, selon qu'il s'agisse de date fixe ou mobile.

En B2, la formule sera :

=DATE(ChoixAn;D2;C2)

Il suffira de recopier vers le bas la formule. Puis en B11, Calcul de Pâques, on utilisera une fonction bien utile de Calc, DIMANCHEDEPAQUES. En B11, on entrera donc :

=DIMANCHEDEPAQUES(ChoixAn)

Pour pouvoir recopier vers le bas sans avoir à faire d'autres manipulations, on écrira, toujours en B11 :

=DIMANCHEDEPAQUES(ChoixAn)+A11

Les 2 dernières lignes, comme leurs noms l'indiquent ne serviront qu'à tester le bon fonctionnement de notre calendrier. Notez cependant que pour TEST01, une date unique est crée (uniquement le 05 janvier 2005), alors que l'autre s'affichera les 07 janvier de chaque année.

Il n'est pas nécessaire de respecter l'ordre des dates.

 

Enfin nommons ce tableau DatesOfficielles.

 

Passons à la feuille CalculOfficiel. Cette feuille va nous servir à préparer ce qui va ensuite s'afficher dans le calendrier. En A2, entrons la formule :

=DATE(ChoixAn;1;1)

Nous aurons le 1er jour de l'année. En B2, nous allons entrer :

=JOURSDANSMOIS(A2) qui donnera 31 pour janvier. Pourquoi cette fonction ? Regardez la suite. Nous allons écrire les 1er de chaque mois, et ainsi de suite jusqu'en décembre.

Sur cet image, notez que le 01/01/05 s'est transformé en janvier, à l'aide du format date, au format MMMM. En C2, en entre =A2+B2

Enfin, on sélectionne les cellules B2 et C2, puis on recopie vers la droite, jusqu'au mois de décembre (colonne X).

Passons maintenant aux différentes dates du calendrier. En A3, nous entrons tout simplement =A2. Vous vous rappelez ? La cellule A2 contient bien le 1er janvier, même si il est affiché le nom du mois.

Pour la suite, simple. On entre = Cellule +1, puis on recopie vers le bas, jusqu'à la ligne 33, qui correspondra au 31 janvier.

Ensuite, nous allons chercher les noms dejours fériés, à l'aide de la fonction RECHERCHEV

Dans notre cas, nous disons =RECHERCHEV(date à comparer; tableau des dates officielles; numéro de la colonne dans le tableau; Tri éventuel, ici aucun)

La formule est donc : =RECHERCHEV(A3;DatesOfficielles;4;0)

Nous retrouvons bien le nom de la fête correspondante.

Ensuite, recopions vers le bas. Des messages erreurs (#NA) apparaissent si la recherche n'aboutit pas.

Le mois de janvier est prêt. Il suffit de sélectionner le mois complet, cellules A3 à B33, puis de recopier vers la droite, jusqu'en décembre, colonne X.

Astuce. Pour voir le tableau en entier, ou au moins davantage, il faut jouer sur le zoom. Maintenez la touche Ctrl enfoncée, puis jouez avec la molette de la souris.

Ca y est ? Encore des points à régler. Notamment les fins de mois. Nous verrons cela plus tard. Passons maintenant à la feuille Calendrier. Nous allons inscrire les mois en ligne 2. Pourquoi en ligne 2 ? Parce qu'en ligne 1, il y aura l'année, que l'on ajustera sur les colonnes quand le calendrier sera fini.

L'écriture des noms de mois ne devrait pas vous poser de problèmes. Plusieurs solutions, entrer la fonction =CalculOfficiel.A2 en A2, ou écrire tout simplement janvier, puis recopier vers la droite. Attention, une colonne sur deux libre.

Pour la suite, je viens de vous fournir la réponse... en A3 on entre =CalculOfficiel.A3, et on recopie vers le bas.

 

Pour l'affichage des jours fériés, nous allons nous servir des fonctions SI et ESTTEXTE. Dans notre exemple, si la cellule A3 de la feuille CalculOfficiel contient du texte, on l'affiche, sinon (cas de la réponse #NA), on n'affiche rien (Rien entre les 2 guillemets). On entre donc la formule :

=SI(ESTTEXTE(CalculOfficiel.B3);CalculOfficiel.B3;"")

Ensuite ? Vous l'avez deviné. On sélectionne le mois de janvier, cellules A3 à B33, puis on recopie vers la droite, jusqu'en décembre, colonne X.

 

Evidemment ce n'est pas fini. Maintenant, nous allons nous servir du formatage conditionnel. Commençons par les jours fériés. Sélectionnons le tableau de A3 à X33, puis appelons le formatage conditionnel, et entrons comme sur cet exemple, Formule est, et ESTTEXTE(CalculOfficiel. X33), X33, puisqu'il s'agit de la cellule active de la sélection. Enfin, appliquons le style StyleFérié.

Le résultat surprend. Les jours fériés sont pris en compte, mais pas le jour correspondant. Où est l'erreur. Réfléchissez un peu... presque simple. Placez-vous en A3, (le 1er janvier) puis appelez le formatage conditionnel. On peut lire la formule :

ESTTEXTE(CalculOfficiel.A3) Cette formule correspond bien à ce que nous avons écrit précédement, mais pas à nos souhaits. Pour la cellule A3, il faudrait écrire ESTTEXTE(CalculOfficiel.B3), puisque seule cette cellule est susceptible de contenir du texte. Il va donc falloir modifier toutes les colonnes contenant les dates (A, C, E,...)

Comment sélectionner uniquement les cellules des colonnes concernées ? Maintenez Ctrl enfoncé, puis avec la souris, sélectionnez les cellules au fur et à mesure. N'hésitez pas à recommencer au début en cas de doute.

Vous avez sélectionné toutes les dates ? La cellule active de la sélection est la W33. En appelant le formatage conditionnel, la formule est : ESTTEXTE(CalculOfficiel.W33)

 

Il faut transformer en ESTTEXTE(CalculOfficiel.X33), puis OK.

Cette fois ci tout va bien... pour les fêtes.

Passons maintenant aux weeks-end. Nous reprenons la formule que nous avons prise en page 1 de cet exercice. Ici les samedi et dimanche seront week-end. Une adaptation est évidemment possible.

Encore une mauvaise surprise. Ca ressemble à n'importe quoi. Erreur de notre part ? Peut-être. Il faut essayer de comprendre. Placez-vous en C3, la cellule bleue du mardi 01 février. Une aberration. Mais en demandant le formatage conditionnel, on peut lire la formule : OU(JOURSEM(CalculOfficiel.B3)=1;JOURSEM(CalculOfficiel.B3)=7)

qui fait donc référence à la cellule immédiatement placée à gauche, celle qui contient le texte "Jour de l'An". Pour le tableur, si on demande une valeur de ce texte, il retournera la valeur zéro. Faites le test dans un coin de feuille, demandez =JOURSEM(cellule vide), vous aurez un résultat ! Vous noterez également que l'erreur se reproduit à la droite de chaque jour férié.

Ensuite, nous avons la même surprise à l'affichage que pour les jours fériés. Donc, même principe de correction, en sélectionnant uniquement les cellules de dates. La cellule active étant X33, nous entrons la formule : OU(JOURSEM(CalculOfficiel.W33)=1;JOURSEM(CalculOfficiel.W33)=7)

Faites bien attention : la cellule active est la X33, et on joue avec la cellule W33 qui contient la date.

Et encore un problème ! Les week-end sont affichés, trop bien, puisqu'il empiètent sur les jours fériés.

La réponse est ici. Regardez bien et cherchez l'erreur.

Voici l'explication. Lorsqu'on est en W33, on adapte la formule pour les jours, mais aussi la formule pour les fériés.

Ouf ! Ca marche.

On sélectionne tout le tableau et à l'aide du styliste dans OOo 1.1x ou de Styles et formatage dans OOo 2.x, on sélectionne le style StyleNormal. Le calendrier s'approche doucement d'une forme définitive.

Et maintenant, vous vous dites que ce serait bien d'intégrer les jours non fériés, mais avec des infos intéressantes : saisons, heures d'été, d'hiver, voire des infos personnelles. Va-t'il falloir tout refaire ? Non (j'ai cru entendre "ouf").

Mais, si vous avez bien lu le tableau en début de page, on parle par exemple de la fête des mères qui a lieu le dernier dimanche de mai. Comment faire ? A chacun sa méthode. Pour ma part, je vais calculer le 1er lundi de la première semaine. Attention, ce premier lundi se trouve rarement dans l'année voulue, mais plutôt dans l'année précédente. Alors pourquoi chercher un lundi sur l'année précédente ? Simplement parce qu'il pourra servir ultérieurement si on veut par la suite faire un calendrier par semaine ou par quinzaine, qui commencera un lundi, et ce premier lundi de la première semaine commencera généralement en fin d'année précédente.

 

Donc, passons à la page AN, et en B2 entrons la formule :

=DATE(ChoixAn;1;1)- JOURSEM(DATE(ChoixAn;1;1);0)

Nous calculons la date du 1er janvier moins le décalage correspondant au jour de la semaine, de façon à le faire coïncider avec le lundi précédent (ou équivalent) au 1er janvier.

Si notre affichage est comme sur l'image précédente, on adapte le format date pour un résultat ci-contre plus lisible.

Ce n'est pas tout, il faut nommer PremierLundi la cellule B2.

Passons à la feuille Officiel. Dans la colonne E, nous ajoutons une rubrique Férié (0 ou 1) suivant cas, et nous en profitons pour compléter notre tableau. Pour les jours liés à un décalage fixe, j'ai placé le nombre de jours à décaler dans la première colonne, qui n'est plus uniquement consacré aux décalages avec Pâques. Pour l'heure d'été, par exemple, on entre la formule =PremierLundi + cellule juste à gauche, contenant la valeur du décalage.

Il faut modifier la zone de DatesOfficielles en ajoutant une colonne, la colonne F.

Une fois de plus, nous allons sélectionner le tableau et remplacer la formule de la condition 1 par la formule :

RECHERCHEV(W33;DatesOfficielles;5;0)=1

qui déterminera un style StyleFérié pour toutes les dates correspondantes, et dont la valeur Férié est à 1.

Encore une fois, la dernière, nous aurons des soucis d'affichage, mais maintenant vous maitrisez.

Lorsque vous aurez sélectionné les cellules dates, vous modifierez comme sur cet exemple.

Cette fois-ci tout fonctionne. Et pourtant ! Sur ces exemples, on se sert de l'année 2005. Regardez bien votre tableau. Si vous avez tout suivi à la lettre, il y a un problème. Le jour de Pâques coïncide avec l'heure d'été, et seul Pâques est affiché. Ceci est dû à la conception du calendrier. Il aurait fallu soit prévoir de regrouper des informations diverses dans une cellule, soit avoir plusieurs cellules de texte pour chaque jour. Rien n'est simple. A voir pour une évolution future.

Il reste à supprimer, manuellement, les fins de mois de 30 jours. Pour le 29 février on réadopte le principe de la page précédente. En C31, on transforme la formule :

=CalculOfficiel.C31 en =SI(MOIS(CalculOfficiel.C31)=MOIS(C3);CalculOfficiel.C31;"")

et en D31 on transforme :

=SI(ESTTEXTE(CalculOfficiel.D31);CalculOfficiel.D31;"") en =SI(MOIS(CalculOfficiel.C31)=MOIS(C3);SI(ESTTEXTE(CalculOfficiel.D31);CalculOfficiel.D31;"");"")

Si vous avez bien suivi, vous n'avez aucune difficulté à comprendre ces 2 formules.

Une évolution du calendrier ? Passez à la page suivante.


Et maintenant, à vos claviers.

   

 

Ce site n'est plus mis à jour. Merci aux nombreux visiteurs depuis 2003. Consultez le Wiki LibreOffice.
   

Le tableur Calc par l'exemple : christianwtd@free.fr
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.0 France License.

  .

Site optimisé pour Firefox


Dernière modification : 29/08/2010 à 18h48


Déjà plusieurs visites sur ce site depuis quelque temps (au moins vous et moi)

Compteur non certifié