summaryrefslogtreecommitdiff
path: root/doc/translations/fr/misc/ses-fr.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/translations/fr/misc/ses-fr.texi')
-rw-r--r--doc/translations/fr/misc/ses-fr.texi1631
1 files changed, 1631 insertions, 0 deletions
diff --git a/doc/translations/fr/misc/ses-fr.texi b/doc/translations/fr/misc/ses-fr.texi
new file mode 100644
index 00000000000..e1b9cac5fc3
--- /dev/null
+++ b/doc/translations/fr/misc/ses-fr.texi
@@ -0,0 +1,1631 @@
+\input texinfo @c -*- mode: texinfo; coding: utf-8; -*-
+@c %**start of header
+@setfilename ../../../../info/ses-fr.info
+@documentlanguage fr
+@documentencoding UTF-8
+@settitle @acronym{SES}: Le tableur simple d’Emacs
+@include docstyle.texi
+@setchapternewpage off
+@syncodeindex fn cp
+@syncodeindex vr cp
+@syncodeindex ky cp
+@c %**end of header
+
+@copying
+Ce fichier documente @acronym{SES} : le tableur simple d’Emacs (Simple
+Emacs Spreadsheet).
+
+Copyright @copyright{} 2002--2024 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below. A copy of the license
+is included in the section entitled ``GNU Free Documentation License.''
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual.''
+@end quotation
+@end copying
+
+@dircategory Emacs misc features
+@direntry
+* @acronym{SES}-fr: (ses-fr). Le tableur simple d’Emacs.
+@end direntry
+
+@finalout
+
+@titlepage
+@title @acronym{SES}
+@subtitle Le tableur simple d’Emacs
+@author Jonathan A. Yavner
+@author @email{jyavner@@member.fsf.org}
+
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@c ===================================================================
+
+@ifnottex
+@node Top
+@comment node-name, next, previous, up
+@top @acronym{SES}: Simple Emacs Spreadsheet
+
+@display
+@acronym{SES} est mode majeur de GNU Emacs pour éditer des fichiers
+tableur, c.-à-d.@: des fichiers contenant une grille rectangulaire de
+cellules. Les valeurs des cellules sont spécifiées par des formules
+pouvant se référer aux valeurs d’autres cellules.
+@end display
+@end ifnottex
+
+Pour les rapports d’anomalie, utiliser @kbd{M-x report-emacs-bug}.
+
+@insertcopying
+
+@menu
+* Boniment: Sales Pitch. Pourquoi utiliser @acronym{SES}?
+* Tuto: Quick Tutorial. Une introduction sommaire
+* Les bases: The Basics. Les commandes de base du tableur
+* Fonctions avancées: Advanced Features. Vous voulez en savoir plus ?
+* Pour les gourous: For Gurus. Vous voulez en savoir @emph{encore plus} ?
+* Index: Index. Index des concepts, fonctions et variables
+* Remerciements: Acknowledgments. Remerciements
+* Licence GNU pour la documentation libre: GNU Free Documentation License. La licence de cette documentation.
+@end menu
+
+@c ===================================================================
+
+@node Sales Pitch
+@comment node-name, next, previous, up
+@chapter Boniment
+@cindex features
+
+@itemize --
+@item Créer et éditer des feuilles de calcul avec un minimum de tracas.
+@item Prise en charge complète du Défaire/Refaire/Sauvegarde auto.
+@item Protection contre les virus enfouis dans les feuilles de calcul.
+@item Les formules de cellule sont directement du code Emacs Lisp.
+@item Fonctions d’impression pour contrôler l’apparence des cellules.
+@item Raccourcis clavier intuitifs : C-o = insérer une ligne, M-o = insérer une colonne, etc.
+@item « Débordement » des valeurs de cellule longues dans les cellules vides suivantes.
+@item La ligne d’en-tête montre les lettres désignant les colonnes.
+@item Autocomplétion pour la saisie des symboles de cellules nommées lors de la saisie des formules.
+@item Couper, copier et coller peut transferer les formules et les fonctions d’impression.
+@item Import and export de valeurs séparées par des tabulations, ou de formules séparées par des tabulations.
+@item Format de fichier en texte, facile à bidouiller.
+@end itemize
+
+@c ===================================================================
+
+@node Quick Tutorial
+@chapter Tuto
+@cindex introduction
+@cindex tuto
+
+Si vous désirez être rapidement lancé et pensez que vous savez ce que
+vous attendez d’un tableur simple, alors ce chapitre peut être tout ce
+dont vous avez besoin.
+
+Premièrement, visitez un nouveau fichier avec pour extension de nom de
+fichier @file{.ses}. Emacs vous présente alors une feuille de calcul
+vide contenant une seule cellule.
+
+Commencez par saisir une ligne d’en-tête : @kbd{"Revenu@key{RET}}. Le
+guillemet double @code{"} indique que vous saisissez une cellule
+textuelle, il ne fait pas partie de la valeur de la cellule, et aucun
+guillemet de fermeture n’est nécessaire.
+
+Pour insérer votre première valeur de revenu, vous devez d’abord
+redimensionner la feuille. Appuyer sur la touche @key{TAB} pour
+ajouter une nouvelle cellule et revenez à elle en remontant.
+Saisissez un nombre, tel que @samp{2.23}. Puis continuer pour ajouter
+quelques valeurs supplémentaires de revenu, par ex. :
+
+@example
+@group
+A
+ Revenu
+ 2.23
+ 0.02
+ 15.76
+ -4.00
+@end group
+@end example
+
+Pour additionner les valeurs entre elles, saisissez une expression
+Lisp :
+
+@example
+(+ A2 A3 A4 A5)
+@end example
+
+Peut-être désirez vous ajouter une cellule à la droite de la cellule
+@samp{A4} pour expliquer pourquoi vous avez une valeur négative. En
+appuyant sur @kbd{TAB} dans cette cellule vous ajouter entièrement une
+nouvelle colonne @samp{B} où vous pourrez ajouter une telle note.
+
+La colonne est assez étroite par défaut, mais en appuyant sur @kbd{w}
+vous pouvez la redimensionner selon vos besoins. Faites la de 22
+caractères de large. Vous pouvez maintenant ajoutez des notes
+descriptives pour chacune des cases, par ex.@: :
+
+@example
+@group
+A B
+ Revenu
+ 2.23 Frais de consultation
+ 0.02 Opinion informée
+ 15.76 Stand limonade
+ -4 Prêt à Joseph
+ 14.01 Total
+@end group
+@end example
+
+Par défaut, l’impression des valeurs de cellule se fait alignée à
+droite, c’est la raison d’un tel alignement pour les notes dans la
+colonne @samp{B}. Pour changer cela, vous pouvez saisir une fonction
+d’impression pour la colonne entière, en utilisant par ex. @kbd{M-p
+("%s")}. Le fait que @code{"%s"} soit contenu dans une liste indique à
+@acronym{SES} que l’alignement est à faire à gauche. Vous pouvez
+l’emporter sur la fonction d’impression de colonne pour l’une
+quelconque de ses cellules en donnant une fonction d’impression par
+cellule avec @kbd{p}.
+
+Vous pouvez nommer une fonction d’impression, et utiliser le nom de la
+fonction à la place de sa définition, de sorte à faciliter la
+modification de l’impression de toutes les cellules utilisant cette
+fonction. Par exemple tapez @kbd{M-x
+ses-define-local-printer@key{ret}}, puis @kbd{note@key{ret}}, puis
+@kbd{("%s")} pour définir une fonction d’impression nommée @code{note}
+dont la définition est @code{("%s")}, puis sur la colonne @samp{B} tapez
+@kbd{M-p note@key{ret}}
+
+@example
+@group
+A B
+ Revenu
+ 2.23 Frais de consultation
+ 0.02 Opinion informée
+ 15.76 Stand limonade
+ -4 Prêt à Joseph
+ 14.01 Total
+@end group
+@end example
+
+Si maintenant vous redéfinissez @code{note} avec pour nouvelle
+définition @kbd{("*%s")} qui ajoute un astérisque @code{*} devant le
+texte, la zone d’impression est modifiée ainsi :
+@example
+@group
+A B
+ Revenu
+ 2.23 *Frais de consultation
+ 0.02 *Opinion informée
+ 15.76 *Stand limonade
+ -4 *Prêt à Joseph
+ 14.01 *Total
+@end group
+@end example
+
+Notez que la cellule @samp{B1} reste affichée vide et n’est pas
+affichée comme @samp{*}. C’est parce que la valeur de la cellule est
+@code{nil}, et que les fonctions d’impression définies à partir d’une
+chaîne de formatage comme @code{"%s"} dans @code{("%s")} impriment
+systématiquement @code{nil} comme une chaîne vide, et tentent
+d’imprimer toute valeur non-@code{nil} en utilisant la fonction
+standarde @code{format} avec la chaîne de formatage, et si cela
+échoue, utilisent la fonction de repli @code{ses-prin1} la place.
+
+Si maintenant Joseph rembourse son prêt, vous pourriez effacer cette
+case ; par ex.@: en positionnant le curseur sur la cellule A5 et en
+appuyant sur @kbd{C-d}. Si vous faites celle le total imprimé dans la
+cellule A6 affichera @samp{######}. La raison de cela est la valeur
+dans une cellule vide est typiquement @code{nil} et que l’opérateur
+@code{+} ordinaire échoue à gérer une telle valeur. Au lieu de vider
+la cellule, vous pourriez littéralement saisir @samp{0}, ou supprimer
+entièrement la ligne en utilisant @kbd{C-k}. Une alternative est
+d’utiliser la fonction spéciale @code{ses+} au lieu du @code{+}
+ordinaire :
+
+@example
+(ses+ A2 A3 A4 A5)
+@end example
+
+Pour rendre une formule robuste au changement de géométrie de la
+feuille, vous pouvez utiliser la macro @code{ses-range} pour faire
+référence à une plage de cellules par ses extrémités, par ex. :
+
+@example
+(apply 'ses+ (ses-range A2 A5))
+@end example
+
+(Le @code{apply} est nécessaire parce que @code{ses-range} produite
+une @emph{liste} de valeurs, ce qui ouvre des possibilités plus
+complexes).
+
+Alternativement vous pouvez utiliser le modificateur @code{!} de
+@code{ses-range} pour retirer les cellules vides de la liste renvoyée,
+ce qui permet d’utiliser @code{+} au lieu de @code{ses+}:
+
+@lisp
+(apply '+ (ses-range A2 A5 !))
+@end lisp
+
+@c ===================================================================
+
+@node The Basics
+@comment node-name, next, previous, up
+@chapter Les bases
+@cindex commandes de base
+@cindex base, commandes de
+@findex ses-jump
+@findex ses-mark-row
+@findex ses-mark-column
+@findex ses-mark-whole-buffer
+@findex set-mark-command
+@findex keyboard-quit
+
+Pour créer une nouveau tableur, visitez un fichier inexistant dont le
+nom se termine en @file{.ses}. Par exemple, @kbd{C-x C-f essai.ses
+@key{ret}}.
+
+
+Un @dfn{identificateur de cellule} est un symbole avec une lettre de
+colonne et un numéro de ligne. La cellule B7 est la 2e column de la
+7e ligne. Pour les feuilles très larges, il ya deux lettres de
+colonne : la cellule AB7 les la 28e colonne de la 7e ligne. Les
+feuilles encore plus larges ont AAA1, etc. On se déplace avec les
+commandes ordinaires de déplacement d’Emacs.
+
+@table @kbd
+@item j
+Déplace le point vers la cellule spécifiée par identificateur
+(@code{ses-jump}). À moins que la cellule ne soit une cellule
+renommée, l’identificateur est insensible à la casse. Un argument
+préfixe @math{n} déplace vers la cellule de coordonnées @math{(n\div
+R, n \% C)} pour une feuille de @math{R} ligne et @math{C} colonnes,
+et @samp{A1} étant aux coordonnées @math{(0,0)}. La façon dont
+l’identificateur ou l’argument préfixe de commande sont interprétés
+peut être personnalisée via les variables
+@code{ses-jump-cell-name-function} et @code{ses-jump-prefix-function}.
+@end table
+
+Le Point est toujours sur le bord de gauche d’une cellule, ou à la fin
+de ligne vide. Quand la marque est inactive, la cellule courante est
+soulignée. Quand la marque est active, la plage est le rectangle de
+cellules mis en vedette (@acronym{SES} utilise toujours le mode de
+marque transitoire). Faire glisser la souris de @samp{A1} à @samp{A3}
+crée la plage @samp{A1-A2}. Beaucoup de commandes @acronym{SES}
+opèrent seulement sur une seule cellule, et non sur une plage.
+
+@table @kbd
+@item C-@key{SPC}
+@itemx C-@@
+Règle la marque au point (@code{set-mark-command}).
+
+@item C-g
+Désactive la marque (@code{keyboard-quit}).
+
+@item M-h
+Met en vedette la ligne courante (@code{ses-mark-row}).
+
+@item S-M-h
+Met en vedette la colonne courante (@code{ses-mark-column}).
+
+@item C-x h
+Mettre en vedette toutes les cellules (@code{mark-whole-buffer}).
+@end table
+
+@menu
+* Formules: Formulas.
+* Redimensionner: Resizing.
+* Fonctions d’impression: Printer functions.
+* Effacer des cellules: Clearing cells.
+* Copier/couper/coller: Copy/cut/paste.
+* Personnaliser @acronym{SES}: Customizing @acronym{SES}.
+@end menu
+
+@node Formulas
+@section Formules de cellule
+@cindex formules
+@cindex formules, saisire
+@cindex valeurs
+@cindex valeurs de cellule
+@cindex éditer des cellules
+@findex ses-read-cell
+@findex ses-read-symbole
+@findex ses-edit-cell
+@findex ses-recalculate-cell
+@findex ses-recalculate-all
+
+Pour insérer une valeur dans une cellule, tapez juste une expression
+numérique, un @samp{"texte entre guillemets anglais"}, ou une
+expression Lisp.
+
+@table @kbd
+@item 0..9
+Auto-insérer un nombre (@code{ses-read-cell}).
+
+@item -
+Auto-insérer un nombre négatif (@code{ses-read-cell}).
+
+@item .
+Auto-insérer un nombre décimal (@code{ses-read-cell}).
+
+@item "
+Auto-insérer une chaîne de caractères. Le guillemet anglais de
+terminaison est inséré automatiquement (@code{ses-read-cell}).
+
+@item (
+Auto-insérer une expression. La parenthèse de droite est insérée
+automatiquement (@code{ses-read-cell}). Pour accéder à la valeur
+d’une autre cellule, il suffit d’utiliser son identificateur dans
+votre expression. Dès que l’autre cellule change, la formule de cette
+cellule-ci est réévaluée. En tapant l’expression, vous pouvez
+utiliser les raccourcis clavier suivants :
+@table @kbd
+@item M-@key{TAB}
+pour compléter les noms de symboles, et
+@item C-h C-n
+pour lister les symboles de cellules renommées dans un tampon d’aide.
+@end table
+
+@item ' @r{(apostrophe)}
+Entrer un symbole (@code{ses-read-symbol}). @acronym{SES} se souvient
+de tous les symboles qui ont été utilisés comme formules, de sorte que
+vous pouvez taper juste le début d’un symbole et utiliser
+@kbd{@key{SPC}}, @kbd{@key{TAB}}, et @kbd{?} pour le compléter.
+@end table
+
+Pour saisire quelque-chose d’autre (par ex., un vecteur), commencer
+avec un chiffre, puis effacer le chiffre et tapez ce que vous désirez.
+
+@table @kbd
+@item @key{RET}
+Édite la formule existante dans la cellule courante (@code{ses-edit-cell}).
+
+@item C-c C-c
+Force le recalcul de la cellule ou plage courante (@code{ses-recalculate-cell}).
+
+@item C-c C-l
+Recalcule la feuille entière (@code{ses-recalculate-all}).
+@end table
+
+@node Resizing
+@section Redimensionner la feuille
+@cindex redimensionner des feuilles
+@cindex dimensions
+@cindex ligne, ajout ou suppression
+@cindex colonne, ajout ou suppression
+@cindex ajouter des lignes ou colonnes
+@cindex insérer des lignes ou colonnes
+@cindex enlever des lignes ou colonnes
+@cindex supprimer des lignes ou colonnes
+@findex ses-insert-row
+@findex ses-insert-column
+@findex ses-delete-row
+@findex ses-delete-column
+@findex ses-set-column-width
+@findex ses-forward-or-insert
+@findex ses-append-row-jump-first-column
+
+
+Commande de base :
+
+@table @kbd
+@item C-o
+(@code{ses-insert-row})
+
+@item M-o
+(@code{ses-insert-column})
+
+@item C-k
+(@code{ses-delete-row})
+
+@item M-k
+(@code{ses-delete-column})
+
+@item w
+(@code{ses-set-column-width})
+
+@item @key{TAB}
+Déplace le point sur la prochaine cellule vers la droite, ou insère
+une nouvelle colonne si on est déjà sur la dernière cellule de la
+ligne, ou insère une nouvelle ligne si on est sur la ligne de
+terminaison (@code{ses-forward-or-insert}).
+
+@item C-j
+Insère une nouvelle ligne sous la ligne courante et va à la colonne A
+de cette ligne (@code{ses-append-row-jump-first-column}).
+@end table
+
+En redimensionnant la feuille (à moins que vous ne fassiez que changer
+la largeur d’une colonne) les références de cellule au sein des
+formules sont toutes relocalisées de sorte à continuer à faire
+référence aux mêmes cellules. Si une formule mentionne B1 et que vous
+insérez une nouvelle première ligne, alors la formule mentionnera B2.
+
+Si vous supprimez une cellule à laquelle une formule fait référence,
+le symbole de cellule est supprimé de la formule, de sorte que
+@code{(+ A1 B1 C1)} après suppression de la troisième colonne devient
+@code{(+ A1 B1)}. Au cas où cela ne serait pas ce que vous désiriez :
+
+@table @kbd
+@item C-_
+@itemx C-x u
+Défait l’action action précédente (@code{(undo)}).
+@end table
+
+
+@node Printer functions
+@section Fonctions d’impression
+@cindex fonctions d’impression
+@cindex formatage de cellule
+@cindex cellules, formater
+
+Les fonctions d’impression convertissent des valeurs binaires de
+cellule en formes d’impression qu’Emacs affiche à l’écran.
+
+@menu
+* Différents types de fonctions d’impression: Various kinds of printer functions.
+* Configurer quelle fonction d’impression s’applique: Configuring what printer function applies.
+* Les fonctions d’impression standardes: Standard printer functions.
+* Les fonctions d’impression locales: Local printer functions.
+* Écrire une fonctions d’impression lambda: Writing a lambda printer function.
+@end menu
+
+@node Various kinds of printer functions
+@subsection Différents types de fonctions d’impression
+
+Lorsque on configure quelle fonction d’impression s’applique
+(@pxref{Configuring what printer function applies}), on peut saisir
+une fonction d’impression comme l’une des possibilités suivantes :
+
+@itemize
+@item
+Une chaîne de formatage, telle que @samp{"$%.2f"}. la chaîne formatée
+résultante est alignée à droite au sein de la cellule
+d’impression. Pour obtenir un alignement à gauche, utilisez des
+parenthèses : @samp{("$%.2f")}.
+@item
+Une fonction d’impression peut aussi être une fonction à un argument
+dont la valeur renvoyée est une chaîne (pour obtenir un alignement à
+droite) ou une liste d’une chaîne (pour obtenir un alignement à
+gauche). Une telle fonction peut à son tour être configurée comme :
+@itemize
+@item
+Une expression lambda, par exemple :
+
+@lisp
+(lambda (x)
+ (cond
+ ((null x) "")
+ ((numberp x) (format "%.2f" x))
+ (t (ses-center-span x ?# 'ses-prin1))))
+@end lisp
+
+Pendant la saisie d’une lambda, vous pouvez utiliser @kbd{M-@key{TAB}}
+pour completer les noms de symboles.
+@item
+Un symbole faisant référence à une fonction d’impression standarde
+(@pxref{Standard printer functions}).
+@item
+Un symbole faisant référence à une fonction d’impression locale
+(@pxref{Local printer functions}).
+@end itemize
+
+
+@end itemize
+
+
+@node Configuring what printer function applies
+@subsection Configurer quelle fonction d’impression s’applique
+
+Chaque cellule a une fonction d’impression. Si c’est @code{nil},
+alors la fonction d’impression de la colonne de cette cellule est
+utilisée. Et si cela est aussi @code{nil}, alors la fonction
+d’impression par défaut de la feuille est utilisée.
+
+@table @kbd
+@item p
+@findex ses-read-cell-printer
+Saisit une fonction d’impression pour la cellule ou plage courante
+(@code{ses-read-cell-printer}).
+
+@item M-p
+@findex ses-read-column-printer
+Saisit une fonction d’impression pour la colonne courante (@code{ses-read-column-printer}).
+
+@item C-c C-p
+@findex ses-read-default-printer
+Saisit la fonction d’impression par défaut de la feuille
+(@code{ses-read-default-printer}).
+@end table
+
+Les commandes @code{ses-read-@var{xxx}-printer} permettent les commandes
+suivantes pendant l’édition:
+
+@table @kbd
+@item @key{arrow-up}
+@itemx @key{arrow-down}
+Pour parcourir l’historique : les commandes
+@code{ses-read-@var{xxx}-printer} ont leur propre historique de
+mini-tampon, il est préchargé avec l’ensemble de toutes les fonctions
+d’impression utilisées dans cette feuille, plus les fonctions
+d’impression standardes (@pxref{Standard printer functions}) et les
+fonctions d’impression locales (@pxref{Local printer functions}).
+@item @key{TAB}
+Pour compléter les symboles de fonctions d’impression locales, et
+@item C-h C-p
+Pour lister les fonctions d’impression locales dans un tampon d’aide.
+@end table
+
+
+@node Standard printer functions
+@subsection Les fonctions d’impression standardes
+
+
+Mise à part @code{ses-prin1}, les autres fonctions d’impression
+standardes ne conviennent que pour les cellules, et non pour les
+colonnes ou comme fonction d’impression par défaut de la feuille,
+parce qu’elles formatent la valeur en utilisant la fonction
+d’impression de colonne (ou par défaut si @code{nil}) et ensuite
+post-traite le résultat, par ex.@: le centre :
+
+@ftable @code
+@item ses-center
+Centre juste.
+
+@item ses-center-span
+Centrer en débordant sur les cellules vides suivantes.
+
+@item ses-dashfill
+Centrer en utilisant des tirets (@samp{-}) au lieu d’espaces.
+
+@item ses-dashfill-span
+Centrer avec tirets et débordement.
+
+@item ses-tildefill-span
+Centrer avec tildes (@samp{~}) et débordement.
+
+@item ses-prin1
+C’est la fonction d’impression de repli, utilisée quand l’appel à la
+fonction d’impression configurée envoie une erreur.
+@end ftable
+
+@node Local printer functions
+@subsection Les fonctions d’impression locales
+
+@findex ses-define-local-printer
+Vous pouvez définir une fonction d’impression locale à la feuille avec
+la commande @code{ses-define-local-printer}. Par exemple, définissez
+une fonction d’impression @samp{toto} à @code{"%.2f"}, et ensuite
+utilisez le symbole @samp{toto} comme fonction d’impression. Ensuite,
+si vous rappelez @code{ses-define-local-printer} sur @samp{toto} pour
+le redéfinir comme @code{"%.3f"}, alors toutes les cellules utilisant
+la fonction d’impression @samp{toto} seront re-imprimées conformément.
+
+Il peut arriver que vous désiriez définir ou redéfinir certaines
+fonctions d’impression à chaque fois que vous ouvrez une feuille. Par
+exemple, imaginez que vous désiriez définir/re-définir automatiquement
+une fonction d’impression locale @code{euro} pour afficher un nombre
+comme une somme en euros, par exemple le nombre @code{3.1} serait
+affiché comme @code{3.10@dmn{}@euro{}}. Pour faire cela dans tout
+tampon SES qui n’est pas en lecture seule, vous pouvez ajouter ce
+genre de code à votre fichier d’init @file{.emacs} :
+
+@lisp
+(defun my-ses-mode-hook ()
+ (unless buffer-read-only
+ (ses-define-local-printer
+ 'euro
+ (lambda (x)
+ (cond
+ ((null x) "")
+ ((numberp x) (format "%.2f€" x))
+ (t (ses-center-span x ?# 'ses-prin1)))))))
+(add-hook 'ses-mode-hook 'my-ses-mode-hook)
+@end lisp
+
+Si vous remplacez la commande @code{ses-define-local-printer} par la
+fonction @code{ses-define-if-new-local-printer}
+@findex ses-define-if-new-local-printer
+la définition ne se produira que si aucune fonction d’impression de
+même nom n’est déjà définie.
+
+
+@node Writing a lambda printer function
+@subsection Écrire une fonctions d’impression lambda
+
+Vous pouvez écrire une fonction d’impression avec une expression
+lambda prenant un seul argument en deux cas :
+
+@itemize
+@item
+quand vous configurez la fonction d’impression s’appliquant à
+une cellule ou colonne, ou
+@item
+quand vous définissez une fonction d’impression avec la commande
+@code{ses-define-local-printer}.
+@end itemize
+
+En faisant cela, prenez garde à ce que la valeur renvoyée soit une
+chaîne, ou une liste contenant une chaîne, même quand l’argument
+d’entrée a une valeur inattendue. Voici un exemple :
+
+@example
+(lambda (val)
+ (cond
+ ((null val) "")
+ ((and (numberp val) (>= val 0)) (format "%.1f" val))
+ (t (ses-center-span val ?# 'ses-prin1))))
+@end example
+
+Cet exemple fait ceci :
+
+@itemize
+@item
+Quand la cellule est vide (c.-à-d.@: quand @code{val} est @code{nil}),
+imprime une chaîne vide @code{""}
+@item
+Quand la valeur de cellule est un nombre positif ou nul, formate la
+valeur en notation à virgule fixe avec une decimale après la virgule
+@item
+Sinon, gère la valeur comme erronnée en l’imprimant comme une
+s-expression (avec @code{ses-prin1}), centrée et entourée de
+croisillons @code{#} de bourrage.
+@end itemize
+
+Une autre précaution à prendre est d’éviter un débordement de pile à
+cause d’une fonction d’impression se rappelant elle-même sans
+fin. Cette erreur peut se produire quand vous utilisez une fonction
+d’impression locale comme fonction d’impression de colonne, et que
+cette fonction d’impression locale appelle implicitement la fonction
+d’impression de colonne courante, ainsi elle se rappelle elle-même
+récursivement. Imaginez par exemple que vous désirez créer une
+fonction d’impression locale @code{=bourre} qui centre le contenu
+imprimé d’une cellule et l’entoure de signes égal @code{=}, et que
+vous le faites (erronnément) comme cela :
+
+@lisp
+;; CODE ERRONÉ
+(lambda (x)
+ (cond
+ ((null x) "")
+ (t (ses-center x 0 ?=))))
+@end lisp
+
+Comme @code{=bourre} utilise la fonction d’impression standarde
+@code{ses-center} mais sans lui passer exemplicitement une fonction
+d’impression, @code{ses-center} appelle la fonction d’impression de
+colonne courante s’il y en a une, ou la fonction d’impression par
+défaut de la feuille sinon. Aussi, utiliser @code{=bourre} comme
+fonction d’impression de colonne aura pour résultat de causer un
+débordement de pile dans cette colonne sur toute cellule non vide,
+puisque @code{ses-center} rappelle récursivement la fonction qui l'a
+appelé. @acronym{SES} ne vérifie pas cela ; il vous faut donc faire
+attention. Par exemple, reécrivez @code{=bourre} ainsi :
+
+@lisp
+(lambda (x)
+ (cond
+ ((null x) "")
+ ((stringp x) (ses-center x 0 ?= " %s "))
+ (t (ses-center-span x ?# 'ses-prin1))))
+@end lisp
+
+Le code ci-dessus est réparé au sens où @code{ses-center} et
+@code{ses-center-span} sont toutes deux appelées avec un dernier
+argument @var{printer} explicite spécifiant la fonction d'impression,
+respectivement @code{" %s "} et @code{'ses-prin1}.
+
+
+Le code ci-dessus applique le bourrage de @code{=} seulement aux
+chaînes ; et aussi il entoure la chaîne par un espace de chaque côté
+avant de bourrer avec des signes @code{=}. Ainsi la chaîne @samp{Ula}
+s’affichera comme @samp{@w{=== Ula ===}} dans une colonne large de 11
+caractères. Toute valeur qui n’est ni @code{nil} (c.-à-d.@: une
+cellule vide) ni une chaîne est affichée comme une erreur par l’usage
+de bourrage par des croisillons @code{#}.
+
+@node Clearing cells
+@section Effacer des cellules
+@cindex effacer, commandes
+@findex ses-clear-cell-backward
+@findex ses-clear-cell-forward
+
+Ces commandes règlent à la fois la formule et la fonction d’impression
+à @code{nil} :
+
+@table @kbd
+@item @key{DEL}
+Se deplace à gauche et efface la cellule (@code{ses-clear-cell-backward}).
+
+@item C-d
+Efface la cellule et se déplace à droite (@code{ses-clear-cell-forward}).
+@end table
+
+
+@node Copy/cut/paste
+@section Copier, couper, et coller
+@cindex copier
+@cindex couper
+@cindex coller
+@findex kill-ring-save
+@findex mouse-set-region
+@findex mouse-set-secondary
+@findex ses-kill-override
+@findex yank
+@findex clipboard-yank
+@findex mouse-yank-at-click
+@findex mouse-yank-at-secondary
+@findex ses-yank-pop
+
+Les fonctions de copie opèrent sur des regions rectangulaires de
+cellules. Vous pouvez coller les copies dans des tampons
+non-@acronym{SES} pour exporter le texte d’impression.
+
+@table @kbd
+@item M-w
+@itemx [copy]
+@itemx [C-insert]
+Copie les cellules en vedette vers l’anneau presse-papier et le
+presse-papier primaire (@code{kill-ring-save}).
+
+@item [drag-mouse-1]
+Marque une region et la copie vers l’anneau presse-papier et le
+presse-papier primaire (@code{mouse-set-region}).
+
+@item [M-drag-mouse-1]
+Marque une region et la copie vers l’anneau presse-papier et le
+presse-papier secondaire (@code{mouse-set-secondary}).
+
+@item C-w
+@itemx [cut]
+@itemx [S-delete]
+Les fonctions couper ne suppriment pas en fait de lignes ou de
+colonnes --- elles les copient et puis les effacent
+(@code{ses-kill-override}).
+
+@item C-y
+@itemx [S-insert]
+Colle à partir de l’anneau presse-papier (@code{yank}). Les fonctions
+coller se comportent différemment selon le format du texte qu’elles
+insèrent :
+@itemize @bullet
+@item
+Quand on colle des cellules qui ont été coupées ou copiées à partir
+d’un tampon @acronym{SES}, le texte d’impression est ignoré et
+seulement la formule et fonction d’impression jointes sont insérées ;
+les références de cellule de la formule sont relocalisées à moins que
+vous n’utilisiez @kbd{C-u}.
+@item
+Le texte collé écrase un rectangle de cellules dont le coin haut
+gauche est la cellule courante. Si une partie du rectangle est
+au-délà des bords de la feuille, vous devez confirmer l’augmentation
+de la taille de la feuille.
+@item
+Du texte Non-@acronym{SES} est d’ordinaire inséré comme formule de
+remplacement pour la cellule courante. Si la formule serait un
+symbole, elle est traitée comme une chaîne à moins que vous
+n’utilisiez @kbd{C-u}. Les formules collées comprenant des erreurs de
+syntaxe sont toujours traitées comme des chaînes.
+@end itemize
+
+@item [paste]
+Colle à partir du presse-papier primaire ou de l’anneau presse-papier
+(@code{clipboard-yank}).
+
+@item [mouse-2]
+Règle le point et colle à partir du presse-papier primaire
+(@code{mouse-yank-at-click}).
+
+@item [M-mouse-2]
+Règle le point et colle à partir du presse-papier secondaire
+(@code{mouse-yank-secondary}).
+
+@item M-y
+Immédiatement après un coller, vous pouvez remplacer le texte avec un
+élément précédent à partir de l’anneau presse-papier
+(@code{ses-yank-pop}). Contrairement au yank-pop standard d’Emacs, la
+version de @acronym{SES} utilise @code{undo} pour supprimer l’ancien
+collage. Est-ce que cela ne fait aucune différence ?
+@end table
+
+@node Customizing @acronym{SES}
+@section Personnaliser @acronym{SES}
+@cindex personnaliser
+@vindex enable-local-eval
+
+Par défaut, une feuille venant d’être créée a 1 ligne et 1 colonne.
+La largeur de colonne est 7 et la fonction d’impression par défaut est
+@samp{"%.7g"}. Chacune de ces choses peut être personnalisée. Allez
+voir dans le groupe « ses ».
+
+Après avoir saisi une valeur de cellule, normalement
+@code{forward-char} est appelé, ce qui déplace le point vers la
+cellule suivante à droite, ou à la première cellule à gauche de la
+ligne suivante si la cellule courante est la plus à droite de la
+feuille. Vous pouvez personnaliser @code{ses-after-entry-functions}
+pour que le déplacement soit vers la gauche ou le haut ou le bas.
+Pour un mouvement diagonal, selectionnez deux fonctions de la liste.
+
+@vindex ses-jump-cell-name-function
+@code{ses-jump-cell-name-function} est une variable personnalisable
+réglée par défaut à la fonction @code{upcase}. Cette fonction est
+appelée quand vous passez un nom de cellule à la commande
+@command{ses-jump} (@kbd{j}), et que ce nom n’est pas le nom d’une
+cellule renommée. Elle change le nom de cellule saisi en celui de la
+cellule vers laquelle sauter. Le réglage par défaut @code{upcase} vous
+permet de saisir le nom de cellule en bas de casse. Un autre usage de
+@code{ses-jump-cell-name-function} pourrait être une
+internationalisation pour convertir des caractères non latins en
+équivalents latins pour nommer la cellule. Au lieu d’un nom de
+cellule, la fonction peut renvoyer des coordonnées de cellule sous la
+forme d’un cons, par exemple @code{(0 . 0)} pour la cellule @code{A1},
+@code{(1 . 0)} pour la cellule @code{A2}, etc.
+
+@vindex ses-jump-prefix-function
+@code{ses-jump-prefix-function} est une variable personnalisable
+réglée par défaut à la fonction @code{ses-jump-prefix}. Cette fonction
+est appelée quand vous donnez un argument préfixe à la commande
+@command{ses-jump} (@kbd{j}). Elle renvoie un nom de cellule ou des
+coordonnées de cellule correspondant à l’argument préfixe. Les
+coordonnées de cellule sont sous la forme d’un cons, par exemple
+@code{(1 . 0)} pour la cellule @code{A2}. Le réglage par défaut
+@code{ses-jump-prefix} numérote les cellules de gauche à droite et
+puis de haut en bas, de sorte que si on suppose une feuille 4×3,
+l’argument préfixe @samp{0} saute à la cellule @samp{A1}, l’argument
+préfixe @samp{2} saute à @samp{C1}, l’argument préfixe @samp{3} saute
+à @samp{A2}, etc.
+
+@vindex ses-mode-hook
+@code{ses-mode-hook} est un crochet de mode normal (une liste de
+fonctions qui s’exécutent quand le mode @acronym{SES} démarre sur un
+tampon).
+
+@vindex safe-functions
+La variable @code{safe-functions} est une liste de fonctions
+potentiellement risquées à traiter comme si elles étaient sûres lors
+de l’analyse des formules et fonctions d’impression. @xref{Virus
+protection}. Avant de personnaliser @code{safe-functions},
+réfléchissez à quel point vous faites confiance à la personne qui vous
+suggère cette modification. La valeur @code{t} désactive toute
+protection anti-virus. Une valeur donnant une liste-de-fonctions peut
+rendre une feuille « trop bien », mais elle crée aussi des portes
+dérobées dans votre armure anti-virus. Pour que votre protection
+contre les virus fonctionne, vous devez toujours appuyer sur @kbd{n}
+quand un avertissement contre un virus vous est présenté, à moins que
+vous compreniez ce que le code en question essaie de faire. N’écoutez
+pas ceux qui vous racontent de personnaliser @code{enable-local-eval}
+--- cette variable est pour les gens qui ne portent pas de ceinture de
+sécurité !
+
+
+@c ===================================================================
+
+@node Advanced Features
+@chapter Fonctions avancées
+@cindex avancées, fonctions
+@findex ses-read-header-row
+
+
+@table @kbd
+@item C-c M-C-h
+(@code{ses-set-header-row}).
+@findex ses-set-header-row
+@kindex C-c M-C-h
+La ligne d’en-tête au sommet de la fenêtre @acronym{SES} affiche
+normalement la ligne de colonne pour chaque colonne. Vous pouvez la
+régler pour afficher une copie de l’une des lignes, tell que qu’une
+ligne de titres de colonnes, ainsi cette ligne sera toujours visible.
+Par défaut la commande règle la ligne courante comme en-tête ;
+utiliser C-u pour une invite à désigner la ligne d’en-têre. Régler la
+ligne d’en-tête à la ligne 0 pour afficher les lettres de colonne de
+nouveau.
+@item [header-line mouse-3]
+Affiche un menu pour régler la ligne courante comme en-tête, ou
+revenir à des lettres de colonne.
+@item M-x ses-rename-cell
+@findex ses-rename-cell
+Renomme une cellule pour passer d'un nom standard du genre de A1 à
+toute chaîne pouvant être un nom valide pour une variable locale (Voir
+aussi @ref{Nonrelocatable references}).
+@item M-x ses-repair-cell-reference-all
+@findex ses-repair-cell-reference-all
+Quand vous interrompez la mise à jour d’une formule de cellule en
+tapant @kbd{C-g}, alors cela peut casser le lien de référence de
+cellule, ce qui compromet la mise à jour automatique de cellule quand
+toute autre cellule dont elle dépend est modifiée. Pour réparer cela,
+utilisez la fonction @code{ses-repair-cell-reference-all}
+@end table
+
+@menu
+* La zone d’impression: The print area.
+* Plages dans les formules: Ranges in formulas.
+* Trier par colonne: Sorting by column.
+* Fonctions de formule standardes: Standard formula functions.
+* Plus sur l’impression de cellule: More on cell printing.
+* Import et export: Import and export.
+* Protection contre les virus: Virus protection.
+* Feuilles avec détails et synthèse: Spreadsheets with details and summary.
+@end menu
+
+@node The print area
+@section La zone d’impression
+@cindex zone d’impression
+@cindex impression, zone d’
+@findex widen
+@findex ses-renarrow-buffer
+@findex ses-reprint-all
+
+Un fichier @acronym{SES} consiste en une zone d’impression et une zone
+de données. Normalement le tampon est réduit de sorte à n’afficher
+que la zone d’impression. La zone d’impression est en lecture seule,
+hormis pour les commandes spéciales de @acronym{SES} ; elle contient
+les valeurs de cellule formatées par les fonctions d’impression. La
+zone de données enregistre les formules, fonctions d’impression, etc.
+
+@table @kbd
+@item C-x n w
+Affiche à la fois les zones d’impression et de données (@code{widen}).
+
+@item C-c C-n
+Affiche seulement la zone d’impression (@code{ses-renarrow-buffer}).
+
+@item S-C-l
+@itemx M-C-l
+Recrée la zone d’impression en réévaluant pour toutes les cellules sa
+fonction d’impression (@code{ses-reprint-all}).
+@end table
+
+@node Ranges in formulas
+@section Plages dans les formules
+@cindex plages
+@findex ses-insert-plage-click
+@findex ses-insert-plage
+@findex ses-insert-ses-plage-click
+@findex ses-insert-ses-plage
+@vindex de
+@vindex à
+
+Une formule du genre de :
+@lisp
+(+ A1 A2 A3)
+@end lisp
+est la somme de trois cellules spécifiques. Si vous insérez une
+nouvelle deuxième ligne, la formule devient
+@lisp
+(+ A1 A3 A4)
+@end lisp
+et la nouvelle ligne n’est pas incluse dans la somme.
+
+La macro @code{(ses-range @var{de} @var{à})} s’évalue en une liste des
+valeurs dans un rectangle de cellules. Si votre formule est
+@lisp
+(apply '+ (ses-range A1 A3))
+@end lisp
+et que vous insérez une nouvelle deuxième ligne, elle devient
+@lisp
+(apply '+ (ses-range A1 A4))
+@end lisp
+et la nouvelle ligne est incluse dans la somme.
+
+Alors que vous saisissez ou éditez une formule dans le minitampon,
+vous pouvez sélectionner une plage dans la feuille (en utilisant la
+souris ou le clavier), et injecter une représentation de cette plage
+dans votre formule. Supposez que vous sélectionnez @samp{A1-C1} :
+
+@table @kbd
+@item [S-mouse-3]
+Insère @samp{A1 B1 C1} (@code{ses-insert-range-click})
+
+@item C-c C-r
+Version clavier (@code{ses-insert-range}).
+
+@item [C-S-mouse-3]
+Insère @samp{(ses-range A1 C1)} (@code{ses-insert-ses-range-click}).
+
+@item C-c C-s
+Version clavier (@code{ses-insert-ses-range}).
+@end table
+
+Si vous supprimez la cellule @var{de} ou @var{à} d’une plage, la
+cellule la plus proche toujours existante est utilisée à la place. Si
+vous supprimez l’entière plage, le relocalisateur de formule supprime
+le @samp{ses-range} de la formule.
+
+Si vous insérez une nouvelle ligne juste au delà de la fin d’une plage
+à une colonne, ou une nouvelle colonne juste au delà d’une plage à une
+ligne, la nouvelle cellule est incluse dans la plage. Les nouvelles
+cellules insérées juste avant une plage ne sont pas incluses.
+
+Des fanions peuvent être ajoutés à @code{ses-range} immédiatement
+après la cellule @var{à} .
+@table @code
+@item !
+Les cellules vides de la plage peuvent être enlevées en ajoutant le
+fanion @code{!}. Une cellule vide est une cellule dont la valeur est
+l’un des symboles @code{nil} ou @code{*skip*}. Par exemple
+@code{(ses-range A1 A4 !)} fait la même chose que @code{(list A1 A3)}
+quand les cellules @code{A2} et @code{A4} sont vides.
+@item _
+Les valeurs de cellules vides sont remplacées par l’argument suivant
+le fanion @code{_}, ou @code{0} quand le fanion @code{_} est le
+dernier dans la liste d’arguments. Par exemple @code{(ses-range A1 A4
+_ "vide")} fera la même chose que @code{(list A1 "vide" A3 "vide")}
+quand les cellules @code{A2} et @code{A4} sont vides. Similairement,
+@code{(ses-range A1 A4 _ )} fera la même chose que @code{(list A1 0 A3
+0)}.
+@item >v
+Quand l’ordre a de l’importance, liste les cellules en lisant les
+cellules ligne par ligne de la cellule en haut à gauche vers la
+cellule en bas à droite. Ce fanion est fourni pour être complet car
+c’est déjà l’ordre par défaut.
+@item <v
+Liste les cellules en lisant les cellules ligne par ligne de la
+cellule en haut à droite vers la cellule en bas à gauche.
+@item v>
+Liste les cellules en lisant les cellules colonne par colonne de la
+cellule en haut à gauche vers la cellule en bas à droite.
+@item v<
+Liste les cellules en lisant les cellules colonne par colonne de la
+cellule en haut à droite vers la cellule en bas à gauche.
+@item v
+Un raccourci pour @code{v>}.
+@item ^
+Un raccourci pour @code{^>}.
+@item >
+Un raccourci pour @code{>v}.
+@item <
+Un raccourci pour @code{>^}.
+@item *
+Au lieu de lister les cellules, en fait un vecteur ou une matrice Calc
+(@pxref{Top,,,calc,GNU Emacs Calc Manual}). Si la plage contient
+seulement une ligne ou une colonne un vecteur est fait, sinon une
+matrice est faite.
+@item *2
+Idem que @code{*} à ceci près qu’une matrice est toujours faite même
+quand il y a une seule ligne ou colonne dans la plage.
+@item *1
+Idem que @code{*} à ceci près qu’un vecteur est toujours fait même
+quand il n’y a qu’une ligne ou colonne dans la plage, c.-à-d.@: que la
+matrice correspondante est aplatie.
+@end table
+
+@node Sorting by column
+@section Trier par colonne
+@cindex trier
+@findex ses-sort-column
+@findex ses-sort-column-click
+
+@table @kbd
+@item C-c M-C-s
+Trie les cellules d’une plage en utilisant l’une des colonnes
+(@code{ses-sort-column}). Les lignes (ou lignes partielles si la
+plage n’inclut pas toutes les colonnes) sont réarrangées de sorte que
+la colonne choisie soit ordonnée.
+
+@item [header-line mouse-2]
+La façon la plus facile de trier est de cliquer sur mouse-2 sur la
+ligne d’en-tête de colonne (@code{ses-sort-column-click}).
+@end table
+
+La comparaison du tri utilise @code{string<}, ce qui fonctionne bien
+pour des nombres alignés à droite ou des chaînes alignées à gauche.
+
+Avec un argument préfixe, trie dans l’ordre descendant.
+
+Les lignes sont déplacées une à la fois, avec relocalisation des
+formules. Ceci fonctionne bien si les formules font référence à
+d’autres cellules dans leur ligne, mais non pas si bien pour des
+formules qui font référence à d’autres lignes dans la plage ou à des
+cellules hors de la plage.
+
+
+@node Standard formula functions
+@section Fonctions de formule standardes
+@cindex fonctions standardes de formule
+@cindex *skip*
+@cindex *error*
+@findex ses-delete-blanks
+@findex ses-average
+@findex ses+
+
+Souvent on désire qu’un calcul exclue les cellules vides. Voici
+quelques fonctions utiles à appeler dans vos formules :
+
+@table @code
+@item (ses-delete-blanks &rest @var{args})
+Renvoie une liste dont toutes les cellules vides (dont la valeur est
+soit @code{nil} ou @code{'*skip*}) ont été supprimées. L’ordre des
+arguments est inversé. Prière de noter que @code{ses-range} a un
+modificateur @code{!} qui permet de supprimer les cellules vides,
+ainsi il est possible d’écrire :
+@lisp
+(ses-range A1 A5 !)
+@end lisp
+au lieu de
+@lisp
+(apply 'ses-delete-blanks (ses-range A1 A5 <))
+@end lisp
+
+@item (ses+ &rest @var{args})
+Somme des arguments non vides pris en ordre inverse.
+
+@item (ses-average @var{liste})
+Moyenne des éléments non vides de @var{liste}. Ici la liste est
+passée comme un seul argument, vu que typiquement on la forme avec
+@code{ses-range}.
+@end table
+
+@node More on cell printing
+@section Plus sur l’impression de cellule
+@cindex cellule, plus sur l'impression
+@cindex impression de cellule
+@findex ses-truncate-cell
+@findex ses-recalculate-cell
+
+Valeurs spéciales de cellule :
+@itemize
+@item nil
+s’imprime typiquement de la même façon que "", mais permet que la
+cellule précédente déborde dessus.
+@item '*skip*
+remplace nil quand la cellule précédente déborde effectivement ; rien
+n’est donc imprimée pour cette cellule.
+@item '*error*
+indique que la formule a signalé une erreur au lieu de produire une
+valeur : la cellule imprimée est remplie de croisillons (#).
+@end itemize
+
+Lorsque la fonction d’impression est définie par une chaîne de
+formatage, par ex. @samp{"%.3f"}, @acronym{SES} imprime
+automatiquement @code{nil} comme une chaîne vide, mais si la fonction
+d’impression est définie par une expression lambda, vous devez définir
+explicitement comment @code{nil} est traité, par ex. :
+@example
+(lambda (x)
+ (cond
+ ((null x) "")
+ ((stringp x) (list x))
+ ((numberp x) (format "%.3f" x))
+ (t (ses-prin1 x)))
+@end example
+imprime @code{nil} comme une chaîne vide, aligne à gauche la valeur si
+c’est une chaîne, et si c’est un nombre l’aligne à droite en
+l’imprimant avec trois décimales.
+
+Il n’est pas nécessaire par contre que vous vous souciez de
+@code{'*skip*} dans la définition d’une fonction d’impression, en
+effet aucune fonction d’impression n’est appelée sur @code{'*skip*}.
+
+Si le résultat de la fonction d’impression est trop large pour la
+cellule et que la cellule suivante est @code{nil}, le résultat
+débordera sur la cellule suivante. Les résultats très larges peuvent
+déborder sur plusieurs cellules. Si le résultat est trop large pour
+l’espace disponible (jusqu'à la fin de la ligne ou la prochaine
+cellule non-@code{nil}), le résultat est tronqué si la valeur de
+cellule est une chaîne, ou remplacé par des croisillons (@samp{#})
+sinon.
+
+@acronym{SES} pourrait être perturbé par des résultats de fonction
+d'impression contenant des sauts de ligne ou des tabulations, aussi
+ces caractères sont remplacés par des points d'interrogation.
+
+@table @kbd
+@item t
+Confine une cellule à sa propre colonne (@code{ses-truncate-cell}).
+Ceci vous permet de déplacer le point sur la cellule de droite qui
+sinon serait couverte par un débordement. Si vous ne modifiez pas la
+cellule de droite, la cellule confinée débordera de nouveau la
+prochaine fois qu’elle sera imprimée.
+
+@item c
+Appliquée à une seule cellule, cette commande affiche dans la zone
+d’écho toute erreur de formule ou erreur d’impression survenue pendant
+le recalcul/la réimpression (@code{ses-recalculate-cell}). Vous
+pouvez utiliser cela pour défaire l’effet de @kbd{t}.
+@end table
+
+Quand une fonction d’impression signale une erreur, la fonction
+d’impression de repli
+@findex ses-prin1
+@code{ses-prin1} lui est substituée. Ceci est utile quand votre
+fonction d’impression de colonne est seulement numérique et que vous
+utilisez une chaîne comme valeur de cellule. Notez que la fonction
+d’impression par défaut standarde est @samp{"%.7g"} qui est numérique
+seulement, ainsi les cellules auxquelles la fonction d’impression par
+défaut standarde s’applique et qui ne sont pas vides et ne contiennent
+pas un nombre utilisent la fonction d’impression de repli
+@code{ses-prin1}, par ex.@: les cellules qui contiennent une chaîne
+font cela. @kbd{c} sur de telles cellules affiche « Format specifier
+doesn't match argument type ».
+
+
+@node Import and export
+@section Import et export
+@cindex import et export
+@cindex export, et import
+@findex ses-export-tsv
+@findex ses-export-tsf
+
+@table @kbd
+@item x t
+Exporte une plage de cellules comme des valeurs séparées par des
+tabulations (@code{ses-export-tsv}).
+@item x T
+Exporte une plage de cellules comme des formules séparées par des
+tabulations (@code{ses-export-tsf}).
+@end table
+
+Le texte exporté va dans l’anneau presse-papier ; vous pouvez le
+coller dans un autre tampon. Les colonnes sont séparées par des
+tabulations, les lignes par des sauts de lignes.
+
+Pour importer du texte, utilisez n’importe laquelle des commandes
+coller où le texte à coller contient des tabulations et/ou des sauts de
+lignes. Les formules importées ne sont pas relocalisées.
+
+@node Virus protection
+@section Protection contre les virus
+@cindex virus protection
+
+À chaque fois une formule ou fonction d’impression est lue d’un
+fichier ou est collée dans la feuille, elle est marquée comme
+« nécessitant une vérification de sécurité ». Plus tard, quand la
+formule ou la fonction d’impression est évaluée pour la première fois,
+elle est vérifiée comme sûre en utilisant le prédicat @code{unsafep} ;
+si elle s’avère « potentiellement risquée », la formule ou fonction
+d’impression en question est affichée et vous devez appuyer @kbd{Y}
+pour l’approuver ou @kbd{N} pour utiliser un substitut. Le substitut
+signale toujours une erreur.
+
+Les formules ou fonctions d’impression que vous tapez sont
+immédiatement vérifiées quant à leur sûreté. Si elles s’avèrent
+potentiellement risquées et que vous appuyez @kbd{N} pour refuser,
+l’action est annulée et l’ancienne formule ou fonction d’impression
+demeure.
+
+En plus des virus (qui tentent de se recopier dans d’autres
+fichiers), @code{unsafep} peut aussi détecter toutes sortes de chevaux
+de Troie, tels que des feuilles de calcul qui effacent les fichiers,
+envoient des courriels, inondent des sites Web, corrompent vos
+réglages d’Emacs, etc.
+
+Généralement, les formules et fonctions d’impression de feuilles sont
+des choses simples qui n’ont pas besoin de faire des traitements
+exotiques, aussi toute partie potentiellement dangereuse de
+l’environnement Emacs Lisp peut être exclus sans entraver votre style
+comme écrivain de formule. Lisez la documentation dans
+@file{unsafep.el} pour plus d’information sur la façon dont les formes
+Lisp sont classifiées comme sûres ou risquées.
+
+@node Spreadsheets with details and summary
+@section Feuilles avec détails et synthèse
+@cindex détails et synthèse
+@cindex synthèses, et détails
+
+Une organisation usuelle pour une feuille de calcul est d’avoir un tas
+de lignes de « détail », chacune décrivant possiblement une
+transaction, et ensuite un ensemble de lignes de « synthèse » qui
+affichent chacune des données condensées pour un certain sous-ensemble
+des détails. @acronym{SES} prend en charge ce type d’organisation via
+la fonction @code{ses-select}.
+
+@table @code
+@item (ses-select @var{de-plage} @var{test} @var{à-plage})
+Renvoie un sous-ensemble de @var{à-plage}. Pour chaque membre dans
+@var{de-plage} qui est égal à @var{test}, le membre correspondant de
+@var{à-plage} est inclus dans le résultat.
+@end table
+
+Exemple d’utilisation :
+@lisp
+(ses-average (ses-select (ses-range A1 A5) 'Bidochon (ses-range B1 B5)))
+@end lisp
+Ceci calcule la moyenne des valeurs de la colonne @samp{B} pour les
+lignes dont la valeur dans la colonne @samp{A} est le symbole
+@samp{'Bidochon}.
+
+Vous vous demandez peut-être pourquoi les arguments de
+@code{ses-select} ne consistent pas au lieu de @var{à-plage} de
+décalages @var{décalage-à-la-ligne} et @var{décalage-à-la-colonne}
+relativement à @var{de-plage} : spécifier @var{à-plage} explicitement
+assure que la formule est recalculée si l’une quelconque des cellules
+de cette plage est modifiée.
+
+Le fichier @file{etc/ses-example.el} dans la distribution Emacs est un
+exemple d’une feuille organisée en détails-et-synthèse.
+
+
+@c ===================================================================
+
+@node For Gurus
+@chapter Pour les gourous
+@cindex avancées, fonctions
+@cindex fonctions avancées
+
+@menu
+* Mises à jour différées: Deferred updates.
+* Références non-relocalisables: Nonrelocatable references.
+* La zone données: The data area.
+* Variables locales-tampon dans les feuilles: Buffer-local variables in spreadsheets.
+* Utilisation de advice-add dans @acronym{SES}: Uses of advice-add in @acronym{SES}.
+@end menu
+
+@node Deferred updates
+@section Mises à jour différées
+@cindex différées, mises à jour
+@cindex mises à jour différées
+@vindex run-with-idle-timer
+
+Pour épargner du temps de calcul redondant, les cellules dont le
+recalcul est rendu nécessaire par des changements dans d’autres
+cellules sont ajoutées à un ensemble. À la fin de la commande, chaque
+cellule de cet ensemble est recalculée une fois. Ceci peut créer un
+nouvel ensemble de cellules nécessitant un recalcul. Ce processus est
+répété jusqu'à ce que l’ensemble soit vide ou que des références
+circulaires soient détectées. Dans les cas extrêmes, et notamment si
+une référence circulaire est en cours de détection, vous pourriez voir
+des messages de progression de la forme « Recalculating... (@var{nnn}
+cells left) ». Si vous interrompez le calcul avec @kbd{C-g}, la
+feuille demeurera dans un état incohérent, utilisez alors @kbd{C-_} ou
+@kbd{C-c C-l} pour réparer cela.
+
+Pour épargner encore plus de temps en évitant les écritures
+redondantes, les cellules qui sont modifiées sont ajoutées à un
+ensemble au lieu d’être immédiatement écrites dans la zone de
+données. Chaque cellule de cet ensemble est écrite une fois à la fin
+de la commande. Si vous modifiez un grand nombre de cellules, vous
+pourriez voir un message de progression de la forme
+« Writing... (@var{nnn} cells left) ». Ces écritures différées de
+cellules ne peuvent pas être interrompues par @kbd{C-g}, alors il vous
+faudra juste attendre.
+
+@acronym{SES} utilise @code{run-with-idle-timer} pour déplacer le
+souligné de cellule quand Emacs fait défiler le tampon à la fin d’une
+commande, et aussi pour @c xxx narrow and underline
+réduire et souligner après visiter un fichier. Ceci peut être visible
+par une perturbation transitoire après visiter un fichier et certaines
+commandes de défilement. Vous pouvez continuer à taper sans vous
+inquiéter de cette perturbation.
+
+
+@node Nonrelocatable references
+@section Références non relocalisables
+@cindex non-relocalisables, références
+@cindex références non-relocalisables
+
+@kbd{C-y} relocalise toutes les références de cellule dans une formule
+collée, alors que @kbd{C-u C-y} n’en relocalise aucune. Et pour les
+cas mélangés ?
+
+La meilleure approche est de renommer les cellules que vous @emph{ne}
+voulez @emph{pas} être relocalisables en utilisant
+@code{ses-rename-cell}.
+@findex ses-rename-cell
+Les cellules qui n’ont pas un style de nom du genre de A1 ne sont pas
+relocalisées au collage. En utilisant cette méthode, les cellules
+concernées ne seront pas relocalisées quelle que soit la formule où
+elles apparaissent. Prière toutefois de noter que dans une formule
+contenant quelque plage @code{(ses-range @var{cell1} @var{cell2})}
+alors dans la formule collée chacune des bornes @var{cell1} et
+@var{cell2} de la plage est relocalisée, ou non, indépendemment, selon
+qu’elle est nommée du genre de @samp{A1} ou renommée.
+
+Une méthode alternative est d’utiliser
+@lisp
+(symbol-value 'B3)
+@end lisp
+pour faire une @dfn{référence absolue}. Le relocalisateur de formule
+saute par dessus tout ce qui est sous un @code{quote}, aussi cela ne
+sera pas relocalisé quand on le colle ou quand des lignes/colonnes
+sont insérées/supprimées. Toutefois, @samp{B3} ne sera pas
+enregistrée comme une dépendance de cette cellule, et donc cette
+cellule ne sera pas mise à jour automatiquement quand @samp{B3} est
+modifiée, c’est pourquoi l’usage de @code{ses-rename-cell} est la
+plupart du temps préférable.
+
+Les variables @code{row} et @code{col} sont liées dynamiquement
+pendant l’évaluation d’une formule de cellule. Vous pouvez utiliser
+@lisp
+(ses-cell-value row 0)
+@end lisp
+pour obtenir la valeur de la colonne la plus à gauche de la ligne
+courante. Ce type de dépendance n’est pas non plus enregistré.
+
+
+@node The data area
+@section La zone de données
+@cindex données, zone de
+@cindex zone de données
+@findex ses-reconstruct-all
+
+Commence avec un caractère saut de page (de code ASCII 014 en octal),
+suivi par un ensemble de macros de définition de cellule pour chaque
+ligne, suivi par l’ensemble des définitions de fonctions d’impression
+locales, suivi par les largeurs de colonnes, fonctions d’impression de
+colonne, fonction d’impression par défaut, et ligne d’en-tête. Ensuite
+il y a les paramètres globaux (ID de format fichier, nombre de lignes,
+nombre de colonnes, nombre de fonctions d’impression locales) et les
+variables locales (spécification du mode @acronym{SES} pour le tampon,
+etc.).
+
+Quand un fichier @acronym{SES} est chargé, tout d’abord les paramètres
+globaux sont chargés, puis l’ensemble de la zone de données est
+@code{eval}ué, et finalement les variables locales sont traitées.
+
+Vous pouvez éditer la zone de données, mais n’insérez pas ni ne
+supprimez de sauts de ligne, hormis dans la partie des variables
+locales, en effet @acronym{SES} localise les choses en comptant les
+sauts de ligne. Utilisez @kbd{C-x C-e} à la fin d’une ligne pour
+installer ce que vous avez édité dans les structures de données de la
+feuille (ceci ne met pas à jour la zone d’impression, utilisez, par
+ex., @kbd{C-c C-l} pour cela).
+
+La zone de données est maintenue comme une image des structures de
+données de la feuille stockée dans des variables locales tampon au
+moment du chargement initial de la zone. Si le contenu de la zone de
+données se trouve corrompu par la suite, vous pouvez essayer de
+reconstruire la zone de données à partir des structures de données
+avec :
+
+@table @kbd
+@item C-c M-C-l
+(@code{ses-reconstruct-all}).
+@end table
+
+
+@node Buffer-local variables in spreadsheets
+@section Les variables locales-tampon dans les feuilles de calcul
+@cindex locales-tampon, variables
+@cindex variables locales-tampon
+
+Vous pouvez ajouter des variables locales supplémentaires à la liste
+au bas de la zone de données, telles que des constantes cachées
+auxquelles vous désirez faire référence dans vos formules.
+
+Vous pouvez initialiser la variable @code{ses--symbolic-formulas} pour
+être une liste de symboles (comme une suite de chaînes entre
+parenthèses) à proposer comme complétions pour la commande @kbd{'}.
+Cette liste initiale de complétions sera utilisée à la place de
+l’ensemble effectif des symboles-comme-formules de la feuille.
+
+Pour un exemple de ceci, voir le fichier @file{etc/ses-example.ses}.
+
+Si (pour une raison quelconque) vous désirez que vos formules ou
+fonctions d’impression sauvegardent des données dans des variables,
+vous devez déclarer ces variables comme locales tampon pour éviter un
+avertissement de virus.
+
+Vous pouvez définir des fonctions en en faisant des valeurs pour la
+fausse variable locale @code{eval}. De telles fonctions peuvent
+ensuite être utilisées dans les formules et comme fonctions
+d’impression, mais d’ordinaire chaque @code{eval} est présenté à
+l’utilisateur pendant le chargement du fichier comme un virus
+potentiel. Et cela peut devenir gênant.
+
+Vous pouvez définir des fonctions dans votre fichier @file{.emacs}.
+Toute personne pourra encore lire la zone d’impression de votre
+feuille, mais ne pourra pas recalculer ou réimprimer quoi que ce soit
+qui dépende de vos fonctions. Pour éviter des avertissements contre
+les virus, chaque fonction utilisée dans une formule nécessite
+@lisp
+(put 'le-nom-de-votre-fonction 'safe-function t)
+@end lisp
+
+@node Uses of advice-add in @acronym{SES}
+@section Utilisation de advice-add dans @acronym{SES}
+@findex advice-add
+@findex copy-region-as-kill
+@findex yank
+
+@table @code
+@item copy-region-as-kill
+Quand on copie de la zone d’impression d’une feuille, traite la région
+comme un rectangle et joint pour chaque cellule sa formule et sa
+fonction d’impression comme des propriétés @code{'ses}.
+
+@item yank
+Quand on colle dans la zone d’impression d’une feuille de calcul,
+essaie de coller comme des cellules (si le texte à coller a des
+propriétés @code{'ses}), ensuite comme des formules séparées par des
+tabulations, ensuite (si tout le reste a échoué) comme une seule
+formule pour la cellule courante.
+@end table
+
+@c ===================================================================
+@node Index
+@unnumbered Index
+
+@printindex cp
+
+@c ===================================================================
+
+@node Acknowledgments
+@unnumbered Remerciements
+
+Codé par :
+@quotation
+@c jyavner@@member.fsf.org
+Jonathan Yavner,
+@c monnier@@gnu.org
+Stefan Monnier,
+@c shigeru.fukaya@@gmail.com
+Shigeru Fukaya,
+@c vincent.belaiche@@sourceforge.net
+Vincent Belaïche
+@end quotation
+
+@noindent
+Manuel Texinfo de :
+@quotation
+@c jyavner@@member.fsf.org
+Jonathan Yavner,
+@c brad@@chenla.org
+Brad Collins,
+@c vincent.belaiche@@sourceforge.net
+Vincent Belaïche
+@end quotation
+
+@noindent
+Idées de :
+@quotation
+@c christoph.conrad@@gmx.de
+Christoph Conrad,
+@c cyberbob@@redneck.gacracker.org
+CyberBob,
+@c syver-en@@online.no
+Syver Enstad,
+@c fischman@@zion.bpnetworks.com
+Ami Fischman,
+@c Thomas.Gehrlein@@t-online.de
+Thomas Gehrlein,
+@c c.f.a.johnson@@rogers.com
+Chris F.A. Johnson,
+@c lyusong@@hotmail.com
+Yusong Li,
+@c juri@@jurta.org
+Juri Linkov,
+@c maierh@@myself.com
+Harald Maier,
+@c anash@@san.rr.com
+Alan Nash,
+@c pinard@@iro.umontreal.ca
+François Pinard,
+@c ppinto@@cs.cmu.edu
+Pedro Pinto,
+@c xsteve@@riic.at
+Stefan Reichör,
+@c epameinondas@@gmx.de
+Oliver Scholz,
+@c rms@@gnu.org
+Richard M. Stallman,
+@c teirllm@@dms.auburn.edu
+Luc Teirlinck,
+@c jotto@@pobox.com
+J. Otto Tennant,
+@c jphil@@acs.pagesjaunes.fr
+Jean-Philippe Theberge,
+@c rrandresf@@hotmail.com
+Andrés Ramírez
+@end quotation
+
+@c ===================================================================
+
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+@include doclicense.texi
+
+@bye
+@c Local Variables:
+@c ispell-dictionary: "fr"
+@c End: