TP de Tableur, 10.10.2012


Exercices

(Les solutions/commentaires seront là (peut-être).)

Terminez les exercices de la semaine dernière. Montrez-moi vos diagrammes ! Changez leur formatage.

La situation concernant le rapport entre les TP et les énoncés de S. S. est en train de se clarifier, mais il y a quelques doutes. Pour vous faciliter la vie, j'inclus ici le dernier énoncé de Sophie (en ligne sur FOAD2) mais copié ici, et ORALEMENT je vous dirai quels sont les exercices à faire en priorité, afin de ne pas terrifier les pauvres étudiants qui pensent qu'il faut faire toujours tout...

À titre provisoire :

D'autres précisions plus tard.



A. Calendriers et horloges

    Calc dispose de plusieurs fonctions permettant de gérér les dates, et le temps horloge, avec jours de semaine, heures et minutes, etc., avec l'arithmétique, conversions, et l'interaction avec le système, par ex. la récupération de la date actuelle. Tout ceci est indispensable pour la planification, les emplois du temps, créations des calendriers spécialisés, etc.

    Une date est une structure de données spéciale, ce n'est ni un nombre, ni un texte, mais un objet composite représentant ... une date, quoi d'autre?... (mais codée de manière illisible, interne), qui contient le jour, le mois et l'année, et qui peut être affichée (représentée extérieurement) de plusieurs façons (formats) différentes, selon les besoins.

  1. Construisez vous-mêmes une feuille qui ne nécessite aucune donnée numérique explicite, et qui remplit le tableau par des données dérivées depuis la cellule C2 qui contient la date d'aujourd'hui. Trouvez la fonction qui retourne la date actuelle. Le reste de l'exercice est le formatage des cellules. Vous devez obtenir le résultat comme ci-dessous (le fichier a été fait le 07.09, comme vous pouvez constater. Vos résultats seront différents):

    En fait, l'essentiel n'est pas le formatage mais la lecture de la documentation (l'aide en ligne) qui doit vous permettre de trouver des fonctions correspondantes (le mois, le jour de la semaine : numérique), etc. Les textes sont basés sur la date elle même, mais avec le format spécifique, comme MMMM, ou JJJJ.

    Le jour de l'année est un peu plus compliqué, il faut prendre la date d'"aujourd'hui", et soustraire la date du premier janvier de la même année, et ajouter 1 (ou soustraire le 31 décembre de l'année précédente). Regardez la fonction DATEDIF(...) Le résultat est formaté (le paramètre : Intervalle) en jours : "d" (days, visiblement ceci n'a pas été traduit en français...)

    Attention, ATTENTION. La fonction DATEDIF semble absente sur quelques machines en 127 (version de Calc en dessous de 3.6 ...). Utilisez la fonction JOURS.
  2. Le récupération des noms : du mois, ou du jour de la semaine, à partir de la date est automatique, c'est une option de formatage. Mais si nous voulions obtenir le texte qui correspond au nom en question dans une autre langue? Essayons de formater ces noms (jour et mois) en italien (mais sans tricher !...). Les noms correspondants sont :
    Domenica
    Lunedì 
    Martedì
    Mercoledì 
    Giovedì 
    Venerdì 
    Sabato      
    
    Gennaio 
    Febbraio 
    Marzo
    Aprile
    Maggio
    Giugno
    Luglio
    Agosto
    Settembre
    Ottobre
    Novembre
    Dicembre
    
    Mettez quelque part dans la feuille ces listes (colonnes). Trouvez un moyen de convertir le nombre identifiant le mois (par ex. 9) en nom (ici : Settembre). Il faut, simplement, construire la référence à une cellule de manière dynamique, il ne suffit pas l'étiquette, par ex. F7, mais il faut décaler la ligne par le numéro correspondant, par rapport à la ligne qui précede la ligne du janvier (ou lundi. La même chose concerne les jours de la semaine). Lisez la doc, identifiez des fonctions comme INDEX, INDIRECT, LIGNE, COLONNE, ADRESSE, (plus tard nous verrons quelques autres) permettant de travailler avec les positions des données.

    Ici vous aurez besoin d'un peu d'arithmétique (niveau école primaire), de COLONNE pour récupérer la colonne où vous listez les jours / mois ; LIGNE, pour identifier le début de la liste (par ex.la ligne qui précède la première donnée italienne), ADRESSE pour construire l'identifiant de la cellule en question, et de INDIRECT afin de récupérer le contenu de cette cellule.

  3. Construisez un simple calendrier pour une mois donné et une année quelconque. Ouvrez un nouveau document vide, et tout de suite ajoutez une feuille extra. Le document aura donc (pour l'instant) deux feuilles. Changez leurs noms, que la première s'appelle, disons, an, et la seconde : cal.

    La première feuille devra contenir à peine deux cellules, dont l'une avec un simple texte, afin de savoir ce que l'on fait (les feuilles sans commentaires, sans titres, sans une petite auto-documentation ... sont une abomination. Au bout de deux semaines vous n'en reconnaîtrez plus rien. Mais pour nos exercices ceci sera hélas fréquent) :

    L'utlisateur remplira la case numérique avec l'année qu'il veut. Le reste est calculé, et se trouve sur la feuille suivante. Mais il serait judicieux d'allouer une autre case de la première feuille pour la date du 1er janvier de cette année (avec la fonction DATE) ; son affichage n'est pas intéressant, mais la valeur pourra être utile pour les calculs sur la page cal.

    La feuille cal se présentera comme suit (vous pouvez jouer avec des décorations graphiques, bordures, couleurs, etc., selon votre bon ou mauvais goût...):

    La seule cellule à remplir est la case B1, avec un nombre entre 1 et 12. (Plus tard nous apprendrons comment protéger le document contre des données illégales). Le reste en est déduit et formaté. L'exercice contient des données similaires au cas précédent, mais le formatage est un peu plus élaboré, et la construction des valeurs textuelles pour les noms des jours de la semaine est également différente. Considérez pour le moment, que tous les mois ont 31 jours.

    1. Si on a une date, on peut obtenir le mot "septembre" depuis la valeur 9 par le format MMMM. Mais comment convertir tout simplement le nombre 9? Regardez dans la doc, et utilisez la fonction CHOISIR(valeur;res1;res2; ...), avec les résultats comme "jeudi", ou "novembre", etc. La premère valeur correspond à l'indice 1.
    2. Si on a des textes, on peut les combiner par CONCATENER(t1; t2; ...). C'est ainsi que pouvez ajouter des parenthèses autour d'un mot connu. Si ce mot n'est pas vraiment une valeur textuelle, mais, par exemple, une date formatée comme le nom du mois, on peut le convertir en texte par TEXTE(val). Donc, vous aurez besoin de construire des expressions contenant des fonctions imbriquées.
    3. ATTENTION !! L'image à droite contient une solution erronée pour septembre 2012 ! Il y a un décalage d'un jour entre le numéro et le nom du jour. Donc, n'essayez pas de répéter exactement les mêmes valeurs. D'où vient l'erreur? J'ai construit la liste dans CHOISIR de façon incorrecte, mais assez populaire... Vous risquez de commettre la même faute, même si ci-dessus le problème a été traité correctement par d'autres moyens... Répondez, où je me suis trompé?


B. Encore quelques simples calculs

    Le fichier essence.ods est un document authentique, présentant la consommation d'essence par ma voiture durant une période assez longue. Vous allez l'exploiter de plusieurs façons, faire un peu d'analyse statistique, visualiser graphiquement, etc.

    Observez la présence de quelques lignes vides, ce sont des données manquantes (je n'ai pu, ou j'ai oublié de sauvegarder les détails en faisant le plein...) Nous allons travailler sur ces données manquantes également.

  1. Prenez la première (ou une autre ; vous traiterez toutes...) section de données, et calculez la consommation moyenne durant toute cette période. Scindez le travail en plusieurs étapes. Cet exercice n'a rien de trivial, car on peut faire le plein à n'importe quel moment, et pas forcément le plein, et la capacité du réservoir ne vous est pas donnée. Donc, une ligne de données ne suffit pour évaluer quoi que ce soit, et même deux lignes peuvent donner des conclusions approximatives.

    Prenons un groupe de cellules, par ex.

    13/09/09     10950    29,62
    07/10/09     11486    29,61
    29/10/09     12035    30,81
    26/11/09     12570    29,65
    15/12/09     13092    30,61
    
    On voit que j'ai pris 29,62 litres, et j'ai fait 536 km avec, mais combien il en reste? Aucune idée, donc l'hypothèse que j'ai consommé 5,562 l/100km n'est qu'une approximation locale, basée sur la prémisse (rationnelle, mais un peu douteuse...), que l'état du réservoir le 13/09 avant le plein, et le 07/10, était le même ou presque. Les lignes 2 et 3 donnent 5,526. Mais si on prend les kilométrages de la 1ère et la troisième ligne, et on ajoute les deux quantités d'essence, on obtient une moyenne un peu plus exacte : 5,459. Et on peut continuer...

    Calculez la moyenne de la section entière, jusqu'à la ligne vide. Faites le même avec d'autres sections !

  2. Remplissez quand même la colonne D avec les moyennes locales, et faites le graphique de ces données. Le début sera la cellule D3, car pour D2 il n'y a pas de données permettant de connaître la consommation, le kilometrage du plein précédent n'étant pas répertorié.
  3. Réfléchissez comment remplacer les lignes vides par quelque chose de raisonnable. Voici une proposition concrète : Recalculez la consommation moyenne pour le document entier. On reviendra à ce document plus tard. Sauvegardez vos résultats dans un nouveau document.


C. Mécanismes décisionnels (Introduction)

    Le tableur est une vraie machine "intelligente", capable de prendre des décisions, comme tout programme informatique, grâce aux constructions conditionnelles, des fonctions SI et similaires. L'expression SI(test;val_vrai;val_faux) retourne une des deux valeurs selon le test. Le test est – en principe – une valeur logique, vraie ou fausse, par ex. le résultat d'une comparaison, disons D4<7, mais une valeur numérique est interprétée logiquement : zéro est faux, un nombre différent de zéro – vrai. Une cellule vide est également fausse.

  1. Corrigez un peu le calendrier. La colonne des jours du mois ne doit pas contenir des dates illégales, comme le 30 février, ou 31 juin. Trouvez les expressions conditionnelles qui annulent le contenu des cellules (remplissage par la chaîne vide) en fin du mois, si besoin.
  2. Empêchez toute tentative de construction du calendrier pour un mois hors intervalle 1 - 12. Alors, qu'est-ce que l'on fait dans ce cas? Plus tard nous saurons comment ouvrir une boîte de dialogue, mais ici le programme doit remplacer tout nombre supérieur à 12 par 12, et inférieur à 1 par 1. Prendre une décision raisonnable si le nombre est fractionnel, par ex. 7.8. Que faire si ce n'est pas un nombre du tout, mais un texte?



Discussion


Retour