diff --git a/src/LIB/Python/Panel_Plot.py b/src/LIB/Python/Panel_Plot.py
index b2f04b53ca69eae68a40eca69199cd4987049ce6..f063e48c7f6c0a96f4762e4378ab6567525c1113 100644
--- a/src/LIB/Python/Panel_Plot.py
+++ b/src/LIB/Python/Panel_Plot.py
@@ -315,7 +315,7 @@ class PanelPlot():
       """
         XY (multiple)-lines plot
         Arguments :
-            - Lzz    : List of z coordinates variable [1D]
+            - Lzz    : List of z coordinates variable [1D] #TODO : Renommer argument Lvar en Lxx et Lzz en Lyy et ajouter Lfacconv pour les deux axes. Impact tous les cas test avec lignes X/Y
             - Lvar   : List of variables to plot [1D]
             - Lxlab  : List of x-axis label
             - Lylab  : List of y-axis label
diff --git a/src/LIB/Python/read_MNHfile.py b/src/LIB/Python/read_MNHfile.py
index 4279599fb48fb9c67ffc640c157c3088462d163f..5158f4b67218b64a16fb1e4335f993aed85ed249 100644
--- a/src/LIB/Python/read_MNHfile.py
+++ b/src/LIB/Python/read_MNHfile.py
@@ -143,47 +143,87 @@ def read_TIMESfiles_54(theFile, ifile, Dvar_input, Dvar_output):
     return Dvar_output #Return the dic of [files][variables]
 
 def read_TIMESfiles_55(theFile, ifile, Dvar_input, Dvar_output, removeHALO=False):
+    """
+        Read variables from MNH MASDEV >= 5.5.0 
+        Parameters :
+            - Dvar_input : dictionnary of {file : var}. var can be either 
+                - a string = the variable name 
+                - or a tuple of ('group_name','var_name')
+                If the variable desired is in a group_name and the group_name is not specified, it is assumed group_name = variable_name
+            except for specific variable as (cart, neb, clear, cs1, cs2, cs3) type
+        Return :
+        Dvar_output : dictionnary of Dvar_output[ifile][variables or tuple (group,variables) if the user specified a tuple]
+    """
     Dvar_output[ifile] = {} #initialize dic for each files 
-      
-    for var in Dvar_input[ifile]: #For each var
+    def read_var(theFile, Dvar_output, var):
         suffix, var_name = remove_PROC(var)
-
         try: #  NetCDF4 Variables
             n_dim = theFile.variables[var_name].ndim
             #  First, test if the variable is a dimension/coordinate variable
             if (n_dim ==0):  #  Scalaires variable
-                Dvar_output[ifile][var_name] = theFile.variables[var_name][0].data
+                Dvar_output[var_name] = theFile.variables[var_name][0].data
             else:
                 if(removeHALO):
                     if n_dim == 1:
-                        Dvar_output[ifile][var_name] = theFile.variables[var_name][1:-1]
+                        Dvar_output[var_name] = theFile.variables[var_name][1:-1]
                     elif n_dim == 2:
-                        Dvar_output[ifile][var_name] = theFile.variables[var_name][1:-1,1:-1] 
+                        Dvar_output[var_name] = theFile.variables[var_name][1:-1,1:-1] 
                     else: 
                         raise NameError("Lecture des variables de dimension sup a 2 pas encore implementees pour fichiers .000")
                 else:
                     if n_dim == 1:
-                        Dvar_output[ifile][var_name] = theFile.variables[var_name][:]
+                        Dvar_output[var_name] = theFile.variables[var_name][:]
                     elif n_dim == 2:
-                        Dvar_output[ifile][var_name] = theFile.variables[var_name][:,:] 
+                        Dvar_output[var_name] = theFile.variables[var_name][:,:] 
                     else: 
                         raise NameError("Lecture des variables de dimension sup a 2 pas encore implementees pour fichiers .000")
-        except KeyError: # NetCDF4 Group
-            if theFile.groups[var_name].type == 'TLES' : #LES type
-                #  Build the true name of the groups.variables :
-                whites = ' '*(17 - len('(cart)') - len(var_name)) #  TODO : a adapter selon le type de la variable cart ou autres
-                Dvar_output[ifile][var] = theFile.groups[var].variables[var + whites + '(cart)'][:,:].T
-            elif theFile.groups[var_name].type == 'CART':  #  Budget CART type
-                shapeVar = theFile.groups[var_name].variables[suffix].shape
-                Ltosqueeze=[] #  Build a tuple with the number of the axis which are 0 dimensions to be removed by np.squeeze
-                if shapeVar[0]==1: Ltosqueeze.append(0)
-                if shapeVar[1]==1: Ltosqueeze.append(1)
-                if shapeVar[2]==1: Ltosqueeze.append(2)
-                if shapeVar[3]==1: Ltosqueeze.append(3)
-                Ltosqueeze=tuple(Ltosqueeze)
-                Dvar_output[ifile][var_name] = np.squeeze(theFile.groups[var_name].variables[suffix][:,:,:,:], axis=Ltosqueeze) 
+        except KeyError: # NetCDF4 Group not specified by the user
+            if '(cart)' in var_name or '(neb)' in var_name or '(clear)' in var_name or '(cs1)' in var_name or '(cs2)' in var_name or '(cs3)' in var_name:
+            # If users specify the complete variable name with averaging type
+              group_name = get_group_from_varname(var_name)
             else:
-                raise NameError("Type de groups variables not implemented in read_MNHfile.py")
+              group_name = var_name
+            read_from_group(theFile, Dvar_output, var, var)
+        return Dvar_output
+
+    def read_from_group(theFile, Dvar_output, group_name, var):
+        suffix, var_name = remove_PROC(var)
+        if group_name == 'TSERIES': #always 1D
+            Dvar_output[(group_name,var)] = theFile.groups['TSERIES'].variables[var][:]
+        elif group_name == 'ZTSERIES': #always 2D 
+            Dvar_output[(group_name,var)] = theFile.groups['ZTSERIES'].variables[var][:,:].T
+        elif 'XTSERIES' in group_name: #always 2D
+            Dvar_output[(group_name,var)] = theFile.groups[group_name].variables[var][:,:].T
+        elif theFile.groups[group_name].type == 'TLES' : #  LES type
+            try: #By default, most variables read are 2D cart and user does not specify it in the variable name
+              whites = ' '*(17 - len('(cart)') - len(var_name))
+              Dvar_output[var] = theFile.groups[var].variables[var + whites + '(cart)'][:,:].T
+            except:
+              try: #Variable 3D sv,time_les, level_les
+                  Dvar_output[var] = theFile.groups[group_name].variables[var][:,:,:]
+              except:
+                try: #Variable 2D with type of variable specified (cart, neb, clear, cs1, cs2, cs3) 
+                  Dvar_output[var] = theFile.groups[group_name].variables[var][:,:].T
+                except ValueError: #  Variable 1D
+                  Dvar_output[var] = theFile.groups[group_name].variables[var][:]
+        elif theFile.groups[group_name].type == 'CART':  #  Budget CART type
+            shapeVar = theFile.groups[group_name].variables[suffix].shape
+            Ltosqueeze=[] #  Build a tuple with the number of the axis which are 0 dimensions to be removed by np.squeeze
+            if shapeVar[0]==1: Ltosqueeze.append(0)
+            if shapeVar[1]==1: Ltosqueeze.append(1)
+            if shapeVar[2]==1: Ltosqueeze.append(2)
+            if shapeVar[3]==1: Ltosqueeze.append(3)
+            Ltosqueeze=tuple(Ltosqueeze)
+            Dvar_output[group_name] = np.squeeze(theFile.groups[group_name].variables[suffix][:,:,:,:], axis=Ltosqueeze) 
+        else:
+            raise NameError("Type de groups variables not implemented in read_MNHfile.py")
+        return Dvar_output
+    for var in Dvar_input[ifile]: #For each var
+        if type(var) == tuple:
+            Dvar_output[ifile] = read_from_group(theFile, Dvar_output, var[0], var[1])
+        else:
+            Dvar_output[ifile] = read_var(theFile, Dvar_output, var)
+    
     return Dvar_output #Return the dic of [files][variables]
 
 def list_size1(n_dim, named_dim):
@@ -198,7 +238,7 @@ def list_size1(n_dim, named_dim):
 def remove_PROC(var):
     if '___PROC' in var:
         var_name = var[:-8]
-        suffix = "" # No need of suffix for MNHVERSION < 550 (suffix is for NetCDF4 group
+        suffix = "" # No need of suffix for MNHVERSION < 550 (suffix is for NetCDF4 group)
     elif  '___ENDF' in var or '___INIF' in var or '___AVEF' in var:
         var_name = var[:-7]
         suffix = var[-4:]
@@ -206,3 +246,12 @@ def remove_PROC(var):
         var_name = var
         suffix = ''
     return suffix, var_name
+
+def get_group_from_varname(var):
+    group_name=''
+    for i in range(len(var)):
+      if var[i] is not ' ':
+        group_name+=var[i]
+      else: # As soon as the caracter is a blank, the group variable is set
+        break
+    return group_name