diff --git a/migrate.php b/migrate.php
index 75ec5da..265871d 100644
--- a/migrate.php
+++ b/migrate.php
@@ -200,16 +200,28 @@ foreach ($families as $f) {
// ==========================================
echo "
Table pf_alloc_categories (Récupération des données) : ";
try {
- $updated1 = $fam_pdo->exec("UPDATE pf_alloc_categories SET transfer_dest = target, target = '0' WHERE target LIKE 'vers %'");
-
- $updated2 = $fam_pdo->exec("UPDATE pf_alloc_categories SET transfer_dest = 'SYSTEM', target = '0' WHERE target = 'SYSTEM'");
-
- $fam_pdo->exec("UPDATE pf_alloc_categories SET target = '0' WHERE target NOT REGEXP '^[0-9]+(\.[0-9]+)?$'");
+ // Vérifier si la colonne target est encore au format texte (VARCHAR)
+ $stmtCol = $fam_pdo->query("SHOW COLUMNS FROM pf_alloc_categories LIKE 'target'");
+ $colInfo = $stmtCol->fetch(PDO::FETCH_ASSOC);
- echo "" . ($updated1 + $updated2) . " destinations récupérées et déplacées.";
-
- $fam_pdo->exec("ALTER TABLE pf_alloc_categories MODIFY target DECIMAL(10,2) DEFAULT 0.00");
- echo "Colonne 'target' re-sécurisée en format monétaire DECIMAL(10,2).";
+ if ($colInfo && strpos(strtolower($colInfo['Type']), 'varchar') !== false) {
+ // 1. Déplacer les textes "vers..."
+ $updated1 = $fam_pdo->exec("UPDATE pf_alloc_categories SET transfer_dest = target, target = '0' WHERE target LIKE 'vers %'");
+
+ // 2. Gérer le mot 'SYSTEM'
+ $updated2 = $fam_pdo->exec("UPDATE pf_alloc_categories SET transfer_dest = 'SYSTEM', target = '0' WHERE target = 'SYSTEM'");
+
+ // 3. Sécurité absolue avant conversion
+ $fam_pdo->exec("UPDATE pf_alloc_categories SET target = '0' WHERE target NOT REGEXP '^[0-9]+(\\\\.[0-9]+)?$'");
+
+ echo "" . ($updated1 + $updated2) . " destinations récupérées et déplacées.
";
+
+ // 4. Remettre la colonne en format numérique
+ $fam_pdo->exec("ALTER TABLE pf_alloc_categories MODIFY target DECIMAL(10,2) DEFAULT 0.00");
+ echo "Colonne 'target' re-sécurisée en format monétaire DECIMAL(10,2).";
+ } else {
+ echo "La colonne 'target' est déjà au format DECIMAL, transfert ignoré.";
+ }
} catch (\PDOException $e) {
echo "Erreur : " . $e->getMessage() . "";
}