   !call  printf
   !nop
 
-  cmp   %l4, %l5                ! Comparer le nombre courant avec le nombre a tester pour s'assurer qu'ils ne sont pas identique
+  cmp   %l4, %l5                ! Comparer le chiffre courant avec le chiffre a tester pour s'assurer qu'ils ne sont pas identique
   be    LigneInvalide
   nop
 
-  inc   %l3                     ! Tester le nombre suivant
+  inc   %l3                     ! Tester le chiffre suivant
 
   cmp   %l3, 9                  ! S'il nous reste des chiffre a tester, on les tests
-  bl    ValiderLignes06
-  nop
-  
-  ba    ValiderLignes05
+  bl    ValiderLignes10
+  nop
+  
+  ba    ValiderLignes08
   nop
 
 
 LigneInvalide:
-  set   redinvalide, %o0      ! Affichage d'un message disant que la ligne est invalide
+  set   redinvalide, %o0        ! Affichage d'un message disant que la ligne est invalide
   call  printf
   nop
 
   call  exit                    ! On quitte le programme
   nop
 
+/*
+    Partie 4 : Validation Colonne par colonne du Sudoku
+    ---------------------------------------------------
+*/
+
 ValiderColonnes00:
+  set   vecteur, %l0        ! Pointeur sur la colonnes courante
+  mov   0, %l1              ! %l1 va servir pour savoir on est rendu sur quelle ligne
+
+  /* start Aff */
+  set   validcolon1, %o0
+  call  printf
+  nop
+  /* end Aff */
+
+  ba    ValiderColonnes02     ! Lancer la validation des colonnes
+  nop
+
+ValiderColonnes02:
+  set   validcolon2, %o0        ! Afficher qu'on valider la colonne courante
+  mov   %l1, %o1
+  call  printf
+  nop
+
+  mov   0, %l2                    ! Compteur du chiffre courant sur la colonne
+  mov   1, %l3                    ! Compteur du chiffre a tester avec le chiffre courant sur la colonne
+
+  ba    ValiderColonnes06         ! Lancer la validation de la colonne
+  nop
+
+ValiderColonnes04:
+  inc   %l1                       ! colonne suivante
+
+  set   vecteur, %l0              ! Déplacer le pointeur du Sudoku sur la prochaine colonne
+  add   %l0, %l1, %l0
+
+  cmp   %l1, 9                    ! Si on a fait le tour du Sudoku, on passe au mode de validation suivant
+  be    FinProgramme
+  nop
+
+  ba    ValiderColonnes02
+  nop
+
+
+ValiderColonnes06:
+  umul  %l2, 9, %l6
+  ldub  [%l0+%l6], %l4          ! Charger le chiffre courant en mémoire
+    
+  cmp   %l4, 0                  ! Le chiffre doit être entre 1 et 9
+  ble   LigneInvalide
+  nop
+
+  cmp   %l4, 10
+  bge   LigneInvalide
+  nop
+
+  ba    ValiderColonnes10         ! Lancer la validation du chiffre courant sur la colonne
+  nop
+
+
+ValiderColonnes08:
+  inc   %l2                     ! Passer au chiffre suivant pour la validation
+  add   %l2, 1, %l3             ! Le chiffre a tester est toujours le chiffre après le chiffre courant (au début de la validation du chiffre courant)
+
+  cmp   %l2, 9                  ! Continuer a valider la colonne si chiffre courant n'est pas le dernier
+  bl    ValiderColonnes06
+  nop
+
+  set   resvalide, %o0      ! Affichage d'un message disant que la colonne est valide
+  call  printf
+  nop
+
+  ba    ValiderColonnes04
+  nop
+
+
+ValiderColonnes10:
+  cmp   %l2, 8
+  bge   ValiderColonnes08
+  nop
+ 
+  umul  %l3, 9, %l6
+  ldub  [%l0+%l6], %l5          ! Charger le chiffre a tester dans le registre l5
+  
+  !set   validation1, %o0        ! Debug INFOS
+  !mov   %l2, %o1
+  !mov   %l4, %o2
+  !mov   %l3, %o3
+  !mov   %l5, %o4
+  !call  printf
+  !nop
+
+  cmp   %l4, %l5                ! Comparer le chiffre courant avec le chiffre a tester pour s'assurer qu'ils ne sont pas identique
+  be    LigneInvalide
+  nop
+
+  inc   %l3                     ! Tester le chiffre suivant
+
+  cmp   %l3, 9                  ! S'il nous reste des chiffre a tester, on les tests
+  bl    ValiderColonnes10
+  nop
+  
+  ba    ValiderColonnes08
+  nop
+
+/*
+    Partie 5 : Validation par bloc
+    ---------------------------------------------------
+*/
+!TODO
+
+
+
+FinProgramme:
   call  exit
   nop
 

  bge   LigneInvalide
  nop

  ba    ValiderLignes06         ! Lancer la validation du nombre courant sur la ligne
  nop


ValiderLignes05:
  inc   %l2                     ! Passer au nombre suivant pour la validation
  add   %l2, 1, %l3             ! Le nombre a tester est toujours le nombre après le nombre courant (au début de la validation du nombre courant)

  cmp   %l2, 9                  ! Continuer a valider la ligne si nombre courant n'est pas le dernier
  bl    ValiderLignes04
  nop

  set   resvalide, %o0      ! Affichage d'un message disant que la ligne est valide
  call  printf
  nop

  ba    ValiderLignes03
  nop


ValiderLignes06:
  cmp   %l2, 8
  bge   ValiderLignes05
  nop
 
  ldub  [%l0+%l3], %l5          ! Charger le nombre a tester dans le registre l5
  
  !set   validligne3, %o0        ! Debug INFOS
  !mov   %l2, %o1
  !mov   %l4, %o2
  !mov   %l3, %o3

  nop


ValiderLignes06:
  ldub  [%l0+%l2], %l4          ! Charger le chiffre courant en mémoire
    
  cmp   %l4, 0                  ! Le chiffre doit être entre 1 et 9
  ble   LigneInvalide
