Une nouvelle fois, un énorme merci pour le temps que tu as passé sur mon problème.....
tes remarques sont super claires et efficaces, ce langage, votre dispo et votre facilité me bluffe toujours !
En fait, je découvre un peu ce langage et ose pas condenser à ce point, ça me fait toujours bizarre de mixer décalage d'un entier long, conversion en byte plus d'autres choses sur une même ligne de code..... 
Merci pour les liens, je me rends d'ailleurs compte que la base que j'avais trouvée est issue de celui vers les versions I2C, (la variante de gestion par page m'aurait d'ailleurs certainement évité mes soucis 
J'ai donc essayé de suivre tes conseils et faire un peu mieux que ma première version 
pour mon problème :
je n'avais volontairement pas traité " calcul ", le but était de le visualiser pour vérifier que les données source soient identiques aux données écrites.
Après pas mal de recherches, je me suis rendu compte que les appels consécutifs à ma routine d'écritures génèrent un fonctionnement aléatoire, à moins d'introduire un temps d'attente > 3ms entre chacun.
J'ai donc ajouté un delay(5) après chaque écriture et depuis plus de problèmes .......
Merci encore à toi et les animateurs de ce forum,
la version qui fonctionne là-dessous, pour ceux que ça pourrais intéresser,
(me reste à injecter tout ça dans mon code et vite finir mes mesures de température....)
#include <Wire.h> //I2C library
#include <LiquidCrystal_I2C.h>
#define ad_ROM_1_I2C 0x50
// définition des adresses I2C
// Afficheur LCD a l'address 36Dec configure avec 20 car sur 4 lignes
LiquidCrystal_I2C lcd(0x24,20,4);
// variables a sauvegarder dans l'EEPROM
unsigned int AI_C1[] = {1234,5678,200,210,220,230,240,250,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,1,2,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535};
// routine d'ecriture de byte individuel dans l'EEPROM
// lui passer l'adresse, donnee, elle l'ecrit
void i2c_eeprom_write_byte(unsigned int eeaddress, byte data )
{
Wire.beginTransmission(ad_ROM_1_I2C);
Wire.write((int)(eeaddress >> 8)); // envoi du MSB de l'adresse
Wire.write((int)(eeaddress & 0xFF)); // envoi du LSB de l'adresse
Wire.write(data); //écriture de l'octet
Wire.endTransmission();
delay(5);// les écritures consécutives trop rapide mettent leur fiabilité en vrac (marche a partir de 3ms)
}
// routine de lecture de byte individuel dans l'EEPROM
// lui passer l'adresse, elle rend le byte correspondant
byte i2c_eeprom_read_byte(unsigned int eeaddress )
{
byte rdata = 0xFF;
Wire.beginTransmission(ad_ROM_1_I2C);
Wire.write((int)(eeaddress >> 8)); // envoi du MSB de l'adresse
Wire.write((int)(eeaddress & 0xFF)); // envoi du LSB de l'adresse
Wire.endTransmission();
Wire.requestFrom(ad_ROM_1_I2C,1);
if (Wire.available()) rdata = Wire.read(); //lecture de l'octet adressé
return rdata;
}
void setup()
{
Wire.begin(); // Init port I2C
lcd.init(); // initialisation du lcd
lcd.backlight();
Serial.begin(9600);
unsigned int AdrBaseEeprom =0; //adresse de l'EEPROM démarre à 0
for (int i=0; i<(sizeof(AI_C1) / sizeof(unsigned int)); i++) // boucle de balayage de la table
{
unsigned int temp = AI_C1[i];
i2c_eeprom_write_byte(AdrBaseEeprom++, (AI_C1[i] >> 8) & 0xFF); // écriture MSB
i2c_eeprom_write_byte(AdrBaseEeprom++, AI_C1[i] & 0xFF); // écriture LSB
lcd.clear();
lcd.setCursor(0,0);
lcd.print("MAJ");
lcd.setCursor(0,1);
lcd.print("EEPROM");
}
}
void loop()
{
//Lecture de l'EEPROM
unsigned int AdrBaseEeprom =0; //adresse de l'EEPROM démarre à 0
for (int i=0; i<(sizeof(AI_C1) / sizeof(unsigned int)); i++) // boucle de balayage de la table
{
byte b = i2c_eeprom_read_byte(AdrBaseEeprom++); // chrgt MSB
byte c = i2c_eeprom_read_byte(AdrBaseEeprom++); // chrgt LSB
// ligne a supprimer et remplacer par celle en commentaire dans version operationnelle
unsigned int calcul = ((unsigned int)b << 8) | c; // reconstitution INT
// AI_C1[i] = ((unsigned int)b << 8) | c; // reconstitution INT et MAJ
// sert a rien, a part verifier de visu que ce qui est écrit correspond aux valeurs qu'on a ecrit
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Valeur lue EEPROM ");
lcd.setCursor(0,1);
lcd.print(calcul); // affiche Int calculé
lcd.setCursor(0,2);
lcd.print("Valeur Org ");
lcd.setCursor(0,3);
lcd.print(AI_C1[i]);// affiche variable de base
delay(1000);
}
}