Vcc measurement with internal 1.1V reference fails on 3.3V powered Atmega328
Thanks for your answers!
Jot gave the solution: wADC must be a uint16_t.

Here is the corrected code :

void setup() 
{ 
  Serial.begin(9600);
  Serial.println(F("Internal Voltage Sensor"));
}

void loop() 
{ 
  Serial.println(readVcc()); 
  delay(1000); 
} 

long readVcc() 
{
  long voltage=0;
  uint16_t wADC;

  // Read 1.1V reference against AVcc
  // set the reference to Vcc and the measurement to the internal 1.1V reference
  ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  ADCSRA |= _BV(ADEN);  // enable the ADC

  delay(20); // Wait for Vref to settle

  ADCSRA |= _BV(ADSC); // Start conversion
  while (bit_is_set(ADCSRA,ADSC)); // measuring

  // Reading register "ADCW" takes care of how to read ADCL first and ADCH then.
  wADC = ADCW;

  voltage = 1125300L / wADC; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
  return voltage; // Vcc in millivolts
}