FR/Calc: Fonctions base de données

Aperçu
Dans une feuille de calcul LibreOffice 'Calc', une 'base de données' est simplement une table de valeurs et n'a rien à voir avec une base de données complexe LibreOffice 'Base'. Les fonctions de 'base de données' Calc (listées ici) sont assez simples à utiliser et vous permettent de choisir et d'exécuter des données dans une table.

Une table de 'base de données' Calc ressemble à ceci :



La première ligne de la table de 'base de données' contient des en-têtes (Nom, Niveau, Âge ... ), et chaque ligne suivante contient les valeurs de données.

Les critères, qui sont utilisés pour sélectionner les lignes de la 'base de données' sont saisis dans une autre table :



La première ligne de cette table contient des en-têtes. Les lignes suivantes spécifient les critères : par exemple, en utilisant les critères de la table ci-dessus, on trouvera les enfants dont la distance du domicile par rapport à celle de l'école est supérieure à 600

Les fonctions de 'base de données' de Calc ont toutes une forme similaire.

Pour un premier exemple simple utilisant les tables ci-dessus :

BDNB(A1:E10; 0; A13:E14)
 * renvoie 5, le nombre d'enfants dont “Distance de l'école” est supérieur à 600.
 * A1:E10 est la table de base de données A13:E14 est la table de critère.

Il y a d'autres fonctions de 'base de données' qui renvoient une somme, une moyenne, un écart type, etc.

Critères
La table de critères peut être placée n'importe où dans la feuille de calcul, mais c'est souvent plus pratique de l'avoir à côté de la table de base de données.

Les en-têtes de la table de critères doivent correspondre exactement aux en-têtes de la table de base de données, mais elles peuvent apparaître dans n'importe quel ordre et peuvent également apparaître plus d'une fois :



Tous les critères dans une ligne doivent être satisfaits pour que la ligne soit satisfaite, ainsi, dans l'exemple ci-dessous, nous trouvons les lignes qui ont :
 * “Distance de l'école” supérieur à 600   ET 
 * “Âge” supérieur à 8   ET 
 * “Âge” inférieur ou égal à 10

en d'autres termes 'les enfants âgés de 9 et 10 ans qui se déplacent à plus de 600 m de l'école'.

Si la table des critères a plus d'une ligne de critères, chaque ligne satisfaite signifie que l'ensemble des critères de la table est satisfait :



Dans cet exemple, le test est :
 * (“Distance de l'école” supérieure à 600   ET
 * “Âge” supérieur à 8   ET
 * “Âge” inférieur ou égal à 10)
 * OU 
 * ( “Âge” inférieur ou égal à 8)

En d'autres termes, nous trouvons les lignes où les enfants ont aussi bien 9 ou 10 ans avec 600 m ou plus de distance par rapport à l'école', ou 'âgés de 8 ans ou moins'. La condition qui est saisie dans une cellule de la table des critères (ex. >4) est simplement du texte et a la forme suivante :
 * comparateur valeur où :
 * comparateur est un de ceux-ci >,  < , >=,  <= ,  = ,  <>  (si comparateur est omis  =  est considéré) ;
 * valeur est la valeur (nombre ou texte) à comparer.

Par exemple :
 * la condition “>4” teste si le contenu des cellules est supérieur à 4.
 * la condition "<lampe” teste si le contenu des cellules vient alphabétiquement avant lampe (ainsi ladre et ant correspond à la condition, mais late et zebra ne correspondent pas).
 * la condition “lampe” teste si le contenu des cellules est lampe - mais Calc a un certain nombre de paramètres qui définissent le comportement exact, veuillez lire la section suivante :

Paramètres pour les critères de texte
Lorsque l'on recherche une condition de texte simple, (tel que “ ”), il peut être important de vérifier les paramétrages de la boîte de dialogue Outils → Options → LibreOffice Calc → Calcul''' :



Respecter la casse
 * cette case à cocher n'a pas d'effet sur les fonctions de base de données Calc. La casse est ignorée - de sorte que “lamp” correspondra toujours à lamp, Lamp, LAMP, etc.

Les critères de recherche = et <> doivent correspondre à des lignes entières
 * si cette case est activée, “lamp” correspondra seulement à une cellule contenant juste lamp. Si cette case n'est pas cochée, “lamp” correspondra à lamp, clamp, lampoon, etc. - en d'autres termes, cela correspondra si lamp est trouvé n'importe où dans le texte de la cellule.

Autoriser les caractères génériques dans les formules
 * si cette case est activée, alors la condition est traitée comme une expression régulière. Par exemple, la condition “l?amp” correspondra à lamp et amp (dans les expressions régulières “l?” signifie que le “l” est facultatif). Les expressions régulières sont similaires à des caractères génériques mais sont plus puissantes ; elles sont décrites dans le how-to Expresions régulières dans Calc. (Notez que le paramétrage ' Les critères de recherche = et <> doivent correspondre à des lignes entières''' ' ci-dessus fonctionne aussi lorsque les expressions régulières sont sélectionnées).

Les résultats des fonctions peuvent dépendre de ces paramétrages, mais malheureusement ils sont cachés assez loin et l'utilisateur peut ne pas s'apercevoir que les paramétrages sont faux. Il y a deux façons de corriger cela :

Premièrement, vous pouvez construire la feuille de façon à ce qu'elle travaille sans respecter ces paramètres.
 * le plus simple, ne faites jamais de comparaison de texte - ou si vous en faites, recherchez toujours une correspondance de la ligne entière et assurez-vous qu'aucune des cellules que vous vérifiez est une sous-correspondance d'une autre cellule (c'est à dire, si vous recherchez 'chaud' comme seul contenu d'une cellule, assurez-vous qu'aucune autre cellule ne peut contenir 'réchaud'), ET
 * n'utilisez pas l'expression régulière ET
 * n'utilisez pas les caractères spéciaux d'expressions régulières tels que ., *, + [, { comme critères

Deuxièmement, vous pouvez inclure dans votre feuille de calcul un avertissement si les paramètres sont faux.
 * dans la cellule A3 saisissez le texte:
 * Vérifier :
 * Maintenant notez que
 * NB.SI(A3;".*") renvoie 1 si les expressions régulières sont désactivées.
 * NB.SI(A3;"<>e") renvoie 1 si la correspondance des lignes entières est activée.
 * et construisez une formule appropriée dans la cellule A4 - par exemple
 * Exp regul erreur.png
 * Pour vérifier à la fois les expressions régulières et la correspondance des cellules entières :
 * =SI( ET(NB.SI(A3;".*"); NB.SI(A3;"<>e")); "OK"; "Erreur : " & SI(NB.SI(A3;".*")=0; "Activez les expressions régulières. "; "") & SI(NB.SI(A3;"<>e")=0; "Activez la correspondance des lignes entières."; "") )
 * Pour vérifier les expressions régulières mais pas la correspondance des lignes entières
 * =SI( ET(NB.SI(A3;".*"); NB.SI(A3;"<>e")=0); "OK"; "Erreur : " & SI(NB.SI(A3;".*")=0; "Activez les expressions régulières. "; "") & SI(NB.SI(A3;"<>e"); "Désactiver la correspondance des lignes entières."; "") )
 * Pour vérifier la correspondance des lignes entières mais pas les expressions régulières
 * =SI( ET(NB.SI(A3;".*")=0; NB.SI(A3;"<>e")); "OK"; "Erreur : " & SI(NB.SI(A3;".*"); "Désactivez les expressions régulières. "; "") & SI(NB.SI(A3;"<>e")=0; "Activer la correspondance des lignes entières."; "") )
 * Pour ne vérifier ni les expressions régulières ni la correspondance des lignes entières
 * =SI( ET(NB.SI(A3;".*")=0; NB.SI(A3;"<>e")=0); "OK"; "Erreur : " & SI(NB.SI(A3;".*"); "Désactivez les expressions régulières. "; "") & SI(NB.SI(A3;"<>e"); "Désactivez la correspondance des lignes entières."; "") )

Trucs et astuces

 * Pour être sûr que les en-têtes de la table de critères correspondent exactement aux en-têtes de la table de base de données, vous pouvez soit faire un copier et coller, soit utiliser =. Par exemple, dans la table ci-dessus =D1 donnera la 'Distance de l'école'.
 * Si les critères ne semblent pas fonctionner, assurez-vous que toutes les cellules apparemment vides sont vraiment vides en les sélectionnant et en les supprimant.

Voir également
Fonctions listées par catégories