Quelques exemples de calculs

Les méthodes sont variées, vous pourrez en trouver d'autres pour un résultat identique. Ces exemples peuvent rebuter un débutant. Il est cependant possible de les appliquer sans pour autant les comprendre (dommage).
Nota: Dans les formules citées, années, mois, JourCherche, sont des valeurs qui peuvent être inscrites dans des cellules. Par exemple, =DATE(année;1;1) peut-être assimilé à =DATE(A1;1;1), si la valeur année est dans la cellule A1.
Certaines formules présentées ici proviennent de discussions sur des forums. Les formules matricielles sont entre les caractères { et }. Il ne faut pas les inscrire. Ces caractères s'inscrivent automatiquement en validant la formule, non pas avec la touche Entrée, mais avec la combinaison Ctrl + Maj + Entrée.
Plage représente une zone de cellules, comme par exemple A1:A10, la plage peut-être nommée (Ctrl+F3).
Cellule représente une cellule, comme par exemple A1.

On cherche Formules Commentaires
  Formules avec les dates  
Dernier jour du mois en cours, date entière =FIN.MOIS(AUJOURDHUI();0) formater la cellule suivant besoins.
Dernier jour du mois en cours, jour de la semaine =JOURSEM(FIN.MOIS(AUJOURDHUI();0);2) semaine du lundi au dimanche
Idem, avec affichage du jour de la semaine =CHOISIR(JOURSEM(DATE( ANNEE (AUJOURDHUI()); MOIS (AUJOURDHUI()); JOURSDANSMOIS (AUJOURDHUI())); 2); "lundi"; "mardi"; "mercredi"; "jeudi"; "vendredi"; "samedi"; "dimanche") semaine du lundi au dimanche
Dernier lundi de l'année précédente =DATE(année;1;1)-JOURSEM(DATE(année;1;1);0)  
Premier lundi de l'année =DATE(année;1;1) - JOURSEM(DATE(année;1;1);0) + SI(JOURSEM(DATE(année;1;1);0)>0;7;0)  
Premier lundi du mois =DATE(année;mois;1)-JOURSEM(DATE(année;mois;1);0) + SI (JOURSEM (DATE (année; mois; 1); 0)>0; 7; 0)  
Dernier lundi du mois =DATE(année; mois; JOURSDANSMOIS(DATE(année; mois; 1))) - JOURSEM (DATE(année; mois; JOURSDANSMOIS (DATE(année; mois; 1)));0)  
Dernier jour précis d'un mois =FIN.MOIS(DATE(année; mois; 1);0) - JOURSEM(FIN.MOIS (DATE(année; mois; 1);0);2) + JourCherche - SI(JOURSEM (FIN.MOIS (DATE (année; mois; 1); 0); 2)<JourCherche; 7; 0) JourCherche = jour de la semaine, de lundi (1) à dimanche (7)
Numéro du jour dans l'année =AUJOURDHUI()-DATE(ANNEE(AUJOURDHUI());1;0)  
Premier jour de la semaine =AUJOURDHUI()- JOURSEM(AUJOURDHUI(); 2) + 1 JourSemaine de 0 à 6 (dimanche au samedi)
Dernier jour dans la semaine précédent la date =AUJOURDHUI() - MOD(AUJOURDHUI() - JourSemaine ;7)
Dernier jour dans la semaine suivant la date 7=AUJOURDHUI() - MOD(AUJOURDHUI() - JourSemaine;7)+7
Numéro de trimestre =PLAFOND(MOIS(date entière)/3; 1) Ex: =PLAFOND (MOIS ("10/5/2005")/3; 1)
Date anniversaire dans un an =MOIS.DECALER(AUJOURDHUI(); 12) La différence des 2 types de formules se fait sur les années bissextiles. Cas particulier : si cellule contient 29/02/2004 (année bissextile) le retour sera suivant cas: 28/02/2005 ou 01/03/2005.
=MOIS.DECALER(cellule;12)
=DATE(ANNEE(AUJOURDHUI())+1; MOIS(AUJOURDHUI()); JOUR(AUJOURDHUI()))
=DATE(ANNEE(cellule)+1; MOIS(cellule); JOUR(cellule))
Texte et date dans une cellule ="Dossier du " & TEXTE(AUJOURDHUI(); "jj/mm/aaaa") Voir détails possibilités TEXTE
="Dossier du " & TEXTE(cellule; "jjjj jj mmmm aaaa")
     
Calcul âge =(ANNEES(A1; MAINTENANT();0)) & " ans " & (NB.MOIS(A1; MAINTENANT();0) - (ANNEES(A1; MAINTENANT(); 0))*12) & " mois " & (SI(JOUR(MAINTENANT()) - JOUR(A1) >=0; JOUR(MAINTENANT()) - JOUR(A1); JOUR(MAINTENANT()) + (JOURSDANSMOIS(MOIS.DECALER (MAINTENANT(); -1)) - JOUR(A1)))) & " jours" Date de naissance en A1, à comparer à la date du jour
     
Calcul âge (méthode détaillée) en C1 (années) =(ANNEES(A1;B1;0)) Date de naissance en A1 et date à comparer en B1
en D1 (mois) =(NB.MOIS(A1;B1;0) - (ANNEES(A1;B1;0))*12)
en E1 (jours) =SI((JOUR(B1)-JOUR(A1))<0; (SI((JOUR(B1)-JOUR(A1))<0; JOUR(B1); (JOUR(B1) - JOUR(A1)))) + ((JOURSDANSMOIS (DATE (ANNEE(B1); MOIS(B1)-1; 1))) - JOUR(A1)); (SI((JOUR(B1)-JOUR(A1))<0; JOUR(B1); (JOUR(B1)-JOUR(A1)))))
     
  Formules avec les heures  
Salaire pour un nombre d'heures =((heures : minutes ) * 24) * montant horaire) Ex: =(10:30 * 24 * 50) Une conversion est automatiquement effectuée par Calc: =(0,4375 * 24* 50)
Compter des heures de nuit = 1 - heure début + heure de fin Pour des horaires commençant avant minuit et finissant après minuit.
=SI(A1>B1; 1-A1+B1; B1-A1) Exemple avec heure début en A1 et fin en A2, utilisable avec les horaires jours et nuit.
Arrondir des heures =ARRONDI.AU.MULTIPLE(heure; TEMPS(arrondi heures; arrondi minutes; arrondi secondes)) Valeurs d'arrondis recommandées inférieures à 60. Une valeur 60 ou supérieure reporte sur l'unité supérieure (ex de secondes vers minutes). La correction est automatique.
=ARRONDI.AU.MULTIPLE(A1; TEMPS(0; 5 ; 0)) Heure en A1, arrondi à 5 minutes.
=ARRONDI.AU.MULTIPLE(15:23; TEMPS(0; 15 ; 0)) Arrondi à 15mn, retourne 15:30:00 (suivant format)
     
  Formules comptage de caractères, textes, positions, recherches  
Nombre de caractères dans une cellule =NBCAR(A1) - NBCAR(SUBSTITUE(A1;"a";"")) Dans cet exemple on cherche la lettre "a" en minuscule
Transformer des texte de valeurs avec espaces en valeur =CNUM (SUBSTITUE (A1;" "; "")) Pour une valeur sous forme de texte en A1. SUBSTITUE remplace les espaces par des chaînes vides (Attention : entre guillemets, un espace au premier, rien au second). CNUM transforme en valeur.
Nombre de lignes dans une plage =lignes(plage) Ex: =lignes(A1:A10)
Avant-dernière valeur d'une plage de données =PETITE.VALEUR(plage;2) 2 pour 2ème petite valeur.
Où est l'avant-dernière valeur =EQUIV(PETITE.VALEUR(plage;2); plage; 0) Position de la première valeur lue dans le tableau
Nombre avant-dernière valeur =NB.SI(plage;PETITE.VALEUR(plage;2))  
Nombre de valeurs =NB.SI(plage; valeur)  
Nombre de textes =NB.SI(plage; "texte")  
Nombre de données inférieures à valeur {=SOMME((plage) < valeur)} Formule matricielle (Ctrl + Maj + Entrée)
Nombre de valeurs entre mini et maxi {=SOMME((plage>10) * (plage<15))} Formule matricielle (dans le 1er cas). Dans ces exemples, compte le nombre de valeurs supérieures à 10 et inférieures à 15 dans plage. Résultat identique dans les 2 cas.
=NB.SI(plage; "<15") - NB.SI(plage; "<=10")
OOo2 Nombre de valeurs différentes dans une plage de cellules {=SOMME(SI(plage<>""; 1/NB.SI(plage; plage)))} Formule matricielle
Nombre de mots dans une plage de cellules {=SOMME(plage = "test")} Formule matricielle (Ctrl + Maj + Entrée). Retourne le nombre de fois où on trouve le mot test dans la plage
Faire une moyenne sans tenir compte de valeur précise =SOMME(A1:A10) / NB.SI(A1:A10;"<>0") Calcul la moyenne des éléments dans la plage A1:A10, sans tenir compte de valeur 0 (pas cellule vide). Dans les 2ème et 3ème exemples, la valeur à exclure est en B1. La seconde est matricielle (Ctrl+ Maj+ Entrée)
{=MOYENNE(SI(A1:A10<>B1;A1:A10;""))}     OOo2.x
= SI(ESTVIDE(B1); SOMME(A1:A10) / NB.SI(A1:A10;"<>0"); (SOMME(A1:A10) - (NB.SI(A1:A10; B1)*B1)) / NBVAL(A1:A10))
Numéroter les doublons =SI(ESTVIDE(A1);""; NB.SI($A$1:$A$10; A1) - NB.SI($A2:$A$10;A1)) Affecte un n° d'ordre aux données identiques dans la plage de données A1:B10. Formule à copier en B1 et recopier jusqu'en ligne 10
Compter les cellules vides {=SOMME(ESTVIDE(A1:A10))} Formules matricielles (Ctrl + Maj + Entrée)
{=SOMME(ESTVIDE(plage))}
Compter les cellules non vides {=SOMME(NON(ESTVIDE(A1:A10)))}
{=SOMME(NON(ESTVIDE(plage)))}
Dernière cellule d'une colonne contenant un mot précis {=MAX(SI(A1:A10="test";LIGNE(A1:A10);0))} Formules matricielles (Ctrl + Maj + Entrée). Dans le 1er exemple on cherche le mot test dans la plage A1:A10
{=MAX(SI(plage="test";LIGNE(plage);0))}
Additionner les cellules identiques de toutes les feuilles =SOMME(Feuille1.A1:Feuille3.A1) Exemple pour un classeur de 3 feuilles. Les ajouts, suppressions, modifications de noms de feuille, n'entrainent pas d'erreur.
Contourner SOMME.SI() avec une cellule vide = SOMME((plage données ="") * plage somme) = SOMME.SI(A1:A10; ""; B1:B10) ne fonctionne pas. La formule ci-contre permet de contourner l'obstacle.
= SOMME((A1:A10="") * B1:B10)
Additionner avec des cellules en erreur =SOMME.SI(plage; "<>0") Addition d'une plage de cellules sans erreur, même si certaines cellules contiennent #NA ou ERR suivi du numéro d'erreur.
OOo2 Nombre de texte présents dans une plage de cellules, y compris en cas de répétitions dans les cellules. =SOMMEPROD(NBCAR(plage)- NBCAR(SUBSTITUE(plage; texte; ""))*1) / longueur texte On compte le nombre d'échanges possibles
=SOMMEPROD(NBCAR(A1:10)- NBCAR(SUBSTITUE(A1:10; "abc"; ""))*1) /3 Dans cet exemple, on compte le nombre de abc ,et on divise par 3, longueur de la chaine abc
=SOMMEPROD(NBCAR(A1:A10)- NBCAR(SUBSTITUE(A1:A10; B1;""))*1) /NBCAR(B1) Exemple plus général, avec données dans la plage A1:A10 et la chaine à comparer en B1
     
  Formules nom fichier, répertoire  
Nom de feuille =DROITE (CELLULE ("filename"); NBCAR (CELLULE("filename")) - CHERCHE("$"; CELLULE ("filename"); 1))   Si changement de nom de feuille, mise à jour par Ctrl + Maj + F9
=DROITE(CELLULE("filename"); NBCAR (CELLULE("filename")) -1 - CHERCHE("#"; CELLULE ("filename")))  
=DROITE(CELLULE("filename"); NBCAR (CELLULE("filename")) -2 - CHERCHE ("'"; CELLULE ("filename"); 2))  
=STXT(CELLULE("filename"); TROUVE("$"; CELLULE ("filename";A2)) +1; 100) 100 représente le nombre de caractères maxi du nom de feuille.
Nom répertoire et feuille =SI(GAUCHE (CELLULE ("filename"); 5)="'file"; SUBSTITUE (DROITE (CELLULE("filename"); NBCAR (CELLULE ("filename")) -9); "%20"; " "); "") Uniquement si fichier enregistré.