You are on page 1of 29

Guide Calc

Chapitre 13
Calc en tant que Base de
Donnes Simplifie
Copyright
Ce document est Copyright 20102012 par ses contributeurs tels que lists ci-dessous. Vous
poue! le distribuer et"ou le modi#ier sous les termes des licences G$% General &ublic 'icense
(http://www.gnu.org/licenses/gpl.html)* ersion + ou ultrieure ou Creatie Commons ,ttribution
'icense (http://creativecommons.org/licenses/!/3."/)* ersion +.0 ou ultrieure.
-ous les noms de marque . l/intrieur de ce guide appartiennent . leur propritaire lgitime.
Contributeurs
,ndre0 &itonya1 2arbara 3uprey 4ean 5ollis 6eber
7imon 2rydon &ierre-8es 7amyn
Traducteur
Christian Chenal
9electeurs : &hilippe Clment* &ierre-8es 7amyn
Retours
Veuille! enoyer os commentaires ou suggestions . propos de ce document . :
discuss#fr.lireoffice.org
Remerciements
Ce chapitre est bas sur le Chapitre 1+ de $pen$ffice.org 3.3 Calc %uide* crit par ,ndre0
&itonya1.
Date de publication et version du logiciel
&ubli le 22 ;uillet 2012. 2as sur 'ibre<##ice +.=.>.
Note pour les utilisateurs Mac
Certaines combinaisons de touches et certains lments de menus sont di##rents entre un ?ac et
6indo0s ou 'inu@. 'a table ci-dessous donne quelques quialents pour les instructions de ce
chapitre. &our une liste plus dtaille* oye! dans l/,ide.
Windows/Linux quivalent Mac Effet
7lection de menu
Outils > Options
LibreOffice > Prfrences ,ccAs au@ options de paramtrage
Clic droit z&clic <ure un menu conte@tuel
Ctrl 'Contr(le) z 'Commande) %tilis aec d/autres touches
*+ ,a-&z&*+ <ure le $aigateur
*11 z&. <ure la #enBtre 7tyles C Dormatage
/a documentation pour /ire$ffice est disponile 0 fr.lireoffice.org
Table des mati!res
Cop!right......................................................................................................................................... 1
2ote pour les utilisateurs ,ac.......................................................................................................... 1
3ntroduction...................................................................................................................................... 4
5ssocier une plage 0 un nom........................................................................................................... +
6lage nomme............................................................................................................................ +
6lage de ase de donnes.......................................................................................................... 7
.ri................................................................................................................................................... 1"
*iltres............................................................................................................................................. 11
5uto*iltres................................................................................................................................. 11
*iltres standard.......................................................................................................................... 13
*iltres spciau8......................................................................................................................... 19
,anipuler des donnes filtres.................................................................................................. 1:
*onctions de Calc similaires 0 des fonctions de ase de donnes................................................1:
Comptage et somme selon une condition de recherche : 2B.S3 et S$,,;.S3.........................1"
3gnorer les cellules filtres avec S$<S..$.5/.........................................................................11
<tiliser des formules pour trouver des donnes.........................................................................11
=echercher un loc de donnes en utilisant =;C>;=C>;?...............................................11
=echercher un loc de donnes en utilisant =;C>;=C>;>...............................................13
=echercher une ligne ou une colonne avec =;C>;=C>;...................................................13
<tiliser ;@<3? pour trouver lAinde8 dAune valeur dans une plage..........................................14
;8emples.............................................................................................................................. 14
=etourner une chaBne pour lAadresse de la cellule avec 5D=;SS;...........................................1+
Convertir une chaBne en cellule ou en plage avec 32D3=;C....................................................1+
=envo!er une cellule ou une plage par rapport 0 une autre avec D;C5/;=............................19
=envo!er une cellule 0 lAintrieur dAune plage avec 32D;C.......................................................1D
*onctions particuliEres au8 plages de donnes.............................................................................17
Conclusion..................................................................................................................................... 1:
Calc en tant que Base de Donnes Simplifie 3
"ntroduction
%n document Calc peut constituer une base de donnes simpli#ie* disposant de #onctionnalits
su##isantes pour satis#aire les besoins de certains utilisateurs. Ce chapitre prsente les capacits
d/un document Calc qui le rendent acceptable en tant qu/outil simpli#i de base de donnes. Euand
c/est possible* les #onctionnalits sont e@pliques en utilisant . la #ois l/inter#ace graphique et les
macros.
Note
2ien que ce document ait t initialement cr pour des programmeurs de macros*
son contenu derait Btre accessible . tous les utilisateurs. Voir le Chapitre 12
(?acros Calc) pour plus d/in#ormations sur les macros. 7i ous n/utilise! pas les
macros* ous poue! sauter les portions correspondantes.
3ans une base de donnes* un enregistrement est un groupe d/lments de donnes lis entre
eu@ et traits comme une seule unit d/in#ormation. Chaque lment dans l/enregistrement est
appel un champ. %ne table est un ensemble d/enregistrements. Chaque enregistrement* .
l/intrieur d/une table* a la mBme structure. %ne table peut Btre ue comme une srie de lignes et
de colonnes. Chaque ligne de la table correspond . un seul enregistrement et chaque colonne
correspond au@ di##rents champs. %ne #euille d/un document Calc a une structure similaire . une
table de base de donnes. Chaque cellule correspond . un champ dans un enregistrement de
base de donnes. 'es #onctionnalits de base de donnes de Calc sont su##isantes pour certains
utilisateurs et permettent de se dispenser d/un programme de gestion de base de donnes* tel que
2ase.
3ans l/enseignement* un classeur peut Btre utilis pour grer les notes des tudiants. Chaque
ligne correspond . un seul tudiant. 'es colonnes reprsentent les di##rentes notes reFues au
cours des tests ou de leurs traau@ personnels (oir Digure 1).
*igure 1 : *euille des notes des lEves
Note
2ien que le choi@ d/associer un enregistrement . une ligne plutGt qu/. une colonne
soit arbitraire* cette conention est pratiquement unierselle. Hn d/autres termes* il
est peu probable que quelqu/un #asse r#rence . une colonne de donnes en tant
qu/enregistrement indiiduel de base de donnes.
4 Calc en tant que Base de Donnes Simplifie
#ssocier une plage $ un nom
3ans un document Calc* une plage #ait r#rence . un groupe de cellules contiguIs contenant au
moins une cellule. Vous poue! associer un nom signi#icati# . une plage* ce qui ous permet de
#aire r#rence . celle-ci en utilisant ce nom. Vous poue! crer soit une plage ase de donnes*
qui comporte des #onctionnalits ressemblant au@ bases de donnes* soit une plage nomme* qui
n/en comporte pas. %n nom est habituellement associ . une plage pour l/une de ces trois
raisons :
1) ,ssocier un nom . une plage amliore la lisibilit grJce . l/utilisation d/un nom signi#icati#.
2) 7i une plage est r#rence par son nom . partir de plusieurs endroits* ous poue! #aire
pointer ce nom sur un autre emplacement et toutes les r#rences suiront.
+) 'es plages associes . un nom sont a##iches dans le $aigateur* qui est disponible en
appuyant sur la touche *+ ou en cliquant sur l/icGne Navigateur. 'e $aigateur permet une
naigation rapide ers les plages nommes.
Plage nomme
'/utilisation la plus rpandue d/une plage nomme est d/associer une plage de cellules . un nom
signi#icati#. &ar e@emple* cre! une plage appele NotesTest1 et utilise! ensuite la #ormule
suiante : =SOMME(NotesTest1). &our crer une plage nomme* slectionne! la plage . d#inir.
%tilise! "nsertion > Noms > Dfinir pour ourir la boKte de dialogue 3#inir un nom. Vous poue!
crer les plages nommes une par une.
*igure 1 : Dfinir une plage nomme
3ans une macro* une plage nomme est accde* cre et supprime en utilisant le serice
$amed9anges d/un document Calc. %tilise! les mthodes has2y$ame(nom) et get2y$ame(nom)
pour ri#ier l/e@istence et renoyer une plage nomme. 'a mthode getHlement$ames() renoie
un tableau contenant les noms de toutes les plages nommes. %n ob;et $amed9anges supporte
la mthode add$e02y$ame* qui accepte quatre arguments : le nom* le contenu* la position et le
type. 'a macro du 'isting 1 cre une plage nomme* si elle n/e@iste pas d;.* qui r#rence une
plage de cellules.
5ssocier une plage 0 un nom +
/isting 1. Crer une plage nomme qui rfrence F*euille1.FBF3:FDF9.
Sub AjoutPlageNommee()
Dim oPlage ' La plage nomme
Dim oPlages ' Toutes les plages nommes
Dim sNom! ' Nom "e la plage nomme # $%e%
Dim o&ell ' Objet $ellule
Dim s!
sNom! = 'MaNPlage'
oPlages = T(is&omponentName")anges
*+ NOT oPlages(as,-Name(sNom!) T(en
)EM D+ini% une a"%esse "e $ellule
Dim o&ellA"%esse As ne. $omsunsta%table&ellA""%ess
o&ellA"%esseS(eet = / 'La p%emi0%e +euille
o&ellA"%esse&olumn = 1 '&olonne ,
o&ellA"%esse)o. = 1 'Ligne 2
)EM A%gument 1 3 nom "e la plage
)EM A%gument 1 3 +o%mule ou e4p%ession # utilise%
)EM 5abituellement une $(a6ne 7ui "+init une plage
)EM A%gument 2 3 a"%esse "e base pou% les %+%en$es %elati8es
)EM A%gument 9 3 nomb%e 7ui "+init $omment la plage est utilise
)EM 5abituellement /
)EM :oi% Tableau 1 pou% les 8aleu%s possibles
s! = '!;euille1!,!23!D!<'
oPlagesa""Ne.,-Name(sNom!= s!= o&ellA"%esse= /)
En" *+
)EM Obteni% une plage # pa%ti% "e la plage nomme $%e
oPlage = T(is&omponentName")angesget,-Name(sNom!)
)EM A++i$(e la $(a6ne $ontenue "e la $ellule !;euille1!,!2
o&ell = oPlageget)e+e%%e"&ells()get&ell,-Position(/=/)
P%int o&ellgetSt%ing()
En" Sub
'e quatriAme argument de la mthode add$e02y$ame() est une combinaison d/indicateurs qui
prcisent comment la plage nomme a Btre utilise (oir -ableau 1). 'a aleur ordinaire est 0* qui
n/est pas une aleur constante d#inie.
.aleau 1. Constantes com.sun.star.sheet.2amed=ange*lag
Valeur Nom Description
1 DL'-H9MC9L-H9L, 'a plage contient des critAres de #iltre.
2 &9L$-M,9H, 'a plage peut Btre utilise comme plage d/impression.
> C<'%?$M5H,3H9 'a plage peut Btre utilise comme en-tBtes de colonnes pour
l/impression.
N 9<6M5H,3H9 'a plage peut Btre utilise comme en-tBtes de lignes pour
l/impression.
'e troisiAme argument* une adresse de cellule* sert d/adresse de base pour les cellules aec une
r#rence relatie. 7i la plage de cellule n/est pas d#inie aec une adresse absolue* la plage
r#rence sera di##rente selon l/endroit du classeur oO elle sera utilise. 'e comportement en
9 Calc en tant que Base de Donnes Simplifie
relati# est illustr 'isting 2* qui prsente galement une autre utilisation d/une plage nomme* la
d#inition d/une #ormule. 'a macro du 'isting 2 cre une plage nomme AjoutGauche* qui #ait
r#rence . la #ormule ,+P2+ aec C+ en tant que cellule de r#rence. 'es cellules ,+ et 2+ sont
les deu@ cellules directement . gauche de C+* et donc la #ormule =Ajout>au$(e calcule la
somme des deu@ cellules . la gauche de la cellule qui contient cette #ormule. 3ans ce listing* si
ous modi#ie! la cellule de r#rence en C>* qui se troue en dessous de ,+ et 2+* cela modi#iera
la #ormule ,;outGauche* qui a alors calculer la somme des deu@ cellules sur la gauche et sur la
ligne prcdente.
/isting 1. Cre la plage nomme 5-out%auche
Sub Ajout;on$tionNommee()
Dim o;euille ';euille 7ui $ontient la plage nomme
Dim o&ellA"%esse 'A"%esse pou% les %+%en$es %elati8es
Dim oPlages 'Objet Name")anges
Dim oPlage 'Plage "e $ellules
Dim sNom As St%ing 'Nom "e la +on$tion # $%e%
sNom = 'Ajout>au$(e'
oPlages = T(is&omponentName")anges
*+ NOT oPlages(as,-Name(sNom) T(en
o;euille = T(is&omponentgetS(eets()get,-*n"e4(/)
oPlage = o;euilleget&ell)ange,-Name('&2')
o&ellA"%esse = oPlageget&ellA""%ess()
oPlagesa""Ne.,-Name(sNom= 'A2?,2'= o&ellA"%esse= /)
En" *+
En" Sub
Note
'e 'isting 2 illustre deu@ possibilits peu connues. %ne plage nomme peut d#inir
une #onction. 'e troisiAme argument sert d/adresse de base pour les cellules
r#rences de #aFon relatie.
7lectionne! la plage contenant les en-tBtes et les donnes* puis utilise! "nsertion > Noms >
Crer pour ourir la boKte de dialogue Crer des noms (Digure +)* qui ous permet de crer
simultanment plusieurs plages nommes bases sur la ligne suprieure* la colonne gauche* la
ligne in#rieure ou la colonne droite. 7i ous choisisse! de crer des plages bases sur la ligne
suprieure* une plage nomme est cre pour chaque en-tBte de colonne (l/en-tBte lui-mBme n/est
pas inclus dans la plage) et a pour nom le te@te de cet en-tBte.
*igure 3 : Dfinir des plages nommes avec les enGtHtes
Note
'e nom associ . une plage nomme ne peut contenir que des lettres* des nombres
et des soulignements. "nsertion > Noms > Crer remplace automatiquement les
caractAres Q interdits R par un soulignement.
5ssocier une plage 0 un nom D
'a macro du 'isting + cre trois plages nommes bases sur la ligne suprieure d/une plage.
/isting 3. Crer plusieurs plages nommes dAaprEs les enGtHtes de colonne.
Sub AjoutPlagesEntete()
Dim o;euille ';euille 7ui $ontient la plage nomme
Dim oA"%esse 'A"%esse "e la plage
Dim oPlages 'Objet Name")anges
Dim oPlage 'Plage "e $ellules
oPlages = T(is&omponentName")anges
o;euille = T(is&omponentgetS(eets()get,-*n"e4(/)
oPlage = o;euilleget&ell)ange,-Name('A13&1/')
oA"%esse = oPlageget)angeA""%ess()
oPlagesa""Ne.;%omTitles(oA"%esse= @
$omsunsta%s(eet,o%"e%TOP)
En" Sub
'es constantes du -ableau 2 dterminent l/emplacement des en-tBtes quand plusieurs plages sont
cres aec la mthode add$e0Drom-itles().
.aleau 1 . Constantes com.sun.star.sheet.Border
Valeur Nom Description
0 -<& 7lectionne la ligne suprieure.
1 2<--<? 7lectionne la ligne in#rieure.
2 9LG5- 7lectionne la colonne droite.
+ 'HD- 7lectionne la colonne gauche.
#ttention Ll est possible de crer plusieurs plages nommes aec le mBme nom. Crer
plusieurs plages nommes en une seule commande augmente la probabilit que le
mBme nom soit employ plusieurs #ois* ce que ous derie! iter si possible.
Plage de base de donnes
2ien qu/une plage de base de donnes puisse Btre utilise comme une plage nomme ordinaire*
elle d#init galement une plage de cellules dans un classeur qui peuent Btre utilises comme
base de donnes. Chaque ligne de la plage correspond . un enregistrement et chaque cellule de
la ligne correspond . un champ. Vous poue! trier* grouper* rechercher et e##ectuer des calculs
aec la plage comme si c/tait une base de donnes.
%ne plage de base de donnes #ournit des #onctionnalits qui sont utiles quand ous ae! une
actiit lie au@ bases de donnes. &ar e@emple* ous poue! d#inir la premiAre ligne en tant
qu/en-tBtes. &our crer* modi#ier ou supprimer une plage de base de donnes* utilise! Donnes >
Dfinir la plage pour ourir la boKte de dialogue 3#inir une plage de base de donnes (oir Digure
>). 'e bouton s/intitule Nouveau ou Modifier selon l/e@istence d/une plage de base de donnes ou
non.
7 Calc en tant que Base de Donnes Simplifie
*igure 4 : Dfinir une plage de ase de donnes
3ans une macro* une plage de base de donnes est accde* cre et supprime . partir du
serice 3atabase9anges. 'a macro du 'isting > cre une plage de base de donnes appele
?on$om et paramAtre la plage pour Btre utilise aec des ,utoDiltres.
/isting 4. Cre une plage de ase de donnes avec un 5uto*iltre.
Sub AjoutPlage,D()
Dim oPlage 'Objet Database)ange
Dim oA"% 'A"%esse "e la plage pou% la plage "e base "e "onnes
Dim o;euille 'P%emi0%e +euille= 7ui 8a $onteni% la plage
Dim oDo$ ')+%en$e T(is&omponent a8e$ un nom $ou%t
oDo$ = T(is&omponent
*+ NOT oDo$Database)anges(as,-Name('MonNom') T(en
o;euille = T(is&omponentgetS(eets()get,-*n"e4(/)
oPlage = o;euilleget&ell)ange,-Name('A13>1<')
oA"% = oPlageget)angeA""%ess()
oDo$Database)angesa""Ne.,-Name('MonNom'= oA"%)
En" *+
oPlage = oDo$Database)angesget,-Name('MonNom')
oPlageAuto;ilte% = T%ue
En" Sub
5ssocier une plage 0 un nom :
Tri
'e mcanisme de tri dans un document Calc rorganise les donnes dans la #euille. 'a premiAre
tape est de slectionner les donnes que ous oule! trier. &our trier les donnes de la Digure 1*
slectionne! les cellules de ,1 . G1S T si ous inclue! les en-tBtes de colonne* indique! le dans la
boKte de dialogue -ri (oir Digure S). %tilise! %tilise! Donnes > Trier pour ourir la boKte de
dialogue -ri (oir Digure =). Vous poue! trier ;usqu/. trois colonnes ou lignes en mBme temps.
*igure + : .ri selon la colonne 2om
Clique! sur l/onglet $ptions (oir Digure S) pour dterminer les options de tri. Coche! la case La
plage contient des ti%uettes de colonne pour iter que les en-tBtes de colonne soient tris
aec les autres donnes. 7i cette case est coche* la liste droulante Trier par de la Digure =
a##iche les en-tBtes de colonne plutGt que la lettre de leur identi#iant (Colonne , par e@emple).
$ormalement* le tri des donnes remplace les donnes e@istantes par les donnes nouellement
tries. 'a case Copier le rsultat du tri vers permet de conserer les donnes telles quelles et de
crer une copie des donnes tries . un emplacement . spci#ier. Vous poue! soit saisir
directement l/adresse cible (Feuille3.A1 par e@emple) ou slectionner une plage d#inie.
Coche! Ordre de tri personnalis pour e##ectuer un tri selon une liste de aleurs prd#inie. &our
paramtrer os propres listes* utilise! Outils > Options > LibreOffice Calc > Listes de tri et
saisisse! os propres listes de tri. 'es listes de tri prd#inies sont utiles pour trier des donnes
autrement que selon un ordre alphabtique ou numrique T par e@emple* pour trier les ;ours de la
semaine selon leur nom.
1" Calc en tant que Base de Donnes Simplifie
*igure 9 : 6aramtrer les options de tri
#ttention
Euand une cellule est dplace au cours d/une opration de tri* les r#rences
e@ternes . cette cellule ne sont pas mises . ;our. 7i une cellule qui contient une
r#rence relatie . une autre cellule est dplace* la r#rence est relatie . la
nouelle position une #ois le tri termin. 7oye! conscient de ce comportement des
r#rences au cours d/un tri et ne soye! pas alarm : cela correspond gnralement
. ce que ous oule!* parce que la r#rence se troue souent . droite ou . gauche
dans la mBme ligne. Ce comportement est celui d/autres programmes de tableurs.
&iltres
%tilise! les #iltres pour limiter les lignes isibles dans un classeur. 'es #iltres gnriques* communs
. toutes sortes de manipulations de donnes* sont #ournis automatiquement par la #onctionnalit
d/,utoDiltre. Vous poue! galement d#inir os propres #iltres.
#ttention
,prAs l/application d/un #iltre* certaines lignes sont isibles et d/autres non. 7i ous
slectionne! plusieurs lignes en mBme temps* ous slectionnere! aussi les lignes
inisibles situes entre les lignes isibles slectionnes. 3es oprations comme une
suppression agissent sur toutes les lignes slectionnes* isibles ou non. &our iter
ce problAme* ous poue! slectionner chaque ligne #iltre en utilisant la touche Ctrl.
*iltres 11
#uto&iltres
%tilise! les ,utoDiltres pour crer rapidement des #iltres #acilement accessibles et couramment
utiliss dans di##rents types d/applications. ,prAs la cration d/un ,utoDiltre pour une colonne
particuliAre* une liste droulante est a;oute . cette colonne. Cette liste permet un accAs rapide .
chaque type d/,utoDiltre.
'/,utoDiltre -out rend isibles toutes les lignes.
'/,utoDiltre Diltre standard oure la boKte de dialogue Diltre standard et est identique au
#iltre standard.
'/,utoDiltre -op 10 a##iche les 10 lignes ayant les aleurs les plus #ortes. 7i la aleur U0 est
dans les 10 plus #ortes aleurs* toutes les lignes qui contiennent la aleur U0 dans la
colonne #iltre sont alors a##iches. Ceci peut aoir comme consquence que plus de 10
lignes soient a##iches.
%ne entre d/,utoDiltre est cre pour chaque aleur unique de la colonne.
&our crer un ,utoDiltre* slectionne! tout d/abord les colonnes . #iltrer. &ar e@emple* aec les
donnes de la Digure 1* slectionne! les donnes des colonnes 2 et C. 7i ous ne slectionne!
pas la ligne de titres* Calc demande si la ligne de titres ou la ligne actuelle derait Btre utilise.
Vous poue! placer l/,utoDiltre sur n/importe quelle ligne* et seules les lignes en dessous de
l/,utoDiltre seront #iltres. %tilise! Donnes > &iltres > #uto&iltre pour insrer la liste droulante
de l/,utoDiltre dans la cellule approprie. Hn#in* utilise! la #lAche de la liste droulante pour choisir
l/,utoDiltre oulu (oir Digure U).
*igure D : <tiliser lA5uto*iltre de la colonne C
7upprime! un ,utoDiltre en rptant les tapes pour crer un ,utoDiltre. Hn d/autres termes*
l/option de menu agit comme un interrupteur pour actier ou non l/,utoDiltre. Euand un ,utoDiltre
est supprim* la liste droulante est enlee de la cellule. 'a macro du 'isting > illustre la cration
d/un ,utoDiltre pour une plage.
11 Calc en tant que Base de Donnes Simplifie
&iltres standard
%tilise! Donnes > &iltres > &iltre standard pour ourir la boKte de dialogue Diltre standard (oir
Digure N) et limiter l/a##ichage de 1 . N conditions. %tilise! Donnes > &iltres > 'upprimer le filtre
pour dsactier le #iltre.
*igure 7 : <tiliser le filtre standard
'a macro du 'isting = cre un #iltre simple dans la premiAre #euille.
/isting +. Crer un filtre simple.
Sub ;ilt%eSimple()
Dim o;euille ' ;euille 7ui 8a $onteni% le +ilt%e
Dim o;ilt%eDes$ ' Des$%ipteu% "e +ilt%e
Dim o&(amps(/) As Ne. $omsunsta%s(eetTable;ilte%;iel"

o;euille = T(is&omponentgetS(eets()get,-*n"e4(/)

)EM Si l'a%gument est 8%ai= $%e un "es$%ipteu% "e +ilt%e
)EM 8i"e Si l'a%gument est +au4= $%e un "es$%ipteu%
)EM a8e$ les pa%am0t%es p%$"ents
o;ilt%eDes$ = o;euille$%eate;ilte%Des$%ipto%(T%ue)

Ait( o&(amps(/)
)EM :ous pou%%ieB utilise% la p%op%it &onne$tion pou%
)EM in"i7ue% la liaison a8e$ le $(amp p%$"ent &'est le
)EM p%emie% $(amp= $e n'est "on$ pas n$essai%e
'&onne$tion = $omsunsta%s(eet;ilte%&onne$tionAND
'&onne$tion = $omsunsta%s(eet;ilte%&onne$tionO)
*iltres 13
)EM La p%op%it ;iel" est le num%o "e $olonne=
)EM # pa%ti% "e /= # +ilt%e% Si 8ous a8eB la $ellule=
)EM 8ous pou8eB utilise% o&ell&ellA""%ess&olumn
;iel" = C
)EM &ompa%e% un nomb%e ou une $(a6ne D
*sNume%i$ = T%ue
)EM La p%o%it Nume%i$:alue est utilise
)EM # $ause "u *SNume%i$ = T%ue $iE"essus
Nume%i$:alue = F/
)EM Si *sNume%i$ tait +au4= la p%op%it
)EM St%ing:alue se%ait alo%s utilise
)EM St%ing:alue = 'test'
)EM Les op%ateu%s 8ali"es sont EMPTG= NOT@EMPTG= EHIAL=
)EM NOT@EHIAL= >)EATE)= >)EATE)@EHIAL= LESS=
)EM LESS@EHIAL= TOP@:ALIES= TOP@PE)&ENT=
)EM ,OTTOM@:ALIES et ,OTTOM@PE)&ENT
Ope%ato% = $omsunsta%s(eet;ilte%Ope%ato%>)EATE)@EHIAL
En" Ait(

)EM Le "es$%ipteu% "e +ilt%e $ompo%te les p%op%its sui8antes 3
)EM *s&aseSensiti8e= SJipDupli$ates= Ise)egula%E4p%essions=
)EM Sa8eOutputPosition= O%ientation= &ontains5ea"e%=
)EM &op-OutputData= OutputPosition= an" Ma4;iel"&ount
o;ilt%eDes$set;ilte%;iel"s(o&(amps())
o;ilt%eDes$&ontains5ea"e% = T%ue
o;euille+ilte%(o;ilt%eDes$)
En" Sub
Euand un #iltre est appliqu . la #euille* il remplace tout #iltre d;. e@istant dans cette #euille.
&aramtrer un #iltre ide dans la #euille reient . supprimer tous les #iltres (oir 'isting S).
/isting 9. Supprimer le filtre de la feuille en cours.
Sub Supp%ime%;ilt%e()
Dim o;euille ' ;euille # +ilt%e%
Dim o;ilt%eDes$ ' Des$%ipteu% "e +ilt%e

o;euille = T(is&omponentgetS(eets()get,-*n"e4(/)
o;ilt%eDes$ = o;euille$%eate;ilte%Des$%ipto%(T%ue)
o;euille+ilte%(o;ilt%eDes$)
En" Sub
'es techniques prsentes ci-dessus appliquent ou suppriment un #iltre . la feuille. -oute#ois* dans
la plupart des cas* il ne sera pas possible de procder ainsi :
'a plage ne commence pas ncessairement en ,1.
'a #euille peut comprendre autre chose que la plage . #iltrer.
'/utilisateur peut aoir dplac la plage dans la #euille ou une autre #euille.
'es plages de base de donnes abordes page N permettent de s/a##ranchir de ces limites car
elles peuent Btre #iltres et elles Q suient R le dplacement de leur plage de r#rence.
14 Calc en tant que Base de Donnes Simplifie
'e 'isting U illustre cette technique. Ll montre comment accder . une plage de base de donnes
puis Q remonter R . la plage de r#rence pour appliquer un #iltre plus aanc qui #iltre deu@
colonnes et utilise des e@pressions rguliAres. 'e programme se termine par l/application d/un #iltre
simple sur une autre plage* #igurant ou non sur la mBme #euille. '/e@emple de la Digure V pourrait
complter les donnes de la Digure 1 T la plage 6lage1 doit Btre d#inie par la commande
Donnes > Dfinir la plage.
/isting D. *iltre simple utilisant deu8 colonnes.
Sub ;ilt%eSimple@1()
"im LibOData)ange as obje$t= LibO;ilt%e as obje$t
"im LibO&(amp;ilt%e1(1) As Ne. $omsunsta%s(eetTable;ilte%;iel"
"im LibO&(amp;ilt%e1(/) As Ne. $omsunsta%s(eetTable;ilte%;iel"
' A$$0s # une plage "e "onnes pa% son nom
LibOData)ange = t(is$omponentDatabase)angesget,-Name('MonNom')
' &%e un "es$%ipteu% "e +ilt%e 8i"e su% la plage %+%en$e
LibO;ilt%e = LibOData)ange%e+e%%e"&ells$%eate;ilte%Des$%ipto%(t%ue)
.it( LibO;ilt%e 'Les pa%am0t%es gn%au4
&ontains5ea"e% = t%ue 'La p%emi0%e ligne = enEtKte "e $olonnes
'&op-OutputData = t%ue '&opie%ait le %sultat ailleu%s
'OL 8ou"%aitEon le %sultat
'OutputPosition=LibO;euilleDestget&ell)ange,-Name('A2')&ellA""%ess
Ise)egula%E4p%essions = t%ue 'Itilise les e4p%essions %guli0%es
en" .it(
'&iE"essous les pa%am0t%es pa% $olonne (i$i "eu4 $olonnes "e +ilt%e)
' Pa%am0t%e un $(amp pou% a++i$(e% les l08es
' "ont le nom $ommen$e pa% la lett%e t
.it( LibO&(amp;ilt%e1(/)
;iel" = / ';ilt%e la $olonne A
*sNume%i$ = +alse 'Itilise une $(a6ne et non un nomb%e
Ope%ato% = $omsunsta%s(eet;ilte%Ope%ato%EHIAL
*iltres 1+
*igure :: Deu8iEme plage 0 filtrer
St%ing:alue = 'tM' 'Tout $e 7ui $ommen$e pa% t
en" .it(
' Pa%am0t%e un $(amp 7ui a une 8aleu% Mo-enne sup%ieu%e ou gale
' # F/ et 7ui %pon"e au4 "eu4 $on"itions
.it( LibO&(amp;ilt%e1(1)
&onne$tion = $omsunsta%s(eet;ilte%&onne$tionAND
;iel" = C ';ilt%e la $olonne ;
*sNume%i$ = t%ue 'Itilise un nomb%e
Ope%ato% = $omsunsta%s(eet;ilte%Ope%ato%>)EATE)@EHIAL
Nume%i$:alue = F/ ':aleu%s sup%ieu%es ou gales # F/
en" .it(
'Passe les pa%am '$olonnes' au +ilt%e
LibO;ilt%eset;ilte%;iel"s(LibO&(amp;ilt%e1())
LibOData)ange%e+e%%e"&ells+ilte%(LibO;ilt%e) 'Appli7ue le +ilt%e
' A$$0s # une plage "e "onnes pa% son nom
LibOData)ange = t(is$omponentDatabase)angesget,-Name('Plage1')
' &%e un "es$%ipteu% "e +ilt%e 8i"e su% la plage %+%en$e
LibO;ilt%e = LibOData)ange%e+e%%e"&ells$%eate;ilte%Des$%ipto%(t%ue)
.it( LibO;ilt%e 'Les pa%am0t%es gn%au4
&ontains5ea"e% = t%ue 'La p%emi0%e ligne = enEtKte "e $olonnes
Ise)egula%E4p%essions = +alse 'Pas "'e4p%essions %guli0%es
en" .it(
'Pa%am0t%es pa% $olonne (i$i une seule $olonne "e +ilt%e)
';ilt%e les l08es plus Ngs 7ue 1C ans
.it( LibO&(amp;ilt%e1(/)
;iel" = 1 ';ilt%e $olonne ,
*sNume%i$ = t%ue 'Itilise un nomb%e
Ope%ato% = $omsunsta%s(eet;ilte%Ope%ato%>)EATE)
Nume%i$:alue = 1C ':aleu%s sup%ieu%es # 1C
en" .it(
'Passe les pa%am '$olonnes' au +ilt%e
LibO;ilt%eset;ilte%;iel"s(LibO&(amp;ilt%e1())
LibOData)ange%e+e%%e"&ells+ilte%(LibO;ilt%e) 'Appli7ue le +ilt%e
En" Sub
&iltres spciau(
%n #iltre spcial supporte ;usqu/. huit conditions* comme un #iltre standard. 'es critAres d/un #iltre
spcial sont stoc1s dans la #euille. 'a premiAre tape de la cration d/un #iltre spcial est de saisir
le critAre de #iltre dans le classeur.
1) 7lectionne! un emplacement ide dans le document Calc. Cet emplacement peut se
situer . n/importe quel endroit de n/importe quelle #euille du classeur.
2) 3uplique! les en-tBtes de colonnes depuis la !one . #iltrer ers la !one qui contiendra les
critAres de #iltre.
+) 7aisisse! les critAres de #iltre en dessous des en-tBtes de colonnes (oir Digure 10). 'es
critAres de chaque colonne d/une mBme ligne sont lis entre eu@ par des H-. 'es critAres
de chaque ligne sont lis entre eu@ par des <%.
19 Calc en tant que Base de Donnes Simplifie
*igure 1" : ;8emple de critEres de filtre spcial
#stuce
3#inisse! des plages nommes pour r#rencer os critAres de #iltre spcial et la
plage de destination pour les donnes #iltres (oir Digure 2). Chaque plage
nomme d#inie est disponible dans les listes droulantes de la boKte de dialogue
Diltre spcial (oir Digure 11).
,prAs aoir cr un ou plusieurs ensembles de critAres de #iltre* applique! un #iltre spcial comme
ceci :
1) 7lectionne! la plage qui contient les donnes . #iltrer.
2) %tilise! Donnes > &iltre > &iltre spcial pour ourir la boKte de dialogue Diltre spcial
(oir Digure 11).
+) 7lectionne! la plage qui contient les critAres de #iltre et choisisse! les autres options.
Clique! sur O).
*igure 11 : 5ppliquer un filtre spcial
,ppliquer un #iltre spcial en utilisant une macro est asse! simple (oir 'isting N). 'a plage de
cellules qui contient les critAres de #iltre est utilise pour crer le descripteur de #iltre qui est utilis
pour #iltrer la plage contenant les donnes.
/isting 7. <tiliser un filtre spcial.
Sub Mon;ilt%eSpe$ial()
Dim o;euille 'Ine +euille "u "o$ument &al$
Dim oPlages 'P%op%it Name")anges
Dim o&%itPlage 'Plage 7ui $ontient les $%it0%es "e +ilt%e
Dim oDonnPlage 'Plage 7ui $ontient les "onnes # +ilt%e%
Dim o;iltDes$ 'Des$%ipteu% "e +ilt%e
)EM Plage 7ui $ontient les $%it0%es "e +ilt%e
o;euille = T(is&omponentgetS(eets()get,-*n"e4(/)
o&%itPlage = o;euilleget&ell)ange,-Name('A123;1C')
*iltres 1D
)EM :ous pou8eB galement obteni% la plage $ontenant les $%it0%es
)EM "e +ilt%e # pa%ti% "'une plage nomme
)EM oPlages = T(is&omponentName")anges
)EM oPlage = oPlagesget,-Name('&%ite%esF/')
)EM o&%itPlage = oPlageget)e+e%%e"&ells()
)EM Donnes 7ue 8ous 8ouleB +ilt%e%
o;euille = T(is&omponentgetS(eets()get,-*n"e4(/)
oDonnPlage = o;euilleget&ell)ange,-Name('A13;1<')
o;iltDes$ = o&%itPlage$%eate;ilte%Des$%ipto%,-Obje$t(oDonnPlage)
oDonnPlage+ilte%(o;iltDes$)
En" Sub
?odi#ie! les proprits du descripteur de #iltre pour modi#ier le comportement du #iltre (oir -ableau
+).
.aleau 3. 6roprits du filtre spcial
Proprit ommentaire
Contains5eader 2oolen (rai ou #au@) qui indique si la premiAre ligne (ou colonne)
contient des en-tBtes qui ne doient pas Btre #iltrs.
Copy<utput3ata 2oolen qui indique si les donnes #iltres doient Btre copies . un
autre endroit du document.
LsCase7ensitie 2oolen qui indique si la casse des lettres doit Btre prise en compte lors
de l/application des critAres de #iltre.
<rientation Lndique si les colonnes (com.sun.star.table.-able<rientation.C<'%?$7)
ou les lignes (com.sun.star.table.-able<rientation.9<67) sont #iltres.
<utput&osition 7i Copy<utput3ata est rai* indique l/adresse de la cellule oO les
donnes #iltres doient Btre copies.
7ae<utput&osition 2oolen qui indique si l/emplacement <utput&osition est enregistr pour
des appels ultrieurs.
71ip3uplicates 2oolen qui indique si les aleurs en double sont enlees du rsultat.
%se9egularH@pression 2oolen qui indique que les chaKnes de #iltre sont interprtes comme
des e@pressions rguliAres.
'e #iltre cr dans le 'isting N laisse les donnes #iltres . leur emplacement initial. ?odi#ie! la
proprit <utput&osition pour indiquer un emplacement de destination di##rent (oir 'isting V). 'e
descripteur de #iltre doit Btre modi#i aant l/application du #iltre.
/isting :. Copier le rsultat du filtre 0 un autre emplacement.
)EM &opie% les "onnes +ilt%es # un aut%e empla$ement
o;iltDes$&op-OutputData = T%ue
)EM &%e% une &ellA""%ess et la +i4e% "ans ;euille1=
)EM &olonne ,= Ligne 9
Dim 4 As Ne. $omsunsta%table&ellA""%ess
4S(eet = 1
4&olumn = 1
4)o. = 2
o;iltDes$OutputPosition = 4
17 Calc en tant que Base de Donnes Simplifie
Manipuler des donnes filtres
'es donnes #iltres copies . un autre emplacement peuent Btre slectionnes* modi#ies et
supprimes . olont. 'es donnes qui ne sont pas copies ncessitent toute#ois une attention
spciale* parce que les lignes qui ne correspondent pas au@ critAres de #iltre sont simplement
masques. 'ibre<##ice se comporte di##remment selon la #aFon dont les cellules ont t
masques et selon l/opration e##ectue.
'es cellules peuent aoir t masques par un regroupement* un #iltre de donnes ou par la
commande ?asquer. 'orsque les donnes sont dplaces par un glisser-dposer ou par un
copier-coller* toutes les cellules sont dplaces* y compris les cellules masques. Cependant* lors
de la copie des donnes* les donnes #iltres ne comprennent que les cellules isibles* alors que
les donnes caches par un regroupement ou la commande ?asquer sont galement copies.
&onctions de Calc similaires $ des fonctions de base de
donnes
2ien que chaque #onction de Calc puisse Btre utilise pour manipuler des bases de donnes* les
#onctions du -ableau > sont celles le plus souent utilises dans ce but. Certains noms de #onction
ne di##Arent que par leur derniAre lettre : ?<8H$$H et ?<8H$$H, par e@emple. 'es #onctions
qui ne se terminent pas par la lettre , ne prennent en compte que les aleurs numriques et les
cellules qui contiennent du te@te ou qui sont ides sont ignores. 'es #onctions correspondantes
qui se terminent par la lettre , considArent les aleurs te@te comme un nombre de aleur !ro T les
cellules ides sont tou;ours ignores.
.aleau 4. *onctions frquemment utilises en tant que fonctions de ase de donnes
!onction Description
3HC,'H9 9enoie la aleur d/une cellule dcale d/un certain nombre de lignes et de
colonnes . partir d/un point de r#rence.
HC,9-8&H Hstime l/cart-type . partir d/un chantillon.
HC,9-8&H, Hstime l/cart-type . partir d/un chantillon. 'es te@tes ont une aleur 0.
HC,9-8&H& Calcule l/cart-type . partir de la population entiAre.
HE%LV 9enoie la position relatie d/un lment dans une matrice* correspondant . une
aleur spci#ie.
L$3HW 9enoie le contenu d/une cellule* spci#ie par le numro de la ligne et de la
colonne ou par un inde@ de plage #acultati#.
L$3L9HC- 9enoie la r#rence spci#ie par une chaKne de te@te.
?,W 9enoie la aleur numrique ma@imum dans une liste d/arguments.
?,W, 9enoie la aleur numrique ma@imum dans une liste d/arguments. 'es te@tes
ont une aleur 0.
?H3L,$H 9enoie la mdiane d/un ensemble de nombres.
?L$ 9enoie la aleur numrique minimum dans une liste d/arguments.
?L$, 9enoie la aleur numrique minimum dans une liste d/arguments. 'es te@tes
ont une aleur 0.
?<3H 9enoie la aleur la plus #rquente dans un ensemble de donnes. 7/il y a
plusieurs aleurs aec la mBme #rquence* renoie la plus petite de ces aleurs.
*onctions de Calc similaires 0 des fonctions de ase de donnes 1:
!onction Description
%ne erreur se produit si aucune aleur n/apparaKt deu@ #ois ou plus.
?<8H$$H 9enoie la moyenne. Lgnore les cellules ides et celles qui contiennent du te@te.
?<8H$$H, 9enoie la moyenne. 'es te@tes ont une aleur 0. Lgnore les cellules ides.
$2 Compte le nombre de aleurs numriques. Lgnore les aleurs te@te.
$2V,' Compte le nombre de aleurs. Lgnore les cellules ides.
$2.7L 9enoie le nombre de cellules qui correspondent au critAre de recherche.
$2.VL3H 9enoie le nombre de cellules ides.
&9<3%L- 9enoie le produit des cellules.
9HC5H9C5H 9enoie le contenu d/une cellule parmi une plage d/une colonne seule* d/une
ligne seule ou d/une matrice.
9HC5H9C5H5 9echerche une aleur particuliAre parmi les colonnes de la premiAre ligne d/une
matrice. 9enoie la aleur d/une autre ligne dans cette colonne.
9HC5H9C5HV 9echerche une aleur particuliAre parmi les lignes de la premiAre colonne d/une
matrice. 9enoie la aleur d/une autre colonne dans cette ligne.
7<??H 9enoie la somme.
7<??H.7L Calcule la somme des cellules qui correspondent au critAre de recherche.
7<%7.-<-,' Calcule un sous-total selon la #onction spci#ie.
V,9 Hstime la ariance . partir d/un chantillon.
V,9, Hstime la ariance . partir d/un chantillon. 'es te@tes ont une aleur 0.
V,9.& Calcule la ariance . partir de la population entiAre.
V,9.&, Calcule la ariance . partir de la population entiAre. 'es te@tes ont une aleur 0.
'a plupart des #onctions du -ableau > ne ncessitent pas d/e@plications* soit parce qu/elles sont
#acilement comprhensibles (7<??H par e@emple)* soit parce qu/elles correspondent . une
notion que ous dee! connaKtre aant de l/utiliser (HC,9-8&H par e@emple). Cependant*
certaines #onctions sont peu utilises parce qu/elles ne sont pas bien comprises.
Comptage et somme selon une condition de recherche * N+,'" et
'OMM-,'"
'es #onctions $2.7L et 7<??H.7L calculent leur aleur selon un critAre de recherche. Ce critAre
de recherche peut Btre un nombre* une e@pression* une chaKne de te@te ou mBme une e@pression
rguliAre (si Outils > Options > LibreOffice Calc > Calcul option #utoriser les caract!res
gnri%ues dans les formules est coche). Ll peut se trouer dans une cellule r#rence ou Btre
inclus directement dans l/appel de la #onction.
'a #onction $2.7L compte le nombre de cellules d/une plage qui correspondent au critAre de
recherche. 'e premier argument spci#ie la plage et le second le critAre de recherche. 'e -ableau
= illustre di##rents critAres de recherche en utilisant la #onction $2.7L appliqu au@ donnes de la
Digure 1.
'es deu@ premiers arguments de 7<??H.7L ont le mBme but que ceu@ de $2.7L* la plage
contenant les cellules . e@plorer et le critAre de recherche. 'e troisiAme et dernier argument
1" Calc en tant que Base de Donnes Simplifie
spci#ie la plage . sommer. &our chaque cellule de la plage e@plore qui correspond au critAre de
recherche* la aleur des cellules de la plage de somme est a;oute dans le rsultat #inal.
.aleau +. ;8emples de critEres de recherche pour les fonctions 2B.S3 et S$,,;.S3
"#pe de
crit$re
!onction %sultat Description
$ombre X$2.7L(21:C1STV=) + 9echerche la aleur
numrique V=.
-e@te X$2.7L(21:C1STYV=Y) + 9echerche la aleur
numrique ou te@te V=.
H@pression X$2.7L(21:C1STYZV=Y) S 9echerche les aleurs
numriques suprieures . V=.
H@pression X$2.7L(21:C1ST2[>=P=) + 9echerche la aleur
numrique V=.
H@pression
rguliAre
X$2.7L(21:C1STYV.[Y) 12 9echerche les nombres ou
te@tes commenFant par V.
9#rence
de cellule
X$2.7L(21:C1ST2+) + 9echerche les cellules selon la
aleur et le type de la cellule
2+.
H@pression
rguliAre
X7<??H.7L(,1:,1STYC.[YT21:21S) 1>0 7omme la colonne 2 pour les
noms de la colonne , qui
commencent par la lettre C.
"gnorer les cellules filtres avec 'O.',TOT#L
'a #onction 7<%7.-<-,' applique une #onction d/agrgation (oir -ableau S) . une plage de
donnes* mais ignore les cellules masques par un #iltre et celles qui contiennent d;. un
7<%7.-<-,'. &ar e@emple* =SOISTOTAL(1=',13,1<') compte le nombre de cellules de
22:21S qui ne sont pas masques par un #iltre.
.aleau 9. 3nde8 des fonctions pour la fonction S$<S..$.5/
&ndex de fonction !onction
1 ?<8H$$H
2 $2
+ $2V,'
> ?,W
= ?L$
S &9<3%L-
U HC,9-8&H
N HC,9-8&H&
V 7<??H
10 V,9
11 V,9&
*onctions de Calc similaires 0 des fonctions de ase de donnes 11
#stuce
$/oublie! pas que la #onction 7<%7.-<-,' ignore les cellules qui contiennent une
#onction 7<%7.-<-,'. Vous poue! donc utilise! un sous-total sur la plage
entiAre sans ous soucier des autres sous-totau@.
.tiliser des formules pour trouver des donnes
Calc dispose de plusieurs mthodes pour trouer des donnes dans une #euille. &ar e@emple*
/dition > Rechercher 0 remplacer dplace le #ocus selon une recherche simple ou aance.
%tilise! Donnes > &iltre pour limiter ce qui est a##ich plutGt que de dplacer simplement le
#ocus. Calc dispose galement de #onctions de recherche . utiliser dans les #ormules* par e@emple
une #ormule pour rechercher la note globale d/un tudiant selon ses aluations.
%ec'erc'er un (loc de donnes en utilisant %E)E%)EV
%tilise! 9HC5H9C5HV pour e##ectuer une recherche dans la premiAre colonne (les colonnes sont
erticales) d/un bloc de donnes et renoyer la aleur d/une autre colonne dans la mBme ligne. &ar
e@emple* recherche! dans la premiAre colonne le nom Y&aulY et renoye! ensuite la aleur de la
cellule situe deu@ colonnes . droite. 9HC5H9C5HV supporte deu@ #ormats :
)E&5E)&5E:(8aleu%@$(e%$(eO plage@%e$(e%$(eO in"e4@$olonne)
)E&5E)&5E:(8aleu%@$(e%$(eO plage@%e$(e%$(eO in"e4@$olonneO o%"%e@t%i)
'e premier argument* aleurMcherche* identi#ie la aleur . trouer. 'a aleur cherche peut Btre
un te@te* un nombre ou une e@pression rguliAre. &ar e@emple* "Paul" a rechercher le te@te
&aul* 4 a rechercher le nombre >* et "P.*" est l/e@pression rguliAre pour trouer ce qui
commence par la lettre &.
'e deu@iAme argument* plageMrecherche* identi#ie les cellules oO e##ectuer la recherche T seule la
premiAre colonne sera utilise pour cette recherche. &ar e@emple* B3:G10 e##ectue une recherche
dans la #euille qui contient la #onction 9HC5H9C5HV et Feuille2.B3:G10 e##ectue une
recherche dans la plage 2+:G10 de la #euille Deuille2.
'/argument inde@Mcolonne identi#ie la colonne . renoyer T une aleur de 1 renoie la premiAre
colonne de la plage. 'a #ormule =)E&5E)&5E:('Paul' O &13>P O 1) recherche la premiAre
ligne dans C1:GV dont la premiAre colonne contient le te@te Paul* et renoie la aleur de la
premiAre colonne. 'a premiAre colonne est la colonne de recherche* et le te@te Paul est donc
renoy. 7i l/inde@ de colonne est 2* la aleur de la cellule . la droite de &aul est renoye :
colonne 3.
'e dernier argument* ordreMtri* est #acultati#. 'a aleur par d#aut est 1 ou V9,L* ce qui indique que
la premiAre colonne est trie dans l/ordre croissant. %ne aleur de 0 ou D,%W indique que les
donnes ne sont pas tries. %ne liste non trie prooque une recherche squentielle qui ri#ie
chaque cellule. 7i aucune correspondance n/est troue* l/erreur \$"3 est renoye.
7i ous n/employe! pas le dernier argument* ou si ous utilise! la aleur par d#aut 1 ou V9,L* le
programme suppose que les donnes de la premiAre colonne sont tries par ordre croissant. 7i
une correspondance e@acte e@iste* la aleur renoye est la mBme que pour une liste non trie*
mais le processus est plus rapide. 7/il n/y a pas de correspondance* la plus grande aleur
in#rieure ou gale . la aleur recherche est renoye. &ar e@emple* la recherche de U dans (+*
=* 10) renoie = parce que U se troue entre = et 10. 'a recherche de 2U renoie 10 et la
recherche de 2 renoie \$"3 parce que il n/y a pas de correspondance* ni de aleur in#rieure . 2.
7i les donnes de la premiAre colonne ne sont pas tries par ordre croissant* alors que le
programme s/attend . ce qu/elles le soient* le rsultat peut Btre erron.
11 Calc en tant que Base de Donnes Simplifie
%tilise! 9HC5H9C5HV lorsque :
'es donnes sont disposes en lignes et ous oule! renoyer une donne de la mBme
ligne. &ar e@emple* les noms des tudiants et* . leur droite* leurs rsultats.
Vous oule! #aire une recherche dans la premiAre colonne d/une plage de donnes.
%ec'erc'er un (loc de donnes en utilisant %E)E%)E)
%tilise! 9HC5H9C5H5 pour e##ectuer une recherche dans la premiAre ligne (les lignes sont
hori!ontales) d/un bloc de donnes et renoyer la aleur d/une autre ligne dans la mBme colonne.
9HC5H9C5H5 dispose des mBmes #ormats et arguments que 9HC5H9C5HV T
)E&5E)&5E5(8aleu%@$(e%$(eO plage@%e$(e%$(eO in"e4@ligne)
)E&5E)&5E5(8aleu%@$(e%$(eO plage@%e$(e%$(eO in"e4@ligneO o%"%e@t%i)
%tilise! 9HC5H9C5H5 lorsque :
'es donnes sont disposes en colonnes et ous oule! renoyer une donne de la mBme
colonne. &ar e@emple* les noms des tudiants et* en dessous* leurs rsultats.
Vous oule! #aire une recherche dans la premiAre ligne d/une plage de donnes.
%ec'erc'er une li*ne ou une colonne avec %E)E%)E
9HC5H9C5H est identique . 9HC5H9C5H5 et 9HC5H9C5HV. 'a plage de recherche pour la
#onction 9HC5H9C5H est une ligne ou une colonne indiiduelle et trie. 9HC5H9C5H supporte
deu@ #ormats :
)E&5E)&5E(8aleu%@$(e%$(eO plage@%e$(e%$(e)
)E&5E)&5E(8aleu%@$(e%$(eO plage@%e$(e%$(eO plage@%en8oi)
'a aleur recherche est la mBme que pour 9HC5H9C5H5 ou 9HC5H9C5HV. 'a plage de
recherche* cependant* doit tenir sur une seule ligne ou une seule colonne T par e@emple* ,U:,12
(aleurs de la colonne ,) ou C=:E= (aleurs de la ligne =). 7i plageMrenoi est omis* la aleur de
correspondance est renoye. %tiliser 9HC5H9C5H sans plage de renoi est identique . utiliser
9HC5H9C5H5 ou 9HC5H9C5HV aec un inde@ de 1.
'a plage de renoi doit tenir sur une seule ligne ou colonne et contenir le mBme nombre
d/lments que la plage de recherche. 7i la aleur de recherche est troue dans la quatriAme
cellule de la plage de recherche* alors la aleur de la quatriAme cellule de la plage de renoi est
renoye. 'a plage de renoi peut aoir une orientation di##rente de la plage de recherche. Hn
d/autres termes* la plage de recherche peut Btre en ligne et la plage de renoi peut Btre en
colonne.
%tilise! 9HC5H9C5H lorsque :
'es donnes recherches sont tries par ordre croissant.
'es donnes recherches ne se trouent pas dans la mBme ligne* la mBme colonne ou la
mBme orientation que les donnes renoyes.
*onctions de Calc similaires 0 des fonctions de ase de donnes 13
+tiliser E,+&V pour trouver l-index d-une valeur dans une pla*e
%tilise! HE%LV pour e##ectuer une recherche dans une seule ligne ou colonne et renoyer la
position qui correspond . la aleur recherche. HE%LV supporte les #ormats suiants :
EHI*:(8aleu%@$(e%$(eO plage@%e$(e%$(e)
EHI*:(8aleu%@$(e%$(eO plage@%e$(e%$(eO t-pe@%e$(e%$(e)
'a aleur de recherche et la plage de recherche sont les mBmes que pour 9HC5H9C5H. 'e
dernier argument* type de recherche* contrGle la #aFon dont la recherche est e##ectue.
'e type 1 (type par d#aut) suppose que les donnes sont tries dans l/ordre croissant.
'/inde@ de la derniAre aleur in#rieure ou gale au critAre de recherche est renoye.
'e type -1 suppose que les donnes sont tries dans l/ordre dcroissant. '/inde@ de la
derniAre aleur suprieure ou gale au critAre de recherche est renoye.
'e type 0 peut #onctionner aec des donnes non tries. '/inde@ de la premiAre aleur
gale au critAre de recherche est renoye. 3es e@pressions rguliAres peuent Btre
employes.
%tilise! HE%LV lorsque :
Vous ae! besoin d/un inde@ dans une plage plutGt qu/une aleur.
'es donnes sont tries par ordre dcroissant et la plage de donnes est grande : la
#onction est alors plus rapide.
Exemples
3ans l/e@emple de la Digure 1* les donnes de chaque tudiant sont stoc1es dans une seule
ligne. Vous oule! crire une #ormule pour obtenir la note moyenne de &aul. 'e problAme peut se
#ormuler ainsi : chercher &aul dans la colonne , de la plage ,1:G1S et renoyer la aleur de la
colonne D (D est la si@iAme colonne). 'a solution la plus simple est
=)E&5E)&5E:('Paul'OA13>1<O<). Vous poue! galement #aire
=)E&5E)&5E('Paul'OA13>1<O;13;1<).
Ll est habituel que la premiAre ligne contienne les en-tBtes de colonne. Comment #aire si l/en-tBte
de colonne ?oyenne est connu* mais pas la colonne dans laquelle il se situe ] 9echerche! la
colonne qui contient ?oyenne plutGt que de coder en dur la aleur S. Vous poue! modi#ier la
#ormule et utiliser HE%LV pour trouer la colonne
=)E&5E)&5E:('Paul'OA13>1<OEHI*:('Mo-enne'OA13>1O/)). $ote! que les en-tBtes ne
sont pas tris.
&our terminer* ous oule! crire une #ormule pour attribuer une note base sur la moyenne des
rsultats d/un tudiant. 7uppose! qu/une moyenne in#rieure . =1 est un D* in#rieure . S1 est un
H* in#rieure . U1 est un 3* in#rieure . N1 est un C* in#rieure . V1 est un 2* et de V1 . 100 est un
,. Vous poue! stoc1er le tableau de la Digure 12 dans Deuille2.
*igure 11 : 5ssociation ,o!enne G 2ote
14 Calc en tant que Base de Donnes Simplifie
'a #ormule =)E&5E)&5E:(F2O!;euille1!A!13!,!QO1) est une bonne solution. 3es signes
^ sont utiliss pour que la #ormule puisse Btre copie et colle . di##rents endroits et qu/elle #asse
r#rence au@ mBmes aleurs de la Digure 12.
Retourner une cha1ne pour l2adresse de la cellule avec #DR-''-
%tilise! ,39H77H pour renoyer une reprsentation de l/adresse d/une cellule sous #orme de
te@te* selon la ligne* la colonne et la #euille. ,39H77H est #rquemment utilise aec HE%LV.
,39H77H supporte les #ormats suiants :
AD)ESSE(ligneO $olonne)
AD)ESSE(ligneO $olonneO abs)
AD)ESSE(ligneO $olonneO absO +euille)
'a ligne et la colonne sont des aleurs entiAres* oO ,39H77H(1T1) renoie ^,^1. '/argument abs
spci#ie quelle portion est considre comme absolue et quelle portion est considre comme
relatie (oir -ableau U). %ne adresse absolue est spci#ie en utilisant le caractAre ^. 'a #euille ne
#ait partie de l/adresse que si l/argument #euille est utilis T cet argument est une chaKne de
caractAres. 'a #ormule =AD)ESSE(EHI*:('Paul'OA13A1<O/)O1) aec les donnes de la
Digure 1 a renoyer ^2^11.
.aleau D. ?aleurs possiles de lAargument as de la fonction 5D=;SS;
Valeur Description
1 %tilise l/adressage absolu. C/est la aleur par d#aut si l/argument est absent ou a une
aleur incorrecte. AD)ESSE(1OCO1) renoie ^H^2.
2 %tilise une r#rence absolue pour la ligne et une r#rence relatie pour la colonne.
AD)ESSE(1OCO1) renoie H^2.
+ %tilise une r#rence relatie pour la ligne et une r#rence absolue pour la colonne.
AD)ESSE(1OCO2) renoie ^H2.
> %tilise l/adressage relati#. AD)ESSE(1OCO9) renoie H2.
#stuce
Calc comporte de nombreuses #onctions qui ne sont pas deloppes ici. Hn
particulier* les #onctions 'LG$H* C<'<$$H* 'LG$H7 et C<'<$$H7 ne sont pas
abordes et peuent intresser les utilisateurs.
Convertir une cha1ne en cellule ou en plage avec "ND"R-CT
%tilise! L$3L9HC- pour conertir une reprsentation d/une adresse de cellule ou de plage sous
#orme de te@te en une r#rence . cette cellule ou . cette plage. 'e -ableau N contient des
e@emples . partir des donnes de la Digure 1.
.aleau 7. ;8emples utilisant 32D3=;C.
Exemple ommentaire
L$3L9HC-(Y,2Y) 9enoie le contenu de la cellule ,2* c/est-.-dire Amandine.
L$3L9HC-(51) 7i la cellule 51 contient le te@te ,2* renoie le contenu de la
cellule ,2* c/est-.-dire Amandine.
7<??H(L$3L9HC-(Y22:2SY)) 9enoie la somme de la plage 22:2S* c/est-.-dire >1U.
L$3L9HC-(,39H77H(2T1)) 9enoie le contenu de la cellule ^,^2* c/est-.-dire Amandine.
*onctions de Calc similaires 0 des fonctions de ase de donnes 1+
Renvoyer une cellule ou une plage par rapport $ une autre avec
D-C#L-R
%tilise! 3HC,'H9 pour renoyer une cellule ou une plage dcale d/un nombre dtermin de
lignes ou de colonnes par rapport . un point de r#rence donn. 'e premier argument spci#ie le
point de r#rence. 'es deu@iAme et troisiAme arguments indiquent le nombre de lignes et de
colonnes . dplacer depuis le point de r#rence T en d/autres termes* oO la nouelle plage
commence. 'a #onction 3HC,'H9 supporte les #ormats suiants :
DE&ALE)(%+%en$eO lignesO $olonnes)
DE&ALE)(%+%en$eO lignesO $olonnesO (auteu%)
DE&ALE)(%+%en$eO lignesO $olonnesO (auteu%O la%geu%)
7i la hauteur ou la largeur sont omises* elles sont par d#aut de 1. 7i la largeur ou la hauteur sont
indiques* la #onction 3HC,'H9 renoie une plage plutGt qu/une r#rence de cellule.
Voici comment obtenir les rsultats des tests de l/tudiant &aul aec la #onction 3HC,'H9* . partir
des donnes de la Digure 1 :
=SOMME(DE&ALE)(*ND*)E&T(AD)ESSE(EHI*:('Paul'OA13A1<O /)O 9))O /O /O 1O
1))
Cette #ormule est comple@e et di##icile . comprendre. Voici sa dcomposition :
!onction Description
HE%LV(Y&aulYT,1:,1ST 0) 9enoie 12 parce que &aul est la 12Ame aleur de la colonne ,.
,39H77H(12T >) 9enoie ^3^12.
L$3L9HC-(Y^3^12Y) Conertit ^3^12 en une r#rence absolue . la cellule 312.
3HC,'H9(^3^12T 0T 0T 1T 2) 9enoie la plage 312:H12.
7<??H(312:H12) 9enoie la somme des rsultats des tests de &aul.
2ien que cette #ormule #onctionne comme attendu* elle peut #acilement se drgler et de maniAre
inattendue. 7uppose! que* par e@emple* ous modi#iie! la plage en ,2:,1S. HE%LV renoie un
inde@ dans la plage #ournie* et EHI*:('Paul'OA13A1<O /) renoie 11 . la place de 12.
AD)ESSE(11O 9) renoie ^3^11 . la place ^3^12 et les rsultats d/<liier sont renoys . la
place des rsultats de &aul. 'a #ormule suiante utilise une mthode lgArement di##rente pour
obtenir les rsultats des tests de l/tudiant &aul :
=SOMME(DE&ALE)(A1O EHI*:('Paul'O A13A1<O /)E1O 2O 1O 1))
Vous poue! remplacer ,1 par ,2 au@ deu@ endroits de la #ormule oO ,1 est employ* et ous
pourre! constater que ous obtene! tou;ours les rsultats de &aul. Voici la dcomposition de la
#ormule :
!onction Description
HE%LV(Y&aulYT,1:,1ST 0)-1 9enoie 11 parce que &aul est la 12Ame aleur de la colonne ,.
3HC,'H9(,1T 11T +T 1T 2) 9enoie la plage 312:H12.
7<??H(312:H12) 9enoie la somme des rsultats des tests de &aul.
19 Calc en tant que Base de Donnes Simplifie
#stuces
'e premier argument de 3HC,'H9 peut Btre une plage. Vous poue! donc utiliser
un nom de plage d#ini.
'es e@emples ci-dessus permettent d/illustrer les possibilits des #onctions HE%LV
et 3HC,'H9 T en l/occurrence le rsultat peut Btre obtenu plus simplement par une
#ormule du type =SOMMEP)OD((A13A1<='Paul')M(D13E1<))
Renvoyer une cellule $ l2intrieur d2une plage avec "ND-3
%tilise! L$3HW pour renoyer des cellules spci#ies par un numro de ligne et de colonne. 'es
numros de ligne et de colonne sont relati#s par rapport au coin suprieur gauche de la plage
spci#ie. &ar e@emple* =*NDER(,13D2 O 1 O 1) renoie la cellule C2. Voici les di##rents
#ormats possibles que supporte la #onction L$3HW :
!ormat Description
L$3HW(r#rence) 9enoie la plage entiAre.
L$3HW(r#rence T ligne) 9enoie la ligne indique dans la plage.
L$3HW(r#rence T ligne T colonne) 9enoie la cellule correspondant au numro de ligne
et de colonne. 'a ligne 1 et la colonne 1
correspondent au coin suprieur gauche de la plage.
L$3HW(r#rence T ligne T colonne T plage) %ne r#rence peut contenir plusieurs plages. 'e
dernier argument prcise quelle plage utiliser.
'a #onction L$3HW peut renoyer une plage* une ligne* une colonne ou une simple cellule. 7a
capacit d/inde@ . partir du dbut d/une plage r#rence permet certaines utilisations
intressantes. Voici comment obtenir les rsultats des tests de l/tudiant &aul aec la #onction
L$3HW* . partir des donnes de la Digure 1 :
=SOMME(DE&ALE)(*NDER(A13>1<O EHI*:('Paul'O A13A1<O /))O /O 2O 1O 1))
Voici la dcomposition de la #ormule :
!onction Description
HE%LV(Y&aulYT,1:,1ST 0) 9enoie 12 parce que &aul est la 12Ame aleur de la colonne ,.
L$3HW(,2:G1ST 12) 9enoie ,12:G12* la ligne qui contient les rsultats de &aul.
3HC,'H9(,12:G12T 0T +T 1T 2) 9enoie la plage 312:H12.
7<??H(312:H12) 9enoie la somme des rsultats des tests de &aul.
#stuce
%ne plage simple contient une !one rectangulaire et contiguI de cellules. Ll est
possible de d#inir une plage multiple qui contient plusieurs plages simples. 7i la
r#rence est une plage multiple* ous dee! entourer cette r#rence ou son nom
aec des parenthAses.
3ans la cas d/une plage multiple* l/argument plage d#init quelle plage simple utiliser (oir -ableau
V).
*onctions de Calc similaires 0 des fonctions de ase de donnes 1D
.aleau :. <tiliser 32D;C avec une plage multiple
!onction %etour
XL$3HW(22:G2T 1T 2) V+
XL$3HW(2=:G=T 1T 2) S=
XL$3HW((22:G2T2=:G=)T 1T 2) V+
XL$3HW((22:G2T2=:G=)T 1T 2T 1) V+
XL$3HW((22:G2T2=:G=)T 1T 2T 2) S=
&onctions particuli!res au( plages de donnes
2ien que chaque #onction de Calc puisse Btre utilise pour manipuler des bases de donnes* les
#onctions du -ableau 10 sont spcialement conFues pour Btre utilises aec des bases de
donnes. 'es descriptions de ce tableau utilisent les mots suiants de maniAre interchangeable :
ligne et enregistrement* cellule et champ* base de donnes et toutes les lignes.
.aleau 1". *onctions ase de donnes de Calc
!onction Description
23HC,9-8&H Calcule l/cart-type en utilisant les champs qui correspondent au critAre de
recherche. 'es champs sont considrs comme un chantillon.
23HC,9-8&H Calcule l/cart-type en utilisant les champs qui correspondent au critAre de
recherche. 'es champs sont considrs comme la population entiAre.
23'L9H 9enoie le contenu d/un champ qui correspond au critAre de recherche.
23?,W 9enoie le contenu ma@imum d/un champ qui correspond au critAre de
recherche.
23?L$ 9enoie le contenu minimum d/un champ qui correspond au critAre de
recherche.
23?<8H$$H 9enoie la moyenne de tous les champs qui correspondent au critAre de
recherche.
23$2 Compte le nombre d/enregistrements qui correspondent au critAre de
recherche.
23$2V,' Compte le nombre d/enregistrements non ides qui correspondent au
critAre de recherche.
23&9<3%L- 9enoie le produit des champs qui correspondent au critAre de recherche.
237<??H 9enoie la somme de tous les champs qui correspondent au critAre de
recherche.
23V,9 Calcule la ariance en utilisant les champs qui correspondent au critAre de
recherche. 'es champs sont considrs comme un chantillon.
23V,9& Calcule la ariance en utilisant les champs qui correspondent au critAre de
recherche. 'es champs sont considrs comme la population entiAre.
'e #ormat des #onctions base de donnes est identique :
,DN,(base@"e@"onnes O $(amp O $%it0%e@"e@%e$(e%$(e)
17 Calc en tant que Base de Donnes Simplifie
'/argument baseMdeMdonnes est la plage de cellules qui d#init la base de donnes. Cette plage
derait contenir les tiquettes de colonnes. '/e@emple suiant est bas sur le #ait que les donnes
de la Digure 1 sont places dans Deuille1 et le critAre de recherche dans Deuille+.
=,DN,(A13>1<O 'Test 1'O ;euille2A13;2)
'/argument champ indique la colonne sur laquelle la #onction a oprer aprAs l/application du
critAre de recherche et la slection des lignes de donnes. Ll peut Btre constitu du nom de l/en-
tBte de colonne ou d/un entier. 3ans le cas d/un entier* 0 indique la plage de donnes en entier* 1
la premiAre colonne* 2 la deu@iAme colonne* et ainsi de suite. 'es deu@ #ormules ci-dessous sont
identiques :
=,DMOGENNE(A13>1<O 'Test 1'O ;euille2A13;2)
=,DMOGENNE(A13>1<O CO ;euille2A13;2)
'e dernier argument est la plage de cellules qui contient le critAre de recherche. Ce critAre
#onctionne de maniAre identique . un #iltre spcial T les critAres sur la mBme ligne sont lis par H-
et ceu@ sur des lignes di##rentes sont lis par <%.
Conclusion
Calc dispose de #onctionnalits de base de donnes qui peuent su##ire . certains utilisateurs. 3es
#onctions de base de donnes peu utilises* comme 3HC,'H9* HE%LV et L$3HW* alent la peine
d/Btre appro#ondies et peuent ous #aire gagner du temps sur le long terme. Cependant* dAs lors
qu/une base de donnes deient comple@e* #ait interenir des relations entre plusieurs tables* ou
est largement utilise dans une organisation* il est pr#rable de se tourner ers 'ibre<##ice 2ase.
Conclusion 1:

You might also like