diff --git a/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.cxx b/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.cxx
index c3f6016436a4185c39032bf566309d81330e53a0..4690e5fb56484732ffa005135e1a7365301ed2e5 100644
--- a/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.cxx
+++ b/Code/Wrappers/CommandLine/otbWrapperCommandLineLauncher.cxx
@@ -152,6 +152,14 @@ CommandLineLauncher::BeforeExecute()
     if ( this->LoadParameters() != OKPARAM )
       {
         std::cerr<<"ERROR: troubles loading parameter, please check your line argument..."<<std::endl;
+        std::cerr<<"ERROR:"<< this->LoadParameters()<<std::endl;
+        std::cerr<<OKPARAM<<std::endl;
+        std::cerr<<MISSINGMANDATORYPARAMETER<<std::endl;
+        std::cerr<<MISSINGPARAMETERVALUE<<std::endl;
+        std::cerr<<WRONGPARAMETERVALUE<<std::endl;
+        std::cerr<<INVALIDNUMBEROFVALUE<<std::endl;
+        std::cerr<<DEFAULT<<std::endl;
+
         // Force to reload the application, the LoadParameters can change wrong values
         this->LoadApplication();
         this->DisplayHelp();
@@ -261,14 +269,16 @@ CommandLineLauncher::LoadParameters()
     {
       std::vector<std::string> values;
       Parameter::Pointer param =  paramGr->GetParameterByIndex(i);
+      const std::string paramKey(param->GetKey());
+      const bool paramExists( m_Parser->IsAttributExists( std::string("--").append(paramKey), m_Expression )  );
       // Check if mandatory parameter are present and have value
       if( param->GetMandatory() == true )
         {
-          if( !m_Parser->IsAttributExists( std::string("--").append(param->GetKey()), m_Expression ) )
+          if( !paramExists )
              {
                return MISSINGMANDATORYPARAMETER;
              }
-           values = m_Parser->GetAttribut( std::string("--").append(param->GetKey()), m_Expression);
+           values = m_Parser->GetAttribut( std::string("--").append(paramKey), m_Expression);
            if(  values.size() == 0 )
              {
                return MISSINGPARAMETERVALUE;
@@ -277,9 +287,9 @@ CommandLineLauncher::LoadParameters()
       // Check if non mandatory parameter have values
       else
         {
-          if( m_Parser->IsAttributExists( std::string("--").append(param->GetKey()), m_Expression ) )
+          if( paramExists )
             {
-              values = m_Parser->GetAttribut( std::string("--").append(param->GetKey()), m_Expression);
+              values = m_Parser->GetAttribut( std::string("--").append(paramKey), m_Expression);
               if(  values.size() == 0 )
                 {
                   return MISSINGPARAMETERVALUE;
@@ -287,43 +297,47 @@ CommandLineLauncher::LoadParameters()
             }
         }
 
-   
-      ParameterType type = m_Application->GetParameterType( param->GetKey());
-      // List values parameter case
-      if( type == ParameterType_InputImageList )
-        {
-          dynamic_cast<InputImageListParameter *>(param.GetPointer())->SetListFromFileName( values );
-        }
-      else if( type == ParameterType_StringList )
+      // If the param is optionnal and hasn't been set : don't do anything
+      if( paramExists )
         {
-          dynamic_cast<StringListParameter *>(param.GetPointer())->SetValue( values );
-        }
-      else  if( values.size() != 1)
-        {
-          return INVALIDNUMBEROFVALUE;
-        }
-
-      // Single value parameter
-   
-      if( type == ParameterType_Choice || type == ParameterType_Float || type == ParameterType_Int || type == ParameterType_Radius
-          || type == ParameterType_Directory || type == ParameterType_String || type == ParameterType_Filename || type == ParameterType_InputComplexImage
-          || type == ParameterType_InputImage || type == ParameterType_InputVectorData || type == ParameterType_OutputImage || type == ParameterType_OutputVectorData )
-        {
-          m_Application->SetParameterString( param->GetKey(), values[0] );
-        }
-      else if( type == ParameterType_Empty )
-        {
-          if( values[0] == "1" || values[0] == "true")
+          ParameterType type = m_Application->GetParameterType( paramKey );
+          // List values parameter case
+          if( type == ParameterType_InputImageList )
             {
-              dynamic_cast<EmptyParameter *>(param.GetPointer())->SetActive(true);
+              dynamic_cast<InputImageListParameter *>(param.GetPointer())->SetListFromFileName( values );
             }
-          else if( values[0] == "0" || values[0] == "false")
+          else if( type == ParameterType_StringList )
             {
-              dynamic_cast<EmptyParameter *>(param.GetPointer())->SetActive(false);
+              dynamic_cast<StringListParameter *>(param.GetPointer())->SetValue( values );
             }
-          else
+          else  if( values.size() != 1)
             {
-              return WRONGPARAMETERVALUE;
+              std::cout<<values.size()<<std::endl;
+              std::cout<<paramKey <<std::endl;
+              return INVALIDNUMBEROFVALUE;
+            }
+          
+          // Single value parameter
+          if( type == ParameterType_Choice || type == ParameterType_Float || type == ParameterType_Int || type == ParameterType_Radius
+              || type == ParameterType_Directory || type == ParameterType_String || type == ParameterType_Filename || type == ParameterType_InputComplexImage
+              || type == ParameterType_InputImage || type == ParameterType_InputVectorData || type == ParameterType_OutputImage || type == ParameterType_OutputVectorData )
+            {
+              m_Application->SetParameterString( paramKey, values[0] );
+            }
+          else if( type == ParameterType_Empty )
+            {
+              if( values[0] == "1" || values[0] == "true")
+                {
+                  dynamic_cast<EmptyParameter *>(param.GetPointer())->SetActive(true);
+                }
+              else if( values[0] == "0" || values[0] == "false")
+                {
+                  dynamic_cast<EmptyParameter *>(param.GetPointer())->SetActive(false);
+                }
+              else
+                {
+                  return WRONGPARAMETERVALUE;
+                }
             }
         }
     }