Comment traduire une feuille de calcul Excel sans casser les formules ni les listes déroulantes
Repérez le texte qu'un traducteur cellule par cellule ignore dans un fichier .xlsx (texte des formules, texte enrichi, liens, graphiques, macros), corrigez les listes déroulantes et les codes qu'il peut casser, et vérifiez le résultat avec un script gratuit et un classeur de test.

Pour traduire un classeur Excel entier, importez le fichier .xlsx dans un traducteur de documents plutôt que de traduire les cellules une par une. La commande Révision > Traduire d'Excel fonctionne sur le texte que vous sélectionnez (Microsoft Support), ce qui convient pour une étiquette mais reste lent pour une liste de prix. Un traducteur de fichiers lit chaque cellule de texte, la traduit et la réécrit à la même adresse, de sorte que les formules, les nombres et les dates restent à leur place.
Ce qu'il ne vous dit pas, c'est quel texte il n'a jamais lu. Le texte saisi à l'intérieur d'une formule, une cellule avec un mot en gras, un lien, une note, un titre de graphique : dans une traduction cellule par cellule, tout cela peut revenir dans la langue d'origine. Et deux choses peuvent casser : une liste déroulante dont les valeurs autorisées n'ont pas été traduites, et un code produit qui l'a été.
Nous avons créé un classeur de test à deux feuilles avec du texte dans chacun de ces emplacements, écrit un vérificateur gratuit qui liste où se trouve le texte, et fait passer le classeur par une reproduction locale du traitement des feuilles de calcul utilisé par BookTranslator. Ce guide montre ce qui est revenu, ce qu'il faut modifier avant l'importation, et comment vérifier le fichier traduit.
Réponse rapide : ce qui est traduit dans un classeur
| Où se trouve le texte | Exemple de notre test | Traduit par BookTranslator ? | Que faire |
|---|---|---|---|
| Cellules de texte brut, y compris les lignes d'en-tête | « Blue notebook », « Price » | Oui | Rien |
| Nombres, dates, booléens | 4.5, 2026-10-30 | Laissés tels quels | Vérifiez les formats de nombre pour le marché cible |
| Formules | =C2*D2 | Laissées telles quelles | Rien |
| Texte à l'intérieur d'une formule | =IF(D2>5,"In stock","Low stock") | Non | Déplacez les mots dans des cellules (voir étape 2) |
| Cellule avec mise en forme mixte | « Édition limitée » stylo | Non, la cellule entière est ignorée | Effacez d'abord la mise en forme, ou traduisez-la manuellement |
| Cellules avec lien hypertexte | « Page produit » | Non | Modifiez le texte du lien après la traduction |
| Valeur dans une cellule de liste déroulante | « Papeterie » | Oui, mais la liste déroulante ne l'est pas | Corrigez la liste, sinon la cellule n'est plus valide |
| Codes avec des lettres | « A-77 », « B-09 » | Envoyés au traducteur | Vérifiez-les après la traduction |
| Codes composés uniquement de chiffres ou de symboles | "00123" | Laissés tels quels | Rien |
| Notes et commentaires | « Vérifier le nom du fournisseur avant validation » | Non | Traduisez-les manuellement, ou supprimez-les |
| Noms de feuilles et plages nommées | « Produits », PriceRange | Non, pour que les formules inter-feuilles continuent de fonctionner | Renommez les feuilles manuellement uniquement si nécessaire, après avoir vérifié les formules |
| Graphiques et macros | Un graphique à barres, un projet VBA | Supprimés du fichier traduit lors de notre test | Conservez l'original, reconstruisez après (voir ci-dessous) |
Les anciens fichiers .xls ne sont pas acceptés. Ouvrez-les dans Excel et enregistrez-les au format .xlsx d'abord. Les fichiers .xlsm avec macros sont acceptés, mais lisez la section sur les macros avant d'en téléverser un : le fichier traduit ne contient pas de macros, et si le téléchargement se termine toujours par .xlsm, renommez-le en .xlsx avant de l'ouvrir.
Étape 1 : Exécutez le vérificateur sur votre classeur
Téléchargez check_xlsx_text.py et exécutez-le sur votre fichier :
python3 check_xlsx_text.py "Price list.xlsx"
Il ne nécessite que Python 3 et lit le fichier sans le modifier. Voici le résumé pour notre classeur d'exemple :
Counts by location:
cell code, ID or address 2
cell link text 1
cell mixed formatting 1
cell plain text 15
comments comment or note text 1
dropdown list of allowed values 1
formula text text inside a formula 6
sheet sheet name 2
workbook defined name 1
Plain text cells (translated by a cell-by-cell translator): 15
Items that need a decision before you upload: 12
Sous les décomptes, il liste chaque élément avec sa feuille et sa cellule, par exemple Products!E2 formula text 'In stock'. Utilisez cette liste comme liste de tâches pour l'étape 2. Si votre classeur contient des graphiques, des zones de texte, des tableaux croisés dynamiques ou un projet de macro, ils apparaissent aussi dans les décomptes.
Le README décrit le classeur d'exemple, liste les hachages de fichiers et renvoie aux scripts qui le construisent, afin que vous puissiez reproduire le test.
Ce qui est arrivé à notre classeur de test
Nous avons exécuté le classeur d'exemple à travers le code utilisé par le gestionnaire de feuilles de calcul de BookTranslator, reproduit localement le 2026-11-01 avec la même bibliothèque (ExcelJS 4.4.0). Au lieu d'une vraie traduction, nous avons utilisé un espace réservé qui ajoute « [DE] » devant le texte de chaque cellule. Cela exclut le modèle de langage du test, de sorte que les résultats montrent uniquement ce que le traitement du fichier envoie, conserve et supprime.
Le gestionnaire lit chaque feuille cellule par cellule. Il envoie une cellule pour traduction uniquement si la cellule contient une valeur textuelle simple, et ignore tout texte composé uniquement de chiffres, de ponctuation et de symboles. Tout le reste dans la grille de cellules est copié sans modification. BookTranslator renvoie ensuite deux fichiers : un classeur traduit et un classeur bilingue.
Le classeur traduit
C'est le fichier à utiliser. Les 6 formules, les 7 nombres et dates, les formats monétaires et de date, les cellules fusionnées, la note, la règle de liste déroulante et la plage nommée sont revenus inchangés. Les 9 cellules d'en-tête et les autres cellules de texte simple ont été traduites sur place. Trois résultats nécessitent votre attention :
Le texte à l'intérieur des formules reste dans la langue source. La colonne Statut utilisait =IF(D2>5,"In stock","Low stock"). Une formule n'est pas une cellule de texte, donc le gestionnaire ne la lit jamais, et « In stock » reste en anglais dans chaque ligne. Il en va de même pour le texte joint avec & ou CONCAT, et pour le texte à l'intérieur de HYPERLINK.
Une valeur de liste déroulante traduite ne correspond plus à sa liste. La cellule H2 avait une liste déroulante autorisant « Stationery, Office, Art ». La valeur de la cellule a été traduite, mais la liste est stockée dans la règle de validation, pas dans une cellule, donc elle ne l'a pas été. Le mode comparaison de notre vérificateur l'a signalé ainsi :
Problems: 3
Products!A3: code changed: 'A-77' -> '[DE] A-77'
Products!A4: code changed: 'B-09' -> '[DE] B-09'
Products!H2: '[DE] Stationery' is not in its dropdown list ['Art', 'Office', 'Stationery']
Excel conserve une valeur qui enfreint sa règle de validation, mais la prochaine personne qui ouvre la liste déroulante ne voit que les anciens choix, et Données > Entourer les données non valides signalera la cellule.
Les codes contenant des lettres sont envoyés au traducteur. « 00123 » a été ignoré car il ne contient que des chiffres. « A-77 » et « B-09 » ont été envoyés, car ils contiennent une lettre. Qu'un code revienne inchangé dépend alors du modèle ; rien dans le traitement du fichier ne le protège. Un SKU qui revient sous la forme « A-77-Artikel » casse toutes les recherches qui l'utilisent.
Le classeur bilingue
Le fichier bilingue insère une colonne de traduction à droite de chaque colonne qui avait au moins une cellule traduite, avec des en-têtes tels que « Name (Translated) ». Il déplace les valeurs des cellules vers leurs nouvelles colonnes, mais il ne déplace pas les formats de cellule ni ne met à jour les formules. Dans notre test :
- le format de prix
$#,##0.00est resté dans la colonne C, qui contient désormais les noms de produits, tandis que les prix ont été déplacés vers la colonne E sans ce format ; - le format de date est resté dans la colonne G, qui contient désormais la quantité, si bien qu’une quantité de 10 s’affichait comme une date ;
=C2*D2a été déplacée vers la colonne K mais pointait toujours vers C2 et D2, qui contiennent désormais le nom du produit et sa traduction, elle ne peut donc plus renvoyer 45 ;- sur la feuille Summary,
=SUM(Products!F2:F4)additionnait désormais une colonne de traduction vide.
Le classeur bilingue sert donc à lire la source et la traduction côte à côte, pas à calculer. Ne le modifiez pas et n’en copiez pas les formules.
Graphiques et macros
Dans une copie distincte du classeur, nous avons ajouté un graphique et un projet de macro, stockés comme Excel les stocke. Ni l’un ni l’autre ne figurait dans le fichier traduit ou bilingue. ExcelJS lit et écrit les feuilles de calcul, les styles, le texte partagé, les images, les tableaux et les commentaires, et ne dispose d’aucun code pour les parties de graphique ou le projet VBA, il les omet donc lors de l’enregistrement. Le même code n’a rien pour les tableaux croisés dynamiques, attendez-vous donc à ce qu’ils soient supprimés aussi, bien que nous n’en ayons pas testé un. Le gestionnaire enregistre également sa sortie au format .xlsx, qui ne peut pas contenir de macros.
Une autre limite du test : nous avons construit le classeur d’exemple avec ExcelJS lui-même, qui est le cas le plus favorable pour conserver les formats, les fusions et les règles de validation. Un classeur enregistré par Excel peut contenir des fonctionnalités qu’ExcelJS ne modélise pas, exécutez donc l’étape de comparaison ci-dessous sur votre propre fichier plutôt que de supposer un résultat aussi propre.
Étape 2 : Préparez le classeur avant de le téléverser
Travaillez sur une copie. Le vérificateur vous indique quelles cellules modifier.
- Déplacez le texte des formules dans des cellules. Placez les mots dans une petite feuille « Labels » et faites pointer la formule vers eux :
=IF(D2>5,Labels!$A$1,Labels!$A$2). Les cellules d’étiquettes sont du texte brut, elles sont donc traduites, et chaque formule récupère la traduction. Ce seul changement corrige généralement la plupart des occurrences de « texte de formule », car la même phrase tend à se répéter sur toute une colonne. - Déplacez les listes déroulantes dans des cellules. Dans Données > Validation des données, remplacez la Source d’une liste saisie (
Stationery,Office,Art) par une plage de la feuille Labels (=Labels!$B$1:$B$3). Les valeurs de la liste sont alors traduites en même temps que les cellules qui les utilisent. Vérifiez ensuite quelques cellules : la liste déroulante n’accepte la valeur traduite que si le modèle a traduit « Stationery » de la même manière aux deux endroits. - Supprimez la mise en forme mixte. Une cellule contenant un mot en gras ou coloré est stockée sous forme de segments formatés et entièrement ignorée. Sélectionnez la cellule et choisissez Accueil > Effacer > Effacer les formats, ou retapez-la, puis réappliquez le gras après la traduction. Si vous en avez beaucoup, notez-les d’abord.
- Décidez du sort des notes et des commentaires. Ils ne sont pas traduits. Supprimez les notes de révision que vous ne voulez pas envoyer à un service de traduction, et traduisez le reste à la main.
- Enregistrez les classeurs de macros au format
.xlsx. Conservez votre.xlsmcomme fichier maître. Traduisez une copie.xlsx, puis soit recopiez les colonnes de texte traduites dans le maître (Collage spécial > Valeurs, colonnes de texte uniquement, pour ne pas écraser les formules), soit exportez les modules VBA et importez-les dans le fichier traduit. - Laissez les graphiques pour plus tard. Un graphique contient peu de texte : un titre, des titres d’axes et une légende qui provient généralement des cellules d’en-tête. Il est souvent plus rapide de reconstruire le graphique dans le classeur traduit à partir des mêmes plages, ou de recoller les colonnes de texte traduites dans le classeur d’origine pour que ses graphiques et tableaux croisés dynamiques se mettent à jour d’eux-mêmes.
Étape 3 : Traduisez le fichier entier
Téléversez le fichier .xlsx sur la page de traduction de documents, choisissez la langue cible et vérifiez le prix affiché avant de payer. Le téléversement d’un fichier entier traduit chaque cellule de texte de chaque feuille en une seule tâche, ce qui facilite la conservation d’un nom de produit identique à la ligne 3 et à la ligne 3 000. Notre guide pour créer un glossaire de traduction explique comment fixer les termes qui ne doivent pas varier.
Une fois la tâche terminée, la page Historique propose les deux téléchargements. Utilisez le classeur traduit. N’ouvrez le classeur bilingue que pour revoir la formulation avec une personne qui lit les deux langues.
Si vous travaillez dans Google Sheets, il existe deux autres solutions. L’onglet Documents de Google Translate accepte les fichiers .xlsx jusqu’à 10 Mo (Aide Google Translate) ; notre guide de traduction Google Docs compare ses options. Et Sheets dispose d’une fonction GOOGLETRANSLATE(text, source_language, target_language) (Aide Google Docs Editors) que vous pouvez faire glisser vers le bas dans une nouvelle colonne à côté de la source. C’est pratique pour une colonne d’étiquettes courtes, mais les résultats sont des formules, collez-les donc en valeurs avant de partager la feuille. DeepL traduit aussi des documents ; voyez ce que ses limites de documents impliquent en pratique. Quel que soit l’outil utilisé, lancez d’abord le vérificateur sur la source : le texte contenu dans les formules, les liens et les graphiques se trouve aux mêmes endroits quel que soit l’outil qui lit le fichier.
Étape 4 : Vérifiez le classeur traduit
-
Lancez le mode comparaison. Placez le fichier source et le fichier traduit côte à côte :
python3 check_xlsx_text.py --compare "Price list.xlsx" "Price list (translated).xlsx"Il vérifie que chaque formule, nombre et date est inchangé, que les codes contenant des lettres sont revenus exactement tels quels et que chaque valeur de liste déroulante figure dans sa liste. Utilisez-le uniquement sur le classeur traduit. Comme le fichier bilingue décale les colonnes, presque toutes les cellules seraient signalées.
-
Recalculez. Si une formule affiche encore l’ancien texte après la correction des étiquettes, appuyez sur F9 (ou Formules > Calculer maintenant).
-
Traduisez les éléments restants. Utilisez la liste du vérificateur de l’étape 1 : texte des liens, notes, titres de graphiques et toutes les cellules dont vous avez effacé la mise en forme.
-
Recherchez les textes tronqués. Les traductions sont souvent plus longues que la source, et les chaînes courtes sont celles qui s'allongent le plus. Le W3C cite les directives IBM qui estiment l'expansion moyenne de l'anglais vers les langues européennes à 200–300 % pour les textes allant jusqu'à 10 caractères (W3C). Les en-têtes de colonnes sont courts, alors élargissez les colonnes ou activez le renvoi à la ligne là où ils sont coupés.
-
Vérifiez l'affichage des nombres et des dates. Les valeurs n'ont pas été modifiées, mais « 4.50 » peut devoir s'afficher « 4,50 » pour un lecteur allemand. Il s'agit d'un format de cellule ou d'un paramètre régional, pas d'une traduction.
-
Ne « corrigez » pas les noms de fonctions. Si l'Excel français d'un collègue affiche
SOMMEau lieu deSUM, c'est Excel qui affiche ses propres noms de fonctions localisés ; la formule est la même. -
Configurez les feuilles de droite à gauche. Pour l'arabe, l'hébreu, le persan ou l'ourdou, activez Mise en page > Feuille de droite à gauche et vérifiez l'alignement des cellules.
-
Faites-la relire par un lecteur courant si elle est destinée aux clients, comme une liste de prix ou un catalogue de produits. Une traduction automatique est un bon premier jet, pas une version finale.
Fichiers CSV et TSV
Un fichier .csv ne contient ni formules, ni formats, ni listes déroulantes, donc la plupart des problèmes ci-dessus disparaissent. Trois choses sont différentes :
- La ligne d'en-tête n'est pas traduite. Le gestionnaire traite la première ligne comme des en-têtes et ne traduit que les lignes de données. Traduisez les en-têtes à la main, ou copiez-les dans une ligne de données avant de téléverser puis remettez-les en place ensuite.
- Une colonne est traduite dans son ensemble. Si une cellule d'une colonne contient une lettre, toutes les cellules de cette colonne qui contiennent une lettre sont envoyées, codes inclus. Le mode comparaison ne lit que les
.xlsx, alors vérifiez à la main une colonne de codes CSV : copiez-la depuis les deux fichiers dans une même feuille et comparez les deux colonnes avec=EXACT(A2,B2). - Un CSV revient séparé par des virgules. Quel que soit le délimiteur utilisé par la source, le CSV traduit utilise des virgules ; un fichier
.tsvconserve ses tabulations. Dans notre test, un CSV séparé par des points-virgules est revenu séparé par des virgules, avec les virgules décimales comme « 4,50 » conservées entre guillemets. Le fichier est en UTF-8 sans marque d'ordre des octets. Microsoft indique qu'Excel ouvre normalement un CSV UTF-8 lorsqu'il possède cette marque, et recommande sinon de l'importer via Données > Obtenir des données > À partir d'un fichier texte/CSV (Microsoft Support). Si vous double-cliquez sur le fichier et voyez des accents brouillés, importez-le de cette façon à la place.
Si vos données se trouvent dans un classeur avec des formules, traduisez le .xlsx. Exporter en CSV pour le traduire supprime toutes les formules.
Problèmes courants
| Problème | Cause probable | Que faire |
|---|---|---|
| Une colonne entière affiche encore « In stock » | Les mots se trouvent dans une formule IF | Déplacez-les vers des cellules d'étiquette et faites pointer la formule vers celles-ci |
| Une liste déroulante rejette la valeur traduite | Les valeurs autorisées sont saisies directement dans la règle de validation | Changez la Source de la règle pour une plage de cellules et traduisez la plage |
| Un code produit a changé | Il contient des lettres, il a donc été envoyé au traducteur | Corrigez-le depuis la source ; lancez le mode comparaison à chaque livraison |
| Une cellule n'a pas été traduite du tout | Elle a un formatage mixte ou c'est un lien | Effacez le formatage ou modifiez le texte du lien, puis retraduisez ou corrigez manuellement |
| Le graphique ou les macros ont disparu | La bibliothèque utilisée pour réécrire le fichier ne les enregistre pas | Traduisez une copie .xlsx et replacez le texte traduit dans l'original |
| Les totaux sont faux dans le fichier bilingue | Ses colonnes ajoutées décalent les valeurs mais pas les formules ni les formats | Utilisez le classeur traduit pour tout calcul |
| Les accents sont illisibles dans un CSV traduit | Excel a deviné le mauvais encodage | Importez-le avec Données > Obtenir des données > À partir d'un fichier texte/CSV |
| Le téléversement est refusé | Le fichier est au format .xls ou nécessite un mot de passe pour s'ouvrir | Enregistrez-le au format .xlsx normal sans mot de passe d'ouverture (la protection de la feuille seule suffit) |
Le même principe s'applique aux diapositives : un diaporama PowerPoint conserve aussi du texte dans des endroits que le traducteur ignore, et le vérificateur de cet article fonctionne de la même manière que celui-ci.
Articles connexes





