Migration PrestaShop vers Sylius : le guide pas à pas

Guide pas à pas : migration des données de PrestaShop vers Sylius

Dans un projet de passage de PrestaShop à Sylius, la migration des données constitue l'étape la plus critique. Cet article détaille les méthodes et outils recommandés pour transférer vos données en toute sécurité.

Sommaire

Une idée, un projet ?

Nous sommes à votre disposition pour discuter.

Contactez-nous

Sommaire

Vue d'ensemble des outils disponibles

Plusieurs solutions existent pour migrer vos données de PrestaShop vers Sylius. Chacune répond à des besoins différents et nous allons les voir en détail.

1. Plugin Jgrasp Sylius PrestaShop Migration

Le plugin jgrasp est un outil open source disponible sur Packagist. Il permet de migrer automatiquement les principales entités PrestaShop vers Sylius via des commandes console.

Version actuelle : 0.5.2 Licence : MIT Compatibilité : PHP 8.0+, Sylius 1.10+

2. BitBag PrestaShop Sylius Migrator

BitBag a développé un outil propriétaire de migration, utilisé pour leurs projets clients. Cet outil couvre les trois domaines principaux : commandes, clients et catalogue produits.

L'outil BitBag inclut :

  • Exportation par lots en arrière-plan depuis PrestaShop
  • Test d'importation pour détecter les conflits
  • Importation finale vers Sylius
  • Détection des doublons (numéros de commande, SKU, emails clients)

3. FriendsOfSylius Import Export Plugin

Le plugin FriendsOfSylius permet d'importer et exporter des données via CSV. Utile pour des migrations partielles ou des imports complémentaires.

Prérequis techniques

Avant de commencer la migration, assurez-vous de disposer de :

Infrastructure

  • [ ] Environnement Sylius installé et fonctionnel (version 1.10 minimum)
  • [ ] Accès complet à la base de données PrestaShop
  • [ ] Espace disque suffisant (2 à 3 fois la taille des données PrestaShop)
  • [ ] PHP 8.0 ou supérieur
  • [ ] Composer installé

Sauvegardes complètes

  • [ ] Backup complet de la base de données PrestaShop (mysqldump)
  • [ ] Sauvegarde du répertoire /img (images produits)
  • [ ] Sauvegarde des fichiers téléchargeables (/download)
  • [ ] Export des configurations personnalisées

Accès et permissions

  • [ ] Accès SSH au serveur
  • [ ] Droits d'écriture dans le répertoire Sylius
  • [ ] Connexion réseau entre les deux bases de données

Méthode 1 : migration avec le plugin Jgrasp (la recommandation ACSEO)

Cette méthode utilise l'outil open source le plus complet disponible pour la migration PrestaShop vers Sylius. Voici les différentes étapes à suivre.

Étape 1 : installation du plugin

Installez le plugin via Composer dans votre projet Sylius :

composer require jgrasp/sylius-prestashop-migration-plugin

Étape 2 : activation du bundle

Ajoutez le plugin dans config/bundles.php :

<?php

return [
    // ... autres bundles
    Jgrasp\PrestashopMigrationPlugin\PrestashopMigrationPlugin::class => ['all' => true],
];

Étape 3 : configuration de la connexion PrestaShop

Créez ou modifiez le fichier .env.local pour ajouter la connexion à votre base PrestaShop :

# .env.local
PRESTASHOP_DATABASE_URL="mysql://user:password@host:3306/prestashop_db"

Paramètres :

  • user : utilisateur MySQL PrestaShop
  • password : mot de passe MySQL
  • host : hôte de la base de données (localhost ou IP serveur)
  • prestashop_db : nom de la base de données PrestaShop

Étape 4 : configuration Doctrine DBAL

Ajoutez une connexion nommée dans config/packages/doctrine.yaml :

# config/packages/doctrine.yaml
doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                url: '%env(resolve:DATABASE_URL)%'
            prestashop:
                url: '%env(resolve:PRESTASHOP_DATABASE_URL)%'

Étape 5 : configuration du plugin

Créez le fichier de configuration config/packages/prestashop_migration.yaml :

# config/packages/prestashop_migration.yaml
prestashop_migration:
    public_dir: '%kernel.project_dir%/public'
    connection: 'prestashop'
    product_image_url: 'https://votre-ancien-site.com/img/p/'

Paramètres :

  • public_dir : répertoire public de Sylius où seront copiées les images
  • connection : nom de la connexion Doctrine configurée à l'étape précédente
  • product_image_url : URL complète du répertoire images PrestaShop

Étape 6 : adaptation des entités

Le plugin nécessite que votre entité ProductVariant implémente une interface spécifique.

Modifiez src/Entity/Product/ProductVariant.php :

<?php

declare(strict_types=1);

namespace App\Entity\Product;

use Doctrine\ORM\Mapping as ORM;
use Jgrasp\PrestashopMigrationPlugin\Entity\Product\ProductVariantInterface;
use Sylius\Component\Core\Model\ProductVariant as BaseProductVariant;

#[ORM\Entity]
#[ORM\Table(name: 'sylius_product_variant')]
class ProductVariant extends BaseProductVariant implements ProductVariantInterface
{
    // Le plugin ajoutera automatiquement les propriétés nécessaires
}

Générez la migration pour mettre à jour le schéma :

bin/console doctrine:migrations:diff
bin/console doctrine:migrations:migrate

Étape 7 : exécution de la migration

Le plugin propose plusieurs commandes de migration. Vous pouvez migrer chaque type de données séparément ou tout migrer d'un coup.

Commandes disponibles

# Voir toutes les commandes disponibles
bin/console list prestashop:migration

Liste des commandes :

CommandeDescription
prestashop:migration:localeMigre les langues
prestashop:migration:currencyMigre les devises
prestashop:migration:countryMigre les pays
prestashop:migration:channelMigre les boutiques (channels)
prestashop:migration:addressMigre les adresses
prestashop:migration:customerMigre les clients
prestashop:migration:admin_userMigre les administrateurs
prestashop:migration:productMigre les produits et variantes
prestashop:migration:product:imagesMigre les images produits
prestashop:migration:allMigre toutes les entités dans l'ordre

Ordre d'exécution recommandé

L'ordre d'exécution est important car certaines entités dépendent d'autres. Voici l'ordre recommandé :

# 1. Configuration de base
bin/console prestashop:migration:locale
bin/console prestashop:migration:currency
bin/console prestashop:migration:country
bin/console prestashop:migration:channel

# 2. Clients et adresses
bin/console prestashop:migration:customer
bin/console prestashop:migration:address

# 3. Catalogue produits
bin/console prestashop:migration:product
bin/console prestashop:migration:product:images

# 4. Administrateurs (optionnel)
bin/console prestashop:migration:admin_user

Migration complète automatique

Pour migrer toutes les données en une seule commande :

bin/console prestashop:migration:all

ATTENTION : Cette commande supprime et recrée complètement la base de données Sylius. Ne jamais utiliser sur un environnement de production.

Étape 8 : vérification post-migration

Après l'exécution des commandes, vérifiez que les données ont été migrées correctement :

# Vérifier le nombre de produits
bin/console sylius:debug:resource product

# Vérifier le nombre de clients
bin/console sylius:debug:resource customer

# Lister les channels
bin/console sylius:debug:channel

Accédez également au back-office Sylius pour vérifier visuellement :

  • Les produits avec leurs variantes
  • Les images associées
  • Les catégories
  • Les clients

Étape 9 : migration des images

La migration des images produits nécessite une étape spécifique :

bin/console prestashop:migration:product:images

Cette commande :

  1. Télécharge les images depuis product_image_url configuré
  2. Les copie dans le répertoire /public/media/image de Sylius
  3. Associe chaque image au produit correspondant

Temps estimé : Variable selon le nombre et la taille des images (peut prendre plusieurs heures pour de gros catalogues).

Méthode 2 : migration manuelle via export/import CSV

Pour des migrations partielles ou si vous souhaitez plus de contrôle, utilisez une approche CSV. Voici les différentes étapes à suivre :

Étape 1 : export depuis PrestaShop

PrestaShop propose une fonctionnalité d'export native dans le back-office.

Pour exporter les produits :

  1. Connectez-vous au back-office PrestaShop
  2. Allez dans Catalogue > Produits
  3. Cliquez sur Exporter (icône en haut à droite)
  4. Téléchargez le fichier CSV

Pour exporter les clients :

  1. Allez dans Clients > Clients
  2. Cliquez sur Exporter
  3. Téléchargez le fichier CSV

Vous pouvez également exporter directement depuis la base de données :

-- Export des produits actifs
SELECT
    p.id_product,
    p.reference,
    pl.name,
    pl.description,
    p.price,
    p.wholesale_price,
    p.active,
    ps.quantity
FROM ps_product p
LEFT JOIN ps_product_lang pl ON p.id_product = pl.id_product
LEFT JOIN ps_stock_available ps ON p.id_product = ps.id_product
WHERE pl.id_lang = 1
INTO OUTFILE '/tmp/products.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Étape 2 : installation du plugin FriendsOfSylius ImportExport

composer require friendsofsylius/sylius-import-export-plugin

Activez le bundle dans config/bundles.php :

FriendsOfSylius\SyliusImportExportPlugin\FOSSyliusImportExportPlugin::class => ['all' => true],

Étape 3 : transformation du format CSV

Le CSV PrestaShop ne correspond pas exactement au format attendu par Sylius. Vous devez transformer les données.

Mapping des colonnes produits :

PrestaShopSyliusTransformation
id_productcodePréfixer : PROD_ + id
referencevariant.codeUtiliser tel quel
nametranslations[locale].namePar langue
descriptiontranslations[locale].descriptionPar langue
pricechannelPricings[channel].priceConvertir en centimes
activeenabled1 = true, 0 = false
quantityvariant.onHandUtiliser tel quel

Exemple de CSV Sylius attendu :

code,enabled,name,description,price,stock
TSHIRT-001,1,"T-Shirt Rouge","Description du t-shirt",1999,50
TSHIRT-002,1,"T-Shirt Bleu","Description du t-shirt",1999,30

Étape 4 : import dans Sylius

Le plugin FriendsOfSylius permet d'importer via l'interface d'administration ou en ligne de commande.

Via l'interface :

  1. Connectez-vous au back-office Sylius
  2. Allez dans Configuration > Import
  3. Sélectionnez le type de ressource (Product, Customer, etc.)
  4. Uploadez votre fichier CSV
  5. Lancez l'import

Via la ligne de commande :

bin/console sylius:import product your-products.csv

Méthode 3 : scripts SQL personnalisés

Pour des migrations très spécifiques ou des volumétries importantes, des scripts SQL directs peuvent être nécessaires. Voici les différentes étapes de mise en place.

Étape 1 : analyse du schéma PrestaShop

Identifiez les tables principales à migrer :

Tables produits :

  • ps_product : informations produit
  • ps_product_lang : traductions
  • ps_product_attribute : combinaisons (variantes)
  • ps_stock_available : stocks
  • ps_image : images
  • ps_category_product : associations catégories

Tables clients :

  • ps_customer : comptes clients
  • ps_address : adresses
  • ps_orders : commandes

Tables catégories :

  • ps_category : catégories
  • ps_category_lang : traductions catégories

Étape 2 : analyse du schéma Sylius

Identifiez les tables cibles dans Sylius :

Tables produits :

  • sylius_product : produits
  • sylius_product_translation : traductions
  • sylius_product_variant : variantes
  • sylius_channel_pricing : prix par canal
  • sylius_product_image : images
  • sylius_product_taxon : associations catégories

Tables clients :

  • sylius_customer : clients
  • sylius_shop_user : comptes utilisateurs
  • sylius_address : adresses
  • sylius_order : commandes

Tables taxonomies (catégories) :

  • sylius_taxon : catégories
  • sylius_taxon_translation : traductions

Étape 3 : script de migration produits

Exemple de script SQL pour migrer les produits simples (sans variantes) :

-- Migration des produits dans sylius_product
INSERT INTO sylius_product (code, created_at, updated_at)
SELECT
    CONCAT('PROD_', p.id_product) as code,
    p.date_add as created_at,
    p.date_upd as updated_at
FROM ps_product p
WHERE p.active = 1;

-- Migration des traductions produits
INSERT INTO sylius_product_translation (translatable_id, name, slug, description, locale)
SELECT
    sp.id,
    pl.name,
    LOWER(REPLACE(pl.link_rewrite, '-', '_')) as slug,
    pl.description,
    CASE pl.id_lang
        WHEN 1 THEN 'fr_FR'
        WHEN 2 THEN 'en_US'
    END as locale
FROM ps_product p
INNER JOIN sylius_product sp ON sp.code = CONCAT('PROD_', p.id_product)
INNER JOIN ps_product_lang pl ON p.id_product = pl.id_product
WHERE p.active = 1;

-- Migration des variantes (une variante par défaut pour les produits simples)
INSERT INTO sylius_product_variant (product_id, code, on_hand, created_at, updated_at)
SELECT
    sp.id,
    CONCAT('VAR_', p.id_product),
    COALESCE(ps.quantity, 0) as on_hand,
    p.date_add,
    p.date_upd
FROM ps_product p
INNER JOIN sylius_product sp ON sp.code = CONCAT('PROD_', p.id_product)
LEFT JOIN ps_stock_available ps ON p.id_product = ps.id_product
WHERE p.active = 1;

-- Migration des prix (en supposant un channel par défaut avec id=1)
INSERT INTO sylius_channel_pricing (product_variant_id, channel_code, price, original_price)
SELECT
    spv.id,
    'default',
    ROUND(p.price * 100) as price,  -- Conversion en centimes
    NULL as original_price
FROM ps_product p
INNER JOIN sylius_product sp ON sp.code = CONCAT('PROD_', p.id_product)
INNER JOIN sylius_product_variant spv ON spv.product_id = sp.id
WHERE p.active = 1;

Attention : Ces scripts sont des exemples. Vous devrez les adapter selon :

  • La version de PrestaShop (les tables peuvent varier)
  • La configuration de Sylius (channels, locales)
  • Vos besoins spécifiques (attributs personnalisés, etc.)

Étape 4 : script de migration clients

-- Migration des clients
INSERT INTO sylius_customer (email, email_canonical, first_name, last_name, gender, created_at, updated_at)
SELECT
    c.email,
    LOWER(c.email) as email_canonical,
    c.firstname,
    c.lastname,
    CASE c.id_gender
        WHEN 1 THEN 'm'
        WHEN 2 THEN 'f'
        ELSE 'u'
    END as gender,
    c.date_add,
    c.date_upd
FROM ps_customer c
WHERE c.active = 1 AND c.deleted = 0;

-- Migration des comptes utilisateurs (shop_user)
INSERT INTO sylius_shop_user (customer_id, username, username_canonical, enabled, password, created_at, updated_at)
SELECT
    sc.id,
    c.email,
    LOWER(c.email),
    1,
    c.passwd,  -- ⚠️ Attention au format de hash
    c.date_add,
    c.date_upd
FROM ps_customer c
INNER JOIN sylius_customer sc ON sc.email = c.email
WHERE c.active = 1 AND c.deleted = 0;

Important sur les mots de passe : PrestaShop et Sylius n'utilisent pas le même algorithme de hachage. Vous avez deux options :

  1. Forcer une réinitialisation de mot de passe pour tous les clients
  2. Développer un encodeur personnalisé compatible avec l'ancien hash PrestaShop

Gestion des cas complexes

Migration des produits avec variantes

PrestaShop utilise le concept de "combinaisons" tandis que Sylius utilise des "variantes" avec des options.

Structure PrestaShop :

Produit : T-Shirt
  └─ Combinaisons :
      - Taille S, Couleur Rouge
      - Taille M, Couleur Rouge
      - Taille L, Couleur Bleu

Structure Sylius :

Product : T-Shirt
  ├─ Options :
  │   ├─ Taille (S, M, L)
  │   └─ Couleur (Rouge, Bleu)
  └─ Variantes :
      - Variant 1 : S + Rouge
      - Variant 2 : M + Rouge
      - Variant 3 : L + Bleu

La migration nécessite :

  1. Créer les ProductOption (Taille, Couleur)
  2. Créer les ProductOptionValue (S, M, L, Rouge, Bleu)
  3. Créer une ProductVariant par combinaison
  4. Associer les ProductOptionValue à chaque variante

Le plugin Jgrasp gère automatiquement cette logique.

Migration des catégories (taxonomies)

PrestaShop utilise des catégories, Sylius utilise des "taxons" (taxonomies).

Correspondance :

  • ps_category → sylius_taxon
  • ps_category_lang → sylius_taxon_translation
  • ps_category_product → sylius_product_taxon

Le plugin Jgrasp ne migre pas automatiquement les catégories dans la version actuelle. Vous devrez utiliser un script personnalisé ou une migration manuelle.

Migration des commandes

La migration des commandes historiques est optionnelle mais recommandée pour conserver l'historique client.

Données à migrer :

  • Commandes (orders)
  • Lignes de commande (order items)
  • Adresses de facturation/livraison
  • États de commande
  • Paiements
  • Expéditions

Le plugin Jgrasp ne gère pas actuellement les commandes. BitBag propose cette fonctionnalité dans son outil propriétaire.

Tests et validation

Tests de cohérence des données

Après la migration, vérifiez la cohérence entre PrestaShop et Sylius :

-- Comparer le nombre de produits actifs
-- PrestaShop
SELECT COUNT(*) FROM ps_product WHERE active = 1;

-- Sylius
SELECT COUNT(*) FROM sylius_product WHERE enabled = 1;

-- Comparer le nombre de clients
-- PrestaShop
SELECT COUNT(*) FROM ps_customer WHERE active = 1 AND deleted = 0;

-- Sylius
SELECT COUNT(*) FROM sylius_customer;

Tests fonctionnels

Vérifiez manuellement dans le back-office Sylius :

  • [ ] Les produits s'affichent correctement
  • [ ] Les images sont présentes
  • [ ] Les prix sont corrects (attention conversion centimes)
  • [ ] Les stocks correspondent
  • [ ] Les clients peuvent se connecter
  • [ ] Les catégories sont bien organisées
  • [ ] Les traductions fonctionnent

Tests de performance

Comparez les performances avant/après migration :

# Test de charge avec Apache Bench
ab -n 1000 -c 10 https://votre-site-sylius.com/

# Monitoring des requêtes lentes
bin/console debug:doctrine:queries

Gestion des erreurs courantes

Erreur : "Duplicate entry for key 'UNIQ_email'"

Cause : Emails clients en double dans PrestaShop 
Solution : Nettoyer les doublons avant migration

-- Identifier les doublons
SELECT email, COUNT(*)
FROM ps_customer
GROUP BY email
HAVING COUNT(*) > 1;

-- Garder uniquement le client le plus récent
DELETE c1 FROM ps_customer c1
INNER JOIN ps_customer c2
WHERE c1.id_customer < c2.id_customer
AND c1.email = c2.email;

Erreur : "Foreign key constraint fails"

Cause : Ordre d'insertion incorrect Solution : Respecter l'ordre de migration recommandé (locales → currencies → countries → channels → products → customers)

Images non migrées

Causes possibles :

  • URL product_image_url incorrecte
  • Permissions insuffisantes sur /public/media
  • Timeout sur le téléchargement

Solution :

# Vérifier les permissions
chmod -R 775 public/media

# Relancer la migration images avec timeout plus long
php -d max_execution_time=3600 bin/console prestashop:migration:product:images

Caractères spéciaux mal encodés

Cause : Encodage différent entre PrestaShop (latin1) et Sylius (utf8) Solution : Convertir l'encodage de la base PrestaShop avant migration

-- Convertir une table en UTF-8
ALTER TABLE ps_product_lang CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Checklist complète de migration

Préparation (J-7)

  • [ ] Backup complet PrestaShop (BDD + fichiers)
  • [ ] Installation environnement Sylius de staging
  • [ ] Installation plugin de migration
  • [ ] Configuration connexion BDD PrestaShop
  • [ ] Test de connexion réussi

Migration de test (J-3)

  • [ ] Migration locales et devises
  • [ ] Migration channels
  • [ ] Migration produits (échantillon 100 produits)
  • [ ] Migration images
  • [ ] Migration clients (échantillon 100 clients)
  • [ ] Vérification cohérence données
  • [ ] Tests fonctionnels basiques

Migration complète (J-1)

  • [ ] Freeze du catalogue PrestaShop (mode maintenance)
  • [ ] Export final des données PrestaShop
  • [ ] Migration complète vers Sylius staging
  • [ ] Vérification exhaustive des données
  • [ ] Tests de charge
  • [ ] Validation métier

Mise en production (Jour J)

  • [ ] Mise en maintenance du site PrestaShop
  • [ ] Migration finale des données
  • [ ] Configuration DNS vers Sylius
  • [ ] Tests post-migration
  • [ ] Levée de la maintenance
  • [ ] Monitoring renforcé

Estimation des temps de migration

Les temps varient selon les volumétries :

VolumétrieProduitsClientsTemps estimé
Petit< 1 000< 5 0002-4 heures
Moyen1 000 - 10 0005 000 - 50 0004-8 heures
Important10 000 - 50 00050 000 - 200 0008-24 heures
Très important> 50 000> 200 00024-48 heures

Facteurs influençant la durée :

  • Nombre d'images à migrer
  • Complexité des produits (variantes)
  • Connexion réseau entre serveurs
  • Puissance du serveur

Bonnes pratiques

Avant la migration

  1. Nettoyer les données PrestaShop
    • Supprimer les produits obsolètes
    • Dédoublonner les clients
    • Archiver les anciennes commandes
    • Optimiser les images
  2. Planifier une fenêtre de maintenance
    • Choisir une période de faible activité
    • Informer les clients en avance
    • Prévoir une marge de sécurité (2x le temps estimé)
  3. Tester sur un environnement isolé
    • Ne jamais tester en production
    • Utiliser une copie récente des données
    • Valider avec les équipes métier

Pendant la migration

  1. Surveiller les logstail -f var/log/dev.log
  2. Documenter les anomalies
    • Noter les erreurs rencontrées
    • Conserver les requêtes SQL personnalisées
    • Prendre des screenshots
  3. Valider au fur et à mesure
    • Vérifier après chaque étape
    • Ne pas attendre la fin pour tester

Après la migration

  1. Tests de non-régression
    • Parcours clients complets
    • Commandes de test
    • Vérification emails
  2. Formation des équipes
    • Back-office Sylius
    • Nouveaux processus
    • Outils de gestion
  3. Monitoring renforcé
    • Erreurs 500
    • Performance
    • Taux de conversion

Conclusion

La migration des données de PrestaShop vers Sylius demande rigueur et méthodologie. L'utilisation du plugin Jgrasp permet d'automatiser 80% du travail pour les données standards. Les 20% restants (catégories, commandes, données spécifiques) nécessitent souvent des développements sur mesure.

Chez ACSEO, on recommande systématiquement une migration en trois phases :

  1. Phase de test : migration partielle pour valider le process
  2. Phase de recette : migration complète en staging avec validation métier
  3. Phase de production : bascule finale avec plan de rollback

Cette approche progressive limite les risques et permet d'ajuster la stratégie en fonction des résultats observés.


Sources et références


Dans le prochain article de la série "Migration de PrestaShop vers Sylius", nous traiterons de la migration du thème et de l'intégration front-end, en détaillant comment recréer l'expérience utilisateur PrestaShop dans Sylius avec Twig et les bonnes pratiques Symfony.

Publié le 09/04/2026 à 19:14
Pour continuer votre lecture
Guide pas à pas : migration des données de PrestaShop vers Sylius
Depuis plusieurs mois, ACSEO industrialise un workflow IA qui transforme la manière d'intégrer et de développer des Frontends. Le résultat…
Guide pas à pas : migration des données de PrestaShop vers Sylius
Depuis plusieurs mois, on a intégré Claude Code avec le protocole MCP Figma dans notre chaîne de production, pour transformer…
Guide pas à pas : migration des données de PrestaShop vers Sylius
Chaque année, la communauté Symfony se réunit à Paris pour échanger au sujet du framework qui dessine une grande partie…
Pour continuer votre lecture
Guide pas à pas : migration des données de PrestaShop vers Sylius
Depuis plusieurs mois, ACSEO industrialise un workflow IA qui transforme la manière d'intégrer et de développer des Frontends. Le résultat…
Guide pas à pas : migration des données de PrestaShop vers Sylius
Depuis plusieurs mois, on a intégré Claude Code avec le protocole MCP Figma dans notre chaîne de production, pour transformer…
Guide pas à pas : migration des données de PrestaShop vers Sylius
Chaque année, la communauté Symfony se réunit à Paris pour échanger au sujet du framework qui dessine une grande partie…
Une idée, un projet ? Nous sommes à votre disposition pour discuter. Contactez-nous