diff --git a/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java b/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java
index 4d38f1f0d7b078b7a5511cae8186bc47f2b122cf..b59ca6dcd6bf07c8762a510dbb938a0a8c65928b 100644
--- a/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java
+++ b/src/main/java/fr/univlille/sae/classification/controller/AddDataController.java
@@ -12,11 +12,11 @@ import javafx.stage.Stage;
 
 import java.io.IOException;
 import java.lang.reflect.Array;
+import java.text.ParseException;
 import java.time.temporal.Temporal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.function.UnaryOperator;
+import java.util.regex.Pattern;
 
 /**
  * Controlleur pour le FXML add-data-stage, pour ajouter une nouvelle donnée
@@ -67,6 +67,22 @@ public class AddDataController {
                                         0.5
                                 );
                         doubleSpinner.setValueFactory(valueFactory);
+
+                        TextField editor = doubleSpinner.getEditor();
+
+                        // On bloque la siasi de texte autre que des chiffres dans le spinner
+                        Pattern validDoublePattern = Pattern.compile("-?\\d*(\\.\\d*)?");
+                        UnaryOperator<TextFormatter.Change> filter = change -> {
+                            String newText = change.getControlNewText();
+                            if (validDoublePattern.matcher(newText).matches()) {
+                                return change;
+                            }
+                            return null;
+                        };
+
+                        TextFormatter<String> textFormatter = new TextFormatter<>(filter);
+                        editor.setTextFormatter(textFormatter);
+
                         hbox.getChildren().add(doubleSpinner);
                         components.add(doubleSpinner);
                     }
@@ -81,6 +97,22 @@ public class AddDataController {
                                         1
                                 );
                         integerSpinner.setValueFactory(valueFactory);
+
+                        TextField editor = integerSpinner.getEditor();
+
+                        Pattern validIntegerPattern = Pattern.compile("-?\\d*");
+                        UnaryOperator<TextFormatter.Change> filter = change -> {
+                            String newText = change.getControlNewText();
+                            if (validIntegerPattern.matcher(newText).matches()) {
+                                return change;
+                            }
+                            return null;
+                        };
+
+                        // Appliquer le TextFormatter au TextField du Spinner
+                        TextFormatter<String> textFormatter = new TextFormatter<>(filter);
+                        editor.setTextFormatter(textFormatter);
+
                         hbox.getChildren().add(integerSpinner);
                         components.add(integerSpinner);
                     }
@@ -130,16 +162,27 @@ public class AddDataController {
                 return null;
             }).toArray();
 
+            System.out.println("State in");
+
             System.out.println(Arrays.toString(values));
             ClassificationModel.getClassificationModel().ajouterDonnee(values);
-        }catch (IllegalArgumentException e){
-            Alert alert = new Alert(Alert.AlertType.ERROR);
-            alert.setTitle("Erreur");
-            alert.setHeaderText(null);
-            alert.setContentText(e.getMessage());
-            alert.showAndWait();
+        }catch (NumberFormatException e) {
+            openErrorStage(e, "Erreur, les données ne respecte pas le format specifié");
+        }catch (IllegalArgumentException e) {
+            openErrorStage(e);
         }
         stage.close();
     }
+    private void openErrorStage(Exception e, String message) {
+        Alert alert = new Alert(Alert.AlertType.ERROR);
+        alert.setTitle("Erreur - " + e.getClass());
+        alert.setHeaderText(null);
+        alert.setContentText(message);
+        alert.showAndWait();
+    }
+
+    private void openErrorStage(Exception e) {
+        openErrorStage(e, e.getMessage());
+    }
 
 }
diff --git a/src/main/java/fr/univlille/sae/classification/model/PointFactory.java b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java
index 63a1bc9c834ef4beeb0636bfd5a4d9bbcf45e437..8ad78269be099af7cd9fe955b22a6b679fba5f5d 100644
--- a/src/main/java/fr/univlille/sae/classification/model/PointFactory.java
+++ b/src/main/java/fr/univlille/sae/classification/model/PointFactory.java
@@ -1,5 +1,6 @@
 package fr.univlille.sae.classification.model;
 
+import java.text.ParseException;
 import java.util.Arrays;
 
 /**