‹ Démarrer : votre terrain d'entraînement

Leçon 2 · 35 min · Accès libre

Importer vos contacts et vos produits depuis un fichier CSV

Rédigé pour Odoo 19 et 20 · Mis à jour le · Alexandre Petit

Dans cette leçon
  • Trouver la fonction d'import dans Odoo
  • Faire correspondre les colonnes du fichier aux champs d'Odoo
  • Comprendre la colonne id (identifiant externe) pour réimporter sans doublons
  • Tester un import avant de l'exécuter et corriger les erreurs fréquentes

Pour importer des contacts dans Odoo, ouvrez la liste des contacts, cliquez sur l'icône d'engrenage à côté du titre, puis sur Importer des enregistrements. Chargez votre fichier CSV ou Excel, vérifiez que chaque colonne correspond au bon champ, cliquez sur Tester, puis sur Importer. Avec une colonne id, vous pourrez réimporter le même fichier pour corriger vos données, sans créer de doublons.

Dans cette leçon, vous remplissez votre essai avec les 8 contacts et les 8 produits de l'Atelier des Pertuis. C'est la même méthode que pour reprendre les données d'un ancien logiciel ou d'un tableur : ce que vous apprenez ici vous servira le jour de votre vrai démarrage.

Que contiennent les fichiers de l'Atelier des Pertuis ?

Téléchargez les deux fichiers : contacts-atelier-des-pertuis.csv et produits-atelier-des-pertuis.csv. Ce sont des fichiers texte : une ligne par enregistrement, des colonnes séparées par des points-virgules, encodés en UTF-8 (pour que les accents passent bien).

ColonneCe qu'elle contientExemple
idL'identifiant externe : un code unique que vous choisissezpertuis_gabut
nameLe nom du contactRestaurant Le Gabut
is_company1 pour une société, 0 pour un particulier1
street, zip, city, country_idL'adresse, le pays écrit en toutes lettres12 quai du Gabut, 17000, La Rochelle, France
email, phoneLes coordonnées (fictives)contact@legabut.example
customer_rank, supplier_rank1 si c'est un client, 1 si c'est un fournisseur : Odoo les propose en premier dans les ventes ou dans les achats1 et 0

Le fichier des produits suit la même logique : default_code (la référence interne, comme TAB-CH-180), name, type (consu pour un bien, service pour un service), is_storable (1 si Odoo doit suivre le stock), list_price (prix de vente HT), standard_price (coût), uom_id (unité : Unités ou Heures), sale_ok et purchase_ok (peut être vendu, peut être acheté).

Bon à savoir : les en-têtes des fichiers sont les noms techniques des champs d'Odoo. C'est volontaire : Odoo les reconnaît tout seul, vous n'avez presque rien à faire correspondre. Avec vos propres fichiers, les en-têtes seront plutôt « Nom », « Ville »… et Odoo vous proposera la correspondance.

Où se trouve l'import dans Odoo ?

L'import se lance depuis la liste des enregistrements que vous voulez créer. Pour les contacts, ouvrez l'application Contacts ; pour les produits, ouvrez Ventes › Produits › Produits (ou le menu Produits de l'Inventaire).

ContactsContactsConfiguration
NouveauContacts⚙Importer des enregistrementsRechercher…
NomVillePays
Atelier des Pertuis (essai)—France
Maquette simplifiée : selon votre version, l'entrée « Importer des enregistrements » se trouve sous l'engrenage à côté du titre ou dans le menu des favoris de la recherche.

Comment faire correspondre les colonnes ?

Après avoir chargé le fichier, Odoo affiche l'écran d'import : à gauche les options de lecture du fichier, au centre une ligne par colonne avec le champ Odoo choisi. Vérifiez trois choses.

  1. Les options de lecture

    Séparateur : point-virgule. Encodage : UTF-8. Odoo les devine en général tout seul ; s'il se trompe, l'aperçu est illisible.

  2. La correspondance des colonnes

    Chaque colonne du fichier doit pointer vers un champ Odoo. Une colonne sans correspondance est ignorée : choisissez le bon champ dans la liste, ou laissez « Ne pas importer » si elle ne sert à rien.

  3. La colonne id

    Elle doit pointer vers ID externe. C'est elle qui évitera les doublons.

ContactsContactsConfiguration
ImporterTesterToujours tester d'abordCharger un fichierContacts / Importer un fichier
Fichiercontacts-atelier-des-pertuis.csv
Encodageutf-8
SéparateurPoint-virgule
Séparateur décimalPoint
Colonne du fichierChamp OdooExemple
idID externepertuis_gabut
nameNomRestaurant Le Gabut
is_companyEst une société1
country_idPaysFrance
customer_rankRang client1
Maquette simplifiée de l'écran d'import : les libellés des champs et des boutons peuvent varier selon votre version d'Odoo.

À quoi sert la colonne id (identifiant externe) ?

L'identifiant externe est une étiquette unique que vous collez sur chaque enregistrement : pertuis_gabut désigne le Restaurant Le Gabut, et lui seul. Lors d'un nouvel import, Odoo regarde cette étiquette :

  • si elle existe déjà, Odoo met à jour la fiche existante ;
  • si elle n'existe pas, Odoo crée une nouvelle fiche.

Exemple : le restaurant change de numéro. Vous corrigez le téléphone dans le fichier, vous réimportez, et la fiche est mise à jour. Sans colonne id, Odoo aurait créé un deuxième « Restaurant Le Gabut ». L'identifiant sert aussi à relier les données entre elles : une colonne parent_id/id contenant pertuis_gabut rattache une personne, comme Hugo Martin, à la société du restaurant.

  1. Fichier CSVavec une colonne id
  2. Correspondancecolonnes et champs
  3. Testerrien n'est écrit
  4. Importercréation ou mise à jour

Pourquoi tester avant d'importer ?

Le bouton Tester fait tout le travail de l'import sans rien enregistrer. Odoo lit chaque ligne, vérifie les valeurs et affiche les erreurs, ligne par ligne. Tant que le test n'est pas propre, n'importez pas : corrigez le fichier ou la correspondance, puis testez à nouveau.

Attention : un import ne s'annule pas d'un clic. Si vous importez 300 lignes avec une erreur, il faudra les corriger par un nouvel import (grâce à la colonne id) ou les archiver à la main. D'où la règle : on teste toujours.

Quelles sont les erreurs d'import les plus fréquentes ?

Ce que vous voyezLa causeLa solution
Toutes les données dans une seule colonneMauvais séparateurChoisissez « point-virgule » dans les options
Des accents illisibles (é au lieu de é)Mauvais encodage, souvent après un enregistrement par ExcelChoisissez l'encodage du fichier, ou enregistrez-le en « CSV UTF-8 »
La colonne is_storable n'a pas de champL'application Inventaire n'est pas installéeActivez Inventaire, puis rechargez le fichier
Valeur introuvable pour Pays ou UnitéFaute de frappe (« Frnace ») ou libellé différent (« Unité » au lieu de « Unités »)Corrigez la valeur dans le fichier
Prix à 0 ou refusésVirgule décimale après une modification dans un tableurRéglez le séparateur décimal sur « virgule »
Des fiches en doubleImport refait sans colonne idGardez toujours la colonne id ; archivez les doublons
Le conseil de l'expert

Sur un vrai démarrage, je commence toujours par un fichier de deux ou trois lignes. Si le test et l'import sont propres, je lance le fichier complet. Et je garde ce fichier comme référence : c'est lui que je corrige et réimporte, jamais les fiches une par une.

À retenir
  • L'import se lance depuis la liste : engrenage à côté du titre, puis Importer des enregistrements.
  • Vérifiez séparateur, encodage et correspondance de chaque colonne.
  • La colonne id (identifiant externe) permet de réimporter pour mettre à jour, sans doublons.
  • Testez toujours avant d'importer : un import ne s'annule pas d'un clic.
Exercice

Remplissez votre essai avec les données de l'Atelier des Pertuis

Dans votre essai Odoo (leçon 1), importez les deux fichiers fournis, puis prouvez que la colonne id évite les doublons.

Fichier 1contacts-atelier-des-pertuis.csv (8 lignes)
Fichier 2produits-atelier-des-pertuis.csv (8 lignes)
ModificationTéléphone du Restaurant Le Gabut : 05 46 00 00 10
Bonus : personnes à rattacherHugo Martin (gérant, Restaurant Le Gabut) · Léa Bernard (achats, Hôtel des Minimes) · Inès Robin (Boutique Marée Haute) · Paul Girard (Camping Les Salines)
  1. Importez les contacts

    Depuis l'application Contacts. Testez, puis importez.

  2. Importez les produits

    Vérifiez d'abord que l'application Inventaire est activée. Testez, puis importez.

  3. Vérifiez

    Combien de contacts de l'Atelier et combien de produits voyez-vous ? Retrouvez la planche de chêne.

  4. Réimportez

    Changez le téléphone du Restaurant Le Gabut dans le fichier, réimportez, et vérifiez qu'il n'y a toujours qu'un seul restaurant.

  5. Bonus

    Créez un petit fichier qui rattache les quatre personnes à leur société, grâce à une colonne parent_id/id.

Voir le corrigé

Résultat attendu : 8 contacts de l'Atelier (5 clients et 3 fournisseurs), 8 produits, et toujours un seul Restaurant Le Gabut après la réimportation, avec le nouveau numéro.

  1. Contacts

    Ouvrez Contacts, passez en vue liste si besoin, cliquez sur l'engrenage à côté du titre puis sur Importer des enregistrements. Chargez contacts-atelier-des-pertuis.csv. Vérifiez le séparateur (point-virgule) et l'encodage (UTF-8) : l'aperçu doit montrer des noms bien accentués comme « Hôtel des Minimes ». Toutes les colonnes sont reconnues. Cliquez sur Tester : aucun message d'erreur. Cliquez sur Importer.

  2. Produits

    Ouvrez Ventes › Produits › Produits, puis même démarche avec produits-atelier-des-pertuis.csv. Si la colonne is_storable n'a pas de champ, c'est qu'Inventaire n'est pas activé : activez-le, revenez et rechargez le fichier.

  3. Vérification

    Dans Contacts, vous voyez les 8 fiches de l'Atelier, plus votre société et votre propre fiche d'utilisateur, créées avec la base. Côté produits, la liste des Ventes n'en montre que 7 : elle est filtrée par défaut sur les produits qui peuvent être vendus, et la planche de chêne PLA-CH-25 ne se vend pas (sale_ok = 0). Retirez le filtre dans la barre de recherche : les 8 produits apparaissent.

  4. Réimportation

    Ouvrez le fichier des contacts dans un éditeur de texte (ou un tableur, en l'enregistrant ensuite en CSV UTF-8 avec des points-virgules), remplacez 05 46 00 00 01 par 05 46 00 00 10 sur la ligne pertuis_gabut, puis réimportez. Comme l'identifiant pertuis_gabut existe déjà, Odoo met la fiche à jour au lieu d'en créer une deuxième.

  5. Bonus

    Créez un fichier personnes-atelier-des-pertuis.csv avec ces lignes, puis importez-le depuis Contacts :

    idnameparent_id/idfunction
    pertuis_gabut_hugoHugo Martinpertuis_gabutGérant
    pertuis_minimes_leaLéa Bernardpertuis_minimesAchats
    pertuis_maree_inesInès Robinpertuis_maree
    pertuis_salines_paulPaul Girardpertuis_salines

    La colonne parent_id/id correspond au champ Société liée, désigné par son identifiant externe ; function correspond au poste occupé. Ouvrez la fiche du Restaurant Le Gabut : Hugo Martin apparaît dans l'onglet des contacts et adresses, et il reprend l'adresse du restaurant.

Questions fréquentes

Peut-on importer un fichier Excel dans Odoo ?

Oui. Odoo accepte les fichiers CSV et les classeurs Excel ou LibreOffice. Le CSV reste le plus prévisible : pensez à l'enregistrer en UTF-8 pour garder les accents.

Comment annuler un import dans Odoo ?

Il n'y a pas de bouton pour annuler un import. On corrige en réimportant le fichier avec la colonne id, ou on archive les fiches créées par erreur. D'où l'intérêt de toujours cliquer sur Tester avant Importer.

Comment importer mes contacts depuis Gmail ou Outlook ?

Exportez d'abord vos contacts au format CSV depuis votre messagerie, puis importez ce fichier dans l'application Contacts. Odoo vous propose de faire correspondre chaque colonne (nom, email, téléphone) au bon champ.