website_lea/static/files/supports/calc_formules.md

390 lines
8.9 KiB
Markdown
Raw Normal View History

2021-10-26 11:41:22 +02:00
---
author: Gregory Trolliet
title: LibreOffice Calc -- Les formules
pagetitle: Présentation
date: 5 octobre 2020
license: CC-BY-SA
---
# Présentation
* [Gregory Trolliet](https://trolliet.info)
* [Ognon](https://ognon.ch)
* [itopie](https://itopie.ch)
* Fichiers: [https://files.vulgarisons.info/calc](https://files.vulgarisons.info/calc)
![](by-sa.svg)
# Vos questions précises
# Notions de base
## Définition
<ul>
<li class="fragment" data-fragment-index=1>**Classeur**
<span class="fragment" data-fragment-index="2"><br/>Document qui contient plusieurs feuilles</span>
</li>
<li class="fragment" data-fragment-index=1>**Feuille de calcul**
<span class="fragment" data-fragment-index="3"><br/>Conteneur de cellules</span>
</li>
<li class="fragment" data-fragment-index=1>**Cellule**
<span class="fragment" data-fragment-index="4"><br/>Données à afficher et à manipuler</span>
<span class="fragment" data-fragment-index="4"><br/>Formules</span>
</li>
</ul>
::: notes
Maximum 10'000 feuilles par classeur
Maximum 1'000'000 de lignes et 1024 colonnes par feuille
!Attention à la lenteur!
:::
## Référence
<ul>
<li class="fragment">C7</li>
<li class="fragment">B5:D12</li>
<li class="fragment">\$MaFeuille.E2</li>
<li class="fragment">\$AutreFeuille.E2:E9</li>
<li class="fragment">'file:///home/raghnarok/exo_1.ods'#\$SaFeuille.E2:E9
<span class="fragment"><br/>Édition&rarr;Lien vers des fichiers externes&rarr;Actualiser</span>
</li>
</ul>
::: notes
Si insertion depuis un autre document, il faut rouvrir le document
pour accepter de charger les données distantes, sinon erreur 540.
Update possible depuis Édition->Lien vers des fichiers externes->mise à jour.
!Attention difficultés lors du partage / déplacement de fichiers!
:::
## Référence absolues
Permet de s'assurer que la cellule cible ne soit pas modifiée lors
du déplacement, de l'insertion de nouvelles lignes ou colonnes ou
lors de copie.
<ul>
<li class="fragment">\$C7 *Colonne*</li>
<li class="fragment">D\$12 *Ligne*</li>
<li class="fragment">\$E\$7</li>
</ul>
## Nommer des cellules
Intérêt:
* Simplifier les formules
* Ne pas avoir à se rappeler de la position
* Permettre de modifier une référence sans devoir modifier toutes les formules
<span class="fragment">Attention, ne fonctionne pas entre différents classeurs.</span>
<span class="fragment">Feuille&rarr;Plages et expressions nommées&rarr;Gérer</span>
::: notes
Accessible depuis le menu déroulant en haut à gauche, coordonnée cellule
:::
## Exercices
Entrainez-vous à accéder correctement à des cellules ainsi qu'à les nommer.
# Formats
## Nombres
::: incremental
* Différents formats complets:
* 1.15
* -0.456
* Formats spéciaux:
* 15%
* CHF 14.50
* 22/7
:::
## Heures
::: incremental
* 09:30
* 09:30:15
* 09:30:15.179
:::
## Dates
* 27.11.1987
## Stockage
**Tout** est enregistré comme un nombre!
::: notes
Dates => nombre de jours depuis le 30 décembre 1899
:::
## Plage de validité
Possibilité de définir une liste de valeurs possibles pour une cellule.
*Données&rarr;Validité...*
<span class="fragment">Éviter à l'utilisateur / utilisatrice de se tromper</span>
## Exercices
* Expérimenter les différents formats d'affichage de *Calc*
* Modifier la plage de validité d'une ou plusieurs cellules
# Les opérateurs
## Opérateurs arithmétiques
::: incremental
* \+ Addition *=1+1*
* \ Soustraction *=21*
* \* Multiplication *=2\*2*
* / Division *=10/5*
* % Pourcentage *=15%*
* ^ Exponentiation *=2^3*
:::
<span class="fragment">Respectent l'ordre des opérations</span>
## Opérateurs logiques
::: incremental
* = Égal *A1=B1*
* \> Supérieur à *A1>B1*
* \< Inférieur à *A1<B1*
* \>= Supérieur ou égal à *A1>=B1*
* \<= Inférieur ou égal à *A1<=B1*
* <> Non égal *A1<>B1*
:::
## Concaténation de texte
* & Concatène le texte *=B2 & ", " & B3 & " " & B5*
## Opérateurs de plage
<ul>
<li class="fragment" data-fragment-index=1>A2:B4 *Plage de cellules*</li>
<li class="fragment" data-fragment-index=2>B:B *Colonne entière*</li>
<li class="fragment" data-fragment-index=2>B:D *Plusieurs colonnes*</li>
<li class="fragment" data-fragment-index=3>17:17 *Ligne entière*</li>
<li class="fragment" data-fragment-index=3>5:17 *Plusieurs lignes*</li>
<li class="fragment" data-fragment-index=4>Feuille1.A3:Feuille3.D4 *Plage tridimensionnelle*</li>
</ul>
# Les formules
## Nommage
Attention, *Calc* traduit le nom des formules.
Possibilité de remettre en anglais si désiré:
*Outils &rarr; Options &rarr; LibreOffice Calc &rarr; Formule &rarr; Utiliser les noms de fonction anglais*
## Fonctionnement
::: incremental
* Nom, en majuscules
* Paramètre·s
* Valeur de retour
:::
## Les fonctions usuelles
* Somme
* Moyenne
* Médiane
* Produit
<span class="fragment">=SOMME(A1:A3)</span>
<span class="fragment">=MOYENNE(A1,A3)</span>
## Les fonctions spécifiques
:::incremental
* Arrondi *=ARRONDI(Nombre, précision)*
* Troncation *=TRONQUE(Nombre, précision)*
* Année *=ANNEE(Date)*
* Année bissextile? *=ESTBISSEXTILE(Date)*
* ...
:::
## Les fonctions matricielles
:::incremental
1. Sélectionner une plage de la même taille que la source
2. Entrer la formule
3. Valider avec *ctrl+shift+enter*
:::
<span class="fragment">Économise du temps de calcul et de l'espace disque</span>
## Les fonctions logiques
<ol>
<li class="fragment" data-fragment-index=1>Si
<span class="fragment" data-fragment-index=4>*=SI(Test, Valeur si vrai, Valeur si faux)*</span></li>
<li class="fragment" data-fragment-index=2>Si avec plusieurs conditions
<span class="fragment" data-fragment-index=5>*=SI.CONDITIONS(Test1, Valeur1, Test2, Valeur2, ...)*</span></li>
<li class="fragment" data-fragment-index=3>Si avec plusieurs valeurs
<span class="fragment" data-fragment-index=6>*=SI.MULTIPLES(Expression, Valeur1, Résultat1, Valeur2, Résultat2, ...)*</span></li>
</ol>
## Les fonctions de consolidation
:::incremental
* Somme conditionnelle *=SOMME.SI(Plage, critère, plage somme)*
* Somme de produits *=SOMMEPROD(Plage1, Plage2)*
* Somme de produits conditionnelle
*=SOMMEPROD(Plage1, Plage2, Plage3="pomme")*
:::
::: notes
Attention au temps de calcul si les plages deviennent grandes
:::
## Exercice
Calculer le nombre de kilos de chaque fruit commandé chaque mois.
Pensez à décomposer le calcul.
:::notes
=SOMMEPROD(sacs,poids,dates>=$A7,dates<SI(ESTVIDE($A8),DATE(2100,12,31), $A8),types=B$6)
:::
# Les erreurs
## Erreurs courantes
:::incremental
* *#DIV0!* &rarr; division par zéro &rarr; tester les valeurs
* *#NUM!* &rarr; dépassement de la valeur maximum
* *#REF!* &rarr; référence inexistante &rarr; feuille supprimée?
:::
# Exercice
## Numérotation de lignes
:::incremental
1. Numéroter les lignes automatiquement, même si on rajoute une ligne au milieu.
2. Numéroter uniquement les lignes ayant des données.
:::
:::notes
=SI(ESTVIDE(B2),"",SI(LIGNE()=2,1,MAX(A1:A$1)+1))
:::
# Les fonctions conditionnelles
## Assistant Fonction
Pensez à utiliser l'assistant!
:::notes
Petit logo fx en haut à gauche.
Contient toutes les descriptions des fonctions ainsi que des paramètres
Exo: Se balader dans la liste
:::
## Liste
* MOYENNE.SI
* NB.SI
* SOMME.SI
* MAX.SI
* ...
:::notes
Si test en conditions, ne pas oublier les guillemets ">5"
Exo: Tester quelques fonctions avec la feuille ListeNombres.
:::
# Les recherches et filtres
## Les filtres
:::incremental
* AutoFiltre: *Données&rarr;AutoFiltre*
* Filtre standard: *Données&rarr;Plus de filtres&rarr;Filtre standard...*
* Filtre spécial, intérêt uniquement pour des usages spécifiques
:::
:::notes
Exo: Tester avec la feuille Filtres
:::
## Recherche
<div class="fragment fade-in-then-semi-out">
La fonction *RECHERCHE* nécessite une liste triée.
*=RECHERCHE(Critère, Vecteur recherche, Vecteur résultat)*
</div>
<div class="fragment">
*RECHERCHEV* et *RECHERCHEH* permettent de chercher dans la première ligne
d'une matrice,
de spécifier quelle sera la ligne de résultat et de travailler
avec une liste non triée.
*=RECHERCHEV(Critère, Matrice, Indice[, Triée])*
</div>
:::notes
Avantage de RECHERCHEV,
il est possible de modifier par une variable le paramètre de retour.
Si recherche ordonnée et valeur inexistante,
renvoi la valeur précédent la valeur cherchée.
RECHERCHEV($G$4,$A:$D,COLONNE()-COLONNE($G$4)+2)
Exo: Tester avec la feuille Recherche
:::
## Valeur cible
<div class="fragment">
La valeur cible permet de trouver une solution à une équation
en variant un unique paramètre.
*Outils&rarr;Recherche de valeur cible*
</div>
<div class="fragment">
Le solveur permet de faire varier plusieurs paramètres.
*Outils&rarr;Solveur*
</div>
:::notes
Exo: Tester avec la feuille Résolution
:::
## Tableau dynamique
Permet de faire du tri et des calculs automatiquement.
*Données&rarr;Table dynamique&rarr;Insérer ou éditer*
:::notes
Possibilité de modifier les calculs en double-cliquant sur le champ.
Exo: Tester avec la feuille Filtres ou Recherche
:::
# Questions?