diff --git a/bucher.lua b/bucher.lua
index 23297178a47f1f595e85cabab32275c66b0c6271..607997eb4103816ab1dac2de09b7408808cbaa47 100644
--- a/bucher.lua
+++ b/bucher.lua
@@ -72,36 +72,23 @@ end
 -- \brief Couper les arbres tout en avançant le long d'une ligne
 -- \param int   distance  Nombre de blocs à parcourir
 -- \return bool Succès
-function RSI_Bucheron:moveChop(distance)
-    --TODO: Implémenter
-    local success = true
-    local traveled = 0
-
-    self:chopTree()
-    self.base_:ground()
-    self.base_:climb()
-
-    while (traveled < distance) and turtle.forward()
-    do
-        self:chopTree()
-        self.base_:ground()
-        self.base_:climb()
-        self:chopTree()
-
-        traveled = traveled + 1
+function RSI_Bucheron:maintainFuelLevels()
+    if (turtle.getFuelLevel() < FUEL_LOW)
+    then
+        return self.base_:refuelUntil(FUEL_FULL, SLOT_ENDERCHEST_FUEL)
     end
+    return true
+end
 
-    if self.facing_ == 0 then
-        self.base_.pos_["x"] = self.base_.pos_["x"] + traveled
-    elseif self.base_.facing_ == 3 then
-        self.base_.pos_["z"] = self.base_.pos_["z"] + traveled
-    elseif self.base_.facing_ == 6 then
-        self.base_.pos_["x"] = self.base_.pos_["x"] - traveled
-    elseif self.base_.facing_ == 9 then
-        self.base_.pos_["z"] = self.base_.pos_["z"] - traveled
+---
+-- \brief Si l'inventaire est plein, le vider dans le enderchest prévu pour
+-- \return bool Succès
+function RSI_Bucheron:manageInventory()
+    if ( self.base_:inventoryFull(SLOT_STORAGE_START, SLOT_STORAGE_END) )
+    then
+        return self.base_:dumpInventory(SLOT_STORAGE_START, SLOT_STORAGE_END,
+                                        SLOT_ENDERCHEST_DUMP)
     end
-
-    return (traveled == distance)
 end
 
 
@@ -117,36 +104,15 @@ function RSI_Bucheron:chopArea(lines, cols)
     assert(lines >= 1)
     assert(cols >= 1)
 
-    -- La ligne de la case de départ compte comme 1
-    lines = lines - 1
-
-    self.base_:ground()
-    self:chopTree()
+    action = function ()
+        self:maintainFuelLevels()
+        self:manageInventory()
+        turtle.select(SLOT_STORAGE_START)
 
-    for i=1,cols,1
-    do
-        print("Debut de colonne.")
-        success = self:moveChop(lines) -- FIXME: Remplacer moveForward par moveChop
-        self.base_:ground()
-        self.base_:climb()
-
-        if not success
-        then
-            return success
-        end
-
-        if ( (i%2) == 0 )
-        then
-            success = self.base_:left(true)
-            self.base_:turnLeft()
-        else
-            success = self.base_:right(true)
-            self.base_:turnRight()
-        end
         self:chopTree()
-
     end
-    return success
+    return self.base_:goThroughAreaGrounded(lines, cols, action)
+
 end
 
 
diff --git a/rsiTurtle.lua b/rsiTurtle.lua
index 5b1b15654e27c50c2d0f0a909171e5bd09ec028a..a4f28ebcb4888ef86e70ebb01b67bc0e5b036349 100644
--- a/rsiTurtle.lua
+++ b/rsiTurtle.lua
@@ -739,14 +739,14 @@ function RSI_Turtle:dumpInventory(firstSlot, lastSlot, dumpChestSlot)
     turtle.select(dumpChestSlot)
     success = turtle.place()
     if (not success) then return false end
-    
+
     for i=firstSlot, lastSlot, 1
     do
         turtle.select(i)
         success = turtle.drop() or (turtle.getItemCount() == 0)
         if (not success) then return false end
     end
-    
+
     -- Ramasser le coffre
     turtle.select(dumpChestSlot)
     success = self:dig()
diff --git a/test.lua b/test.lua
index 9a2714ac0f457850e7cc8fc89515919d991c137c..5c38fa971ca9ec8779a9d74a746812473d3b666a 100644
--- a/test.lua
+++ b/test.lua
@@ -176,8 +176,8 @@ end
 --print("Test chopTree")
 --assert(b:chopTree())
 
---print("Test chopArea")
---assert(b:chopArea(15, 20))
+print("Test chopArea")
+assert(b:chopArea(15, 20))
 
 --print("Test moveToOriginGounded")
 --b.base_:moveTo(5,5,5)
@@ -186,9 +186,9 @@ end
 --print("Test goThroughVolume")
 --assert(t:goThroughVolume(4,3,3, turtle.digDown))
 
-print("Test excavateArea")
-assert(e:excavateArea(4,4))
-assert(e.base_:moveToOrigin())
+--print("Test excavateArea")
+--assert(e:excavateArea(4,4))
+--assert(e.base_:moveToOrigin())
 
 --print("Test excavateVolumeDown")
 --assert(e:excavateVolumeDown(10,10,1))