Un grand merci J-M-L, je peux maintenant faire ma vérification ! 
Voici mon code, adapté du votre :
#define SIM800_RESET_PIN 77
#define PWKEY 6
const char * NETWORK_REGISTRATION_STR = "AT+CREG=1\r\r\nOK\r\n";
const char * TEXT_MODE_STR = "AT+CMGF=1\r\r\nOK\r\n";
const char * INIT_HTTP_STR = "AT+HTTPINIT\r\r\nOK\r\n";
const char * HTTP_SESSION_STR ="AT+HTTPPARA=\"CID\",1\r\r\nOK\r\n";
// --------------------------------------
// waitForString wait max for duration ms
// while checking if endMarker string is received
// on the GSM Serial port
// returns a boolean stating if the marker
// was found
// --------------------------------------
boolean waitForString(const char * endMarker, unsigned long duration)
{
int localBufferSize = strlen(endMarker); // we won't need an \0 at the end
char localBuffer[localBufferSize];
int index = 0;
boolean endMarkerFound = false;
unsigned long currentTime;
memset(localBuffer, '\0', localBufferSize); // clear buffer
currentTime = millis();
while (millis() - currentTime <= duration) {
if (Serial1.available() > 0) {
if (index == localBufferSize) index = 0;
localBuffer[index] = (uint8_t) Serial1.read();
Serial.print(localBuffer[index]);
endMarkerFound = true;
for (int i = 0; i < localBufferSize; i++) {
if (localBuffer[(index + 1 + i) % localBufferSize] != endMarker[i]) {
endMarkerFound = false;
break;
}
}
index++;
}
if (endMarkerFound) break;
}
if (endMarkerFound == 1){
Serial.println("Good answer received !");
}else {
Serial.println("Bad answer...");
}
return endMarkerFound;
}
// --------------------------------------
// gsmATCommand executes an AT commmand
// checks if endMarker string is received
// on the GSM Serial port for max duration ms
// returns a boolean stating if the marker
// was found
// --------------------------------------
boolean gsmATCommand(const char * command, const char * endMarker, unsigned long duration)
{
Serial1.println(command);
return waitForString(endMarker, duration);
}
void setup(){
Serial.begin(9600); while (!Serial);
Serial1.begin(9600); while (!Serial1);
// Pin definitionpinMode(SIM800_RESET_PIN, OUTPUT);
pinMode(PWKEY, OUTPUT);
digitalWrite(PWKEY, HIGH);
delay(1000);
digitalWrite(SIM800_RESET_PIN, LOW);
delay(100);
digitalWrite(SIM800_RESET_PIN, HIGH);
delay(2000);
Serial.println("Sending AT+CREG=1...");
// Network registration
gsmATCommand("AT+CREG=1", NETWORK_REGISTRATION_STR, 1000);
delay(1000);
Serial.println("Sending AT+CMGF=1...");
// Set GSM to text mode
gsmATCommand("AT+CMGF=1",TEXT_MODE_STR, 1000);
delay(1000);
Serial.println("Sending AT+HTTPINIT...");
// Initialize HTTP
gsmATCommand("AT+HTTPINIT",INIT_HTTP_STR, 1000);
delay(1000);
Serial.println("Sending AT+HTTPPARA=\"CID\",1...");
// Set HTTP session
gsmATCommand("AT+HTTPPARA=\"CID\",1",HTTP_SESSION_STR, 1000);
}
void loop(){
}
Je me suis demandé s'il n'était pas tout autant bien de vérifier la réponse complète, ça mange pas de pain ! Même si attendre "OK\r\n" devrait être suffisant en théorie. Dites moi si l'ensemble vous parait valide.
C'est fou, je n'y croyais plus !
Voila de quoi illustrer un peu :
Sending AT+CREG=1...
AT+CREG=1
OK
Good answer received !
Sending AT+CMGF=1...
+CPIN: READY
+CREG: 2
AT+CMGF=1
OK
Good answer received !
Sending AT+HTTPINIT...
AT+HTTPINIT
OK
Good answer received !
Sending AT+HTTPPARA="CID",1...
Call Ready
AT+HTTPPARA="CID",1
OK
Good answer received !
On remarque bien que les URC ne faussent plus la vérification 
Comme vous pouvez le voir j'essaye quelques commandes pour la partie HTTP.
J'aurais quelques conseils à vous demander pour débuter ce pan de mon projet.
J'essaye de trouver un moyen de communiquer avec mon module GSM via une interface web pour pouvoir contrôler toute ma maquette à distance, au delà des quelques commandes que vous avez pu me voir essayer j'ignore comment m'y prendre...
Faut-il que je fasse un nouveau topic pour traiter cette question ?
Merci encore !!