Problem to read the Received message in GSM Shield (SIM900)

Hello,

I have a problem to read the message and the number, when i receive a message in my GSM Shield,
I want to display them (number and message) on the Terminal

I’m sorry for my english,
Can you help me please, and thanks to all,

This is the code and I have not finished the code yet:

#include <SoftwareSerial.h>
SoftwareSerial sim(7, 8); // Port entrer et sortie 
int tempOut, vert=2, rouge=4;
String _buffer;
String numero = "+33787######"; //-> Numero de telephone
void setup() {
 delay(5000); //Delais de 5 seconds pour laisser le bouclier GSM capter le signal reseau
 Serial.begin(9600);
  pinMode(vert, OUTPUT);
  pinMode(rouge, OUTPUT);
 _buffer.reserve(50);
 Serial.println("Système démarré...");
 digitalWrite(rouge,HIGH);
 sim.begin(9600);
 delay(7000);
 Serial.println("tape e pour envoyer un SMS, r pour recevoir un SMS, et a pour faire un appel");
}
void loop() {
 if (Serial.available() > 0)
       digitalWrite(vert,LOW);
       digitalWrite(rouge,HIGH);
   switch (Serial.read())
   {
     case 'e':
       Serial.println("e");
       envoiMessage();
       break;
     case 'r':
       Serial.println("r");
       recevoirMessage();
       break;
     case 'a':
       Serial.println("a");
       appel();
       break;
   }
 if (sim.available() > 0)
   Serial.write(sim.read());
}
void envoiMessage()
{
 Serial.println ("Envoyer MSG a: "+ numero);
 sim.println("AT+CMGF=1");    // Définit le module GSM en mode texte
 delay(1000);
 sim.println("AT+CMGS=\"" + numero + "\"\r"); //Numéro de téléphone portable pour envoyer un message
 delay(1000);
 String SMS = "Hello, how are you?";
 sim.println(SMS);
 delay(100);
 sim.println((char)26);
 delay(1000);
 _buffer = _readSerial();
}
void recevoirMessage()
{
 Serial.println ("SIM900 lire un SMS");
 delay (10000);
 sim.println("AT+CNMI=2,2,0,0,0"); // AT Command pour recevoir un SMS en direct
 sim.println("AT+CMGF=1");
  delay(1000);
 Serial.write ("non lu Message");
}
String _readSerial() {
 tempOut = 0;
 while  (!sim.available() && tempOut < 12000  )
 {
   delay(13);
   tempOut++;
 }
 if (sim.available()) {
   return sim.readString();
 }
}
void appel() {
 sim.print (F("ATD"));
 sim.print (numero);
 sim.print (F(";\r\n"));
 _buffer = _readSerial();
 Serial.println(_buffer);
}

I have a problem

Are we supposed to guess what the problem is?