diff --git a/.gitignore b/.gitignore
index 3065496c5294eb5cc75f057b2a2b3aa6a6d63009..c29e2c70ccb18ec9a6aca36e39c9baace2c909dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -218,4 +218,5 @@ replay_pid*
 # End of https://www.toptal.com/developers/gitignore/api/jetbrains,intellij,java
 *.Identifier
 
-log.txt
\ No newline at end of file
+log.txt
+/.idea/
diff --git a/src/Main.java b/src/Main.java
index 0a163e39f20b6a777bb4f2d121bc5b3d269dfdbd..1cbf06d437356ea2d010fd17d10cb58ee292079a 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -5,7 +5,6 @@ import java.util.Scanner;
 import java.util.concurrent.TimeUnit;
 
 public class Main {
-
     /**
      * Compter le nombre d'inéquations S.C
      * @param sc scanner
@@ -34,64 +33,65 @@ public class Main {
      * Fonction main
      * @param args arguments en entrées
      */
-    public static void main(String[] args) {
+    public static void main(String[] args) throws Exception {
         long start = System.nanoTime();
-        try {
-            File f = new File("src/input.txt");
-            Scanner sc = new Scanner(f);
-            String[] elements;
-            int widthMat = nbLines(sc);
-            sc = new Scanner(f); // remettre le scanner à la première ligne
-            int contraintes = nbContraintes(sc);
-            sc = new Scanner(f); // remettre le scanner à la première ligne
-            int line = 0;
-            Equation eq = new Equation(widthMat*2, contraintes); // lignes supp au cas où, il y a des "="
+        File f = new File("src/input.txt");
+        Scanner sc = new Scanner(f);
+        String[] elements;
+        int widthMat = nbLines(sc);
+        sc = new Scanner(f); // remettre le scanner à la première ligne
+        int contraintes = nbContraintes(sc);
+        sc = new Scanner(f); // remettre le scanner à la première ligne
+        int line = 0;
+        Equation eq = new Equation(widthMat*2, contraintes); // lignes supp au cas où, il y a des "="
 
-            // Max / Min + function obj
-            String firstLine = sc.nextLine();
-            elements = firstLine.split(";");
-            eq.setFirstLine(elements);
+        // Max / Min + function obj
+        String firstLine = sc.nextLine();
+        elements = firstLine.split(";");
+        eq.setFirstLine(elements);
 
-            // S.C.
-            while (sc.hasNextLine()) {
-                String tmp = sc.nextLine();
-                elements = tmp.split(";");
+        // S.C.
+        while (sc.hasNextLine()) {
+            String tmp = sc.nextLine();
+            elements = tmp.split(";");
 
-                switch (eq.getSens()) {
-                    case "min", "max" ->
-                        // création de l'équation dans le sens min
-                            line = eq.createEq(elements, line);
-                    default -> {
-                        System.err.println("Le sens n'a pas été entré.");
-                        System.exit(1);
-                    }
+            switch (eq.getSens()) {
+                case "min", "max" ->
+                    // création de l'équation dans le sens min
+                        line = eq.createEq(elements, line);
+                default -> {
+                    System.err.println("Le sens n'a pas été entré.");
+                    System.exit(1);
                 }
-                line++;
             }
-            // Print
-            eq.printEq(line);
+            line++;
+        }
+        // Print
+        eq.printEq(line);
 
-            // Tableau initiale
-            Simplex2 spx = new Simplex2(widthMat, line+1, line + 3);
-            spx.createSimplex(eq);
-            spx.printSimplex("Tableau");
+        // Tableau initiale
+        Simplex2 spx = new Simplex2(widthMat, line+1, line + 3);
+        spx.createSimplex(eq);
+        spx.printSimplex("Tableau");
 
-            // true = phase 1 membres de droite pas admissible | false = phase 2 membres de droite admissible
-            int phase = spx.which_phase();
-            if (phase != -1) {
-                /*spx.tabAux(phase);
-                System.out.println("Tableau Auxiliaire:");
-                System.out.println(Arrays.deepToString(spx.getTabAux()));*/
-            }
-            else {
-                spx.pivot();
-                spx.printSimplex("pivot");
-            }
+        // Tableau initiale
+        //Simplex spx = new Simplex(line+1, line + 3, widthMat);
+        //spx.createMatEcart(eq);
+        //spx.printSimplex("Tableau");
 
-            sc.close();
-        } catch (FileNotFoundException e) {
-            throw new RuntimeException(e);
+        // true = phase 1 membres de droite pas admissible | false = phase 2 membres de droite admissible
+        int phase = spx.which_phase();
+        if (phase != -1) {
+            /*spx.tabAux(phase);
+            System.out.println("Tableau Auxiliaire:");
+            System.out.println(Arrays.deepToString(spx.getTabAux()));*/
         }
+        else {
+            spx.pivot();
+            spx.printSimplex("pivot");
+        }
+
+        sc.close();
         long stop = System.nanoTime();
         long duration = TimeUnit.MILLISECONDS.convert(stop - start, TimeUnit.NANOSECONDS);
         System.out.println("Temps d'exécution: " + duration + " ms");
diff --git a/src/Simplex2.java b/src/Simplex2.java
index c84b2870f944d5ccf33b2946e81206b466dcf097..5f3705862760743929d3c6daeb366ae8c78f8af5 100644
--- a/src/Simplex2.java
+++ b/src/Simplex2.java
@@ -19,7 +19,7 @@ public class Simplex2 {
         this.nbLines = nbLines;
         this.x = x;
         this.y = y;
-        this.simplex = new ArrayList<ArrayList<Double>>();
+        this.simplex = new ArrayList<>();
     }
 
     public void printSimplex(String title) {
@@ -51,7 +51,7 @@ public class Simplex2 {
         }
 
         // Membre de droite
-        for (int i = 0; i < x - 1; i ++)
+        for (int i = 0; i < x - 1; i++)
             simplex.get(i).set(y - 1, eq.getRightVec().get(i));
 
         // Fonction obj
@@ -84,10 +84,9 @@ public class Simplex2 {
 
     private int ligneSortante(int y) {
         int id = 0;
-        int i = 0;
         double tmp = simplex.get(id).get(this.y-1) / simplex.get(id).get(y);
-        for (ArrayList<Double> doubles : simplex) {
-             double tmp_s = doubles.get(this.y-1) / doubles.get(y-1);
+        for (int i = 1; i < this.x - 1; i++) {
+             double tmp_s = simplex.get(i).get(this.y -1) / simplex.get(i).get(y);
              if(tmp_s < tmp) {
                  id = i;
                  tmp = tmp_s;
@@ -98,20 +97,27 @@ public class Simplex2 {
     }
 
     void pivot() {
+        // TODO Verif pivot id fausse
         int firstNeg = getFirstNeg();
         if(firstNeg == -1) return;
         boolean has_neg = false;
         int id = ligneSortante(firstNeg);
         double pivot = simplex.get(id).get(firstNeg);
+        ArrayList<Double> tmp = new ArrayList<>();
         for (Double d : simplex.get(id))
-            d /= pivot;
+            tmp.add(d / pivot);
+        simplex.set(id, tmp);
+
+        tmp = new ArrayList<>();
+        int id_tmp = 0;
         for (ArrayList<Double> doubles : simplex) {
             pivot = doubles.get(firstNeg);
             for (Double d : doubles) {
-                if(doubles.indexOf(d) != id) {
-                    d -= pivot * simplex.get(id).get(doubles.indexOf(d));
-                }
+                if(doubles.indexOf(d) != id)
+                    tmp.add(pivot * simplex.get(id).get(doubles.indexOf(d)));
+                id_tmp ++;
             }
+            simplex.set(id_tmp, tmp);
         }
         for (Double d : simplex.get(x-1)) {
             if(signe(d)) {