diff --git a/src/fr/monlouyan/bakefile/BakefileParser.java b/src/fr/monlouyan/bakefile/BakefileParser.java
index c0a496b..e389578 100644
--- a/src/fr/monlouyan/bakefile/BakefileParser.java
+++ b/src/fr/monlouyan/bakefile/BakefileParser.java
@@ -137,42 +137,47 @@ public class BakefileParser {
 	 * @param input Chaîne à traiter
 	 * @return Chaîne avec les variables remplacées
 	 */
-    private String replaceVariables(String input) {
-        if (input == null) return null;
-        
-        String result = input;
-        Set<String> processedVars = new HashSet<>();
-        boolean changed;
-        
-        do {
-            changed = false;
-            Matcher matcher = VARIABLE_REFERENCE.matcher(result);
-            StringBuffer sb = new StringBuffer();
-            
-            while (matcher.find()) {
-                String varName = matcher.group(1) != null ? matcher.group(1) : matcher.group(2);
-                if (!processedVars.contains(varName) && variables.containsKey(varName)) {
-                    String replacement = variables.get(varName);
-                    matcher.appendReplacement(sb, Matcher.quoteReplacement(replacement));
-                    changed = true;
-                    processedVars.add(varName);
-                }
-            }
-            matcher.appendTail(sb);
-            result = sb.toString();
-            
-            // Si aucun changement n'a été fait dans ce passage, arrêter
-            if (!changed) {
-                break;
-            }
-            
-            // Réinitialiser processedVars pour le prochain passage si nécessaire
-            processedVars.clear();
-            
-        } while (changed);
-        
-        return result.trim();
-    }
+	private String replaceVariables(String input) {
+		if (input == null) return null;
+		
+		String result = input;
+		Set<String> processedVars = new HashSet<>();
+		boolean changed;
+		
+		do {
+			changed = false;
+			Matcher matcher = VARIABLE_REFERENCE.matcher(result);
+			StringBuffer sb = new StringBuffer();
+			
+			while (matcher.find()) {
+				String varName = matcher.group(1) != null ? matcher.group(1) : matcher.group(2);
+				// Modification ici: remplacer par la valeur de la variable ou par une chaîne vide si elle n'existe pas
+				String replacement = "";
+				if (variables.containsKey(varName)) {
+					replacement = variables.get(varName);
+				} else if (BakeCLI.isDebug()) {
+					System.out.println("Debug: Variable '" + varName + "' not defined, replacing with empty string");
+				}
+				
+				matcher.appendReplacement(sb, Matcher.quoteReplacement(replacement));
+				changed = true;
+				processedVars.add(varName);
+			}
+			matcher.appendTail(sb);
+			result = sb.toString();
+			
+			// Si aucun changement n'a été fait dans ce passage, arrêter
+			if (!changed) {
+				break;
+			}
+			
+			// Réinitialiser processedVars pour le prochain passage si nécessaire
+			processedVars.clear();
+			
+		} while (changed);
+		
+		return result.trim();
+	}
 
 	/**
 	 * Remplacer les variables dans une liste de chaînes.
@@ -328,11 +333,25 @@ public class BakefileParser {
                         // Ajuster i pour sauter les lignes traitées (moins 1 car la boucle for incrémente i)
                         i += linesUsed - 1;
                     } else {
-                        commands.add(command);
-                        // Pour les commandes simples, créer une liste avec une seule ligne
-                        List<String> singleLineDisplay = new ArrayList<>();
-                        singleLineDisplay.add(line);
-                        displayCommands.add(singleLineDisplay);
+                        String executableCommand = command;
+						commands.add(executableCommand);
+						// Pour l'affichage, préserver le formatage mais remplacer les variables
+						String displayLine = line;
+						// Ne pas modifier les lignes qui commencent par @ (silencieuses)
+						if (command.startsWith("@")) {
+							displayLine = line; // Garder le formatage complet pour les commandes silencieuses
+						} else {
+							// Remplacer les variables dans la partie de la commande uniquement (après la tabulation)
+							Matcher cmdMatcher = COMMAND_PATTERN.matcher(line);
+							if (cmdMatcher.matches()) {
+								String cmdPart = cmdMatcher.group(1);
+								String cmdWithVars = replaceVariables(cmdPart);
+								displayLine = "\t" + cmdWithVars;
+							}
+						}
+						List<String> singleLineDisplay = new ArrayList<>();
+						singleLineDisplay.add(displayLine);
+						displayCommands.add(singleLineDisplay);
                     }
                     continue;
                 }