diff --git a/make_jar.jardesc b/make_jar.jardesc
index 8ad80c1..1aa63b4 100644
--- a/make_jar.jardesc
+++ b/make_jar.jardesc
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <jardesc>
-    <jar path="PandacraftUtils/jar_export/PandacraftUtils-4.3.jar"/>
+    <jar path="PandacraftUtils/jar_export/PandacraftUtils-4.4.jar"/>
     <options buildIfNeeded="true" compress="true" descriptionLocation="/PandacraftUtils/make_jar.jardesc" exportErrors="true" exportWarnings="true" includeDirectoryEntries="false" overwrite="false" saveDescription="true" storeRefactorings="false" useSourceFolders="false"/>
     <storedRefactorings deprecationInfo="true" structuralOnly="false"/>
     <selectedProjects/>
diff --git a/resources/plugin.yml b/resources/plugin.yml
index f5a9242..584a61a 100644
--- a/resources/plugin.yml
+++ b/resources/plugin.yml
@@ -1,6 +1,6 @@
 name: PandacraftUtils
 main: net.mc_pandacraft.java.plugin.pandacraftutils.PandacraftUtils
-version: 4.3
+version: 4.4
 
 
 
diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/commands/CommandTell.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/commands/CommandTell.java
index 507f0f1..6442ed6 100644
--- a/src/net/mc_pandacraft/java/plugin/pandacraftutils/commands/CommandTell.java
+++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/commands/CommandTell.java
@@ -1,7 +1,13 @@
 package net.mc_pandacraft.java.plugin.pandacraftutils.commands;
 
+import java.text.DateFormat;
+import java.util.List;
+import java.util.Locale;
+
+import mkremins.fanciful.FancyMessage;
 import net.mc_pandacraft.java.plugin.pandacraftutils.modules.PrivateMessagesManager.MessageSender;
 import net.mc_pandacraft.java.plugin.pandacraftutils.modules.PrivateMessagesManager.MessageSendingException;
+import net.mc_pandacraft.java.plugin.pandacraftutils.modules.PrivateMessagesManager.PrivateDiscussion;
 import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayerManager;
 
 import org.bukkit.ChatColor;
@@ -20,11 +26,12 @@ public class CommandTell extends AbstractCommandExecutor {
 			String[] args) {
 		
 		if (args.length == 0 && sender instanceof Player) {
-			plugin.privateMessagesManager.displayUnreadMessages((Player)sender);
+			Player player = (Player) sender;
+			onCommandDiscussionsList(player);
 			return true;
 		}
 		else if (args.length == 0) {
-			sender.sendMessage(ChatColor.RED+"Seul un joueur en ligne peut lire ses messages non lus.");
+			sender.sendMessage(ChatColor.RED+"Seul un joueur en ligne peut voir la liste de ses discussions.");
 			return false;
 		}
 		
@@ -60,5 +67,46 @@ public class CommandTell extends AbstractCommandExecutor {
 	}
 	
 	
+	
+	
+	private void onCommandDiscussionsList(Player player) {
+		List<PrivateDiscussion> lastDiscussions = plugin.privateMessagesManager.getLastDiscussions(player, 5);
+		
+
+		player.sendMessage(ChatColor.GOLD+"--- Messagerie privée - Liste des conversations ---");
+		
+		for (PrivateDiscussion pvd : lastDiscussions) {
+			String name = (pvd.name == null) ?
+					new MessageSender(pvd.name).getDisplayName() :
+					(pvd.name.toLowerCase().startsWith("g:")) ?
+							ChatColor.GOLD+pvd.name.substring(2) :
+							new MessageSender(pvd.name).getDisplayName();
+			
+			String line = name+ChatColor.RESET;
+			
+			int nbM = pvd.nbUnread;
+			
+			if (nbM > 0)
+				line += ChatColor.GRAY+" - "+ChatColor.RED+nbM+" message"+((nbM > 1)?"s":"")+" non lu"+((nbM > 1)?"s":"");
+			
+
+			DateFormat date = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.FRANCE);
+			DateFormat hour = DateFormat.getTimeInstance(DateFormat.MEDIUM, Locale.FRANCE);
+			
+			String affDate = date.format(pvd.timeLastMessage) + " à " + hour.format(pvd.timeLastMessage);
+			
+			line += ChatColor.GRAY+" - "+affDate;
+			
+			
+			new FancyMessage("").then(line).color(ChatColor.GRAY).command("/m d:"+((pvd.name == null)?"null":pvd.name)).send(player);
+			
+		}
+
+		player.sendMessage(ChatColor.GOLD+"Cliquez sur une conversation pour voir les messages");
+		player.sendMessage(ChatColor.GOLD+"----------------------------------------------");
+		
+	}
+	
+	
 
 }
diff --git a/src/net/mc_pandacraft/java/plugin/pandacraftutils/modules/PrivateMessagesManager.java b/src/net/mc_pandacraft/java/plugin/pandacraftutils/modules/PrivateMessagesManager.java
index f6a1186..2f3e37c 100644
--- a/src/net/mc_pandacraft/java/plugin/pandacraftutils/modules/PrivateMessagesManager.java
+++ b/src/net/mc_pandacraft/java/plugin/pandacraftutils/modules/PrivateMessagesManager.java
@@ -24,6 +24,7 @@ import net.mc_pandacraft.java.plugin.pandacraftutils.players.OffPlayer;
 import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayer;
 import net.mc_pandacraft.java.plugin.pandacraftutils.players.OnlinePlayerManager;
 
+import org.apache.commons.lang.NullArgumentException;
 import org.apache.commons.lang.Validate;
 import org.bukkit.Bukkit;
 import org.bukkit.ChatColor;
@@ -262,37 +263,21 @@ public class PrivateMessagesManager extends BukkitRunnable {
 	
 	
 	
+	
+	
+	
+	
 	/**
-	 * 
-	 * @param player le joueur qui veut voir ses messages non lus
-	 * @return vrai si le joueur a bien des messages non lu, faux sinon. Retourne vrai en cas d'erreur lors de la récupération des messages
+	 * Retourne les dernières discussions auquel a participé le joueur passé en paramètre.
+	 * @param p le joueur pour lequel on doit retourner les dernières discussions
+	 * @param nbLastMin le nombre de discussion minimum qui doit être retourné (si il en existe au moins ce nombre minimum)<br/>
+	 * Si le nombre de discussion totale est inférieur ou égale à <i>nbLastMin</i>, aucune suppression n'est faite.<br/>
+	 * Dans le cas contraire, la méthode supprime itérativement la discussion déjà lu la plus ancienne, jusqu'à ce que le nombre de discussion restante
+	 * soit égale à <i>nbLastMin</i> ou jusqu'à ce qu'il ne reste que des discussion non lus.
+	 * @return les discussions, dans l'ordre chronologique inverse des derniers messages de chaque discussions. Plus clairement, la discussion la
+	 * plus récente est placé à l'indice 0 de la liste.
 	 */
-	public boolean displayUnreadMessages(Player player) {
-		try {
-			List<MPMessageElement> messages = ((MPMessageTable)ORM.getTable("mp_message")).getAllUnreadForPlayer(player.getName());
-			if (messages.size() == 0) {
-				player.sendMessage(ChatColor.GRAY+"Vous n'avez pas de messages non lus");
-				return false;
-			}
-			
-			for(MPMessageElement mess : messages)
-				tryDisplayMessage(mess);
-			
-			return true;
-			
-		} catch (SQLException e) {
-			e.printStackTrace();
-			player.sendMessage(ChatColor.RED+"Impossible de lire les messages non lus");
-			return true;
-		}
-	}
-	
-	
-	
-	
-	
-	
-	public List<PrivateDiscussion> getLastDiscussions(Player p, Integer nbLast) {
+	public List<PrivateDiscussion> getLastDiscussions(Player p, Integer nbLastMin) {
 		try {
 			// récupère les messages, triés de la plus vieille à la plus récente
 			List<MPMessageElement> messages = ORM.getTable(MPMessageTable.class).getForPlayer(p.getName(), false, 1000);
@@ -321,9 +306,11 @@ public class PrivateMessagesManager extends BukkitRunnable {
 				
 			}
 			
-			if (nbLast != null && nbLast >= 0) {
-				while (discussionList.size()>nbLast.intValue()) {
-					discussionList.remove(discussionList.size()-1);
+			if (nbLastMin != null && nbLastMin >= 0) {
+				for (int i = discussionList.size()-1; i >= 0 && discussionList.size() > nbLastMin; i--) {
+					if (discussionList.get(i).nbUnread == 0) {
+						discussionList.remove(i);
+					}
 				}
 			}
 			
@@ -342,6 +329,7 @@ public class PrivateMessagesManager extends BukkitRunnable {
 	public class PrivateDiscussion {
 		/**
 		 * Le pseudo du joueur ou du groupe de discussion (avec "g:" devant)
+		 * ou null si il s'agit d'un message système (hors groupe)
 		 */
 		public final String name;
 		public int nbUnread;
@@ -383,6 +371,8 @@ public class PrivateMessagesManager extends BukkitRunnable {
 	 */
 	private void tryDisplayMessage(MPMessageElement message) {
 		
+		if (message == null) throw new NullArgumentException("message doit être non null");
+		
 		try {
 			
 			OffPlayer offP = new OffPlayer(message.getViewerNick());
@@ -546,12 +536,15 @@ public class PrivateMessagesManager extends BukkitRunnable {
 		try {
 			List<MPMessageElement> messages = ((MPMessageTable)ORM.getTable("mp_message")).getAllUnreadForPlayer(event.getPlayer().getName());
 			
-			if (messages.size() == 0) return;
+			int nbMess = messages.size();
+			
+			if (nbMess == 0) return;
+			
 			
 			String[] m = new String[] {
 					ChatColor.GOLD+"--------------- Messagerie privée ---------------",
-					ChatColor.GOLD+"Vous avez "+messages.size()+" message"+((messages.size()>1)?"s":"")+" non lu"+((messages.size()>1)?"s":""),
-					ChatColor.GOLD+"Faites "+ChatColor.GRAY+"/m"+ChatColor.GOLD+" pour voir le"+((messages.size()>1)?"s":"")+" message"+((messages.size()>1)?"s":""),
+					ChatColor.GOLD+"Vous avez "+nbMess+" message"+((nbMess>1)?"s":"")+" non lu"+((nbMess>1)?"s":""),
+					ChatColor.GOLD+"Faites "+ChatColor.GRAY+"/m"+ChatColor.GOLD+" pour voir le"+((nbMess>1)?"s":"")+" message"+((nbMess>1)?"s":""),
 					ChatColor.GOLD+"----------------------------------------------",
 			};