diff --git a/product/ERP5Type/XMLMatrix.py b/product/ERP5Type/XMLMatrix.py
index 6f9b6541bff343a12fcb980331471ce8e4c1da75..847ea3eb0697df4e77743f96fda1f37fddb929be 100644
--- a/product/ERP5Type/XMLMatrix.py
+++ b/product/ERP5Type/XMLMatrix.py
@@ -75,15 +75,9 @@ class XMLMatrix(Folder):
       if not self.index.has_key(base_id):
         return None
 
-      cell_id_list = [base_id]
-      append = cell_id_list.append
-      index = self.index[base_id]
-      for i, my_id in enumerate(kw):
-        try:
-          append(str(index[i][my_id]))
-        except KeyError:
-          return None
-      cell_id = '_'.join(cell_id_list)
+      cell_id = self.keyToId(kw, base_id = base_id)
+      if cell_id is None:
+        return None
       return self.get(cell_id)
 
     security.declareProtected( Permissions.AccessContentsInformation,
@@ -493,16 +487,10 @@ class XMLMatrix(Folder):
       if not self.index.has_key(base_id):
         return None
 
-      cell_id_list = [base_id]
-
-      base_item = self.index[base_id]
-      try:
-        cell_id_list.extend(base_item[i][my_id] for i, my_id in enumerate(kw))
-      except KeyError:
+      cell_id = self.keyToId(kw, base_id = base_id)
+      if cell_id is None:
         raise KeyError, 'Invalid key: %s' % str(kw)
 
-      cell_id = "_".join(cell_id_list)
-
       cell = self.get(cell_id)
       if cell is not None:
         return cell