Salut,
Le code que j'ai proposé est tout à fait fonctionnel je pense que l'erreur doit provenir de la fonction de génération de ligne.

Voici un bout de code (testé sous IE6 et Firefox) :
<script type="text/javascript">
function FindID(id)
{
if(document.layers)
return document.layersid;
if(document.all && !document.getElementById)
return document.allid;
if(document.all && document.getElementById)
return document.getElementById(id);
if(!document.all && document.getElementById)
return document.getElementById(id);
}
function addRow(id)
{
var table = FindID(id); //table = document.getElementById(id)
var lastRow = table.rows.length;
var row = table.insertRow(lastRow);
//création de la première ligne
//cellule 1
var cell1 = row.insertCell(0);
cell1.onclick = function () {alert('click detecte');};
var cell1Text = document.createTextNode('1');
cell1.appendChild(cell1Text);
//cellule 2
var cell2 = row.insertCell(1);
cell2.ondblclick = function () {alert('double click detecte');};
var cell2Text = document.createTextNode('2');
cell2.appendChild(cell2Text);
//cellule 3
var cell3 = row.insertCell(2);
cell3.ondblclick = function() {changeEtatCase(this);};
var cell3Text = document.createTextNode('3');
cell3.appendChild(cell3Text);
}
function changeEtatCase(cellule)
{
element = cellule; //On récupère la cellule qui a été double-cliquée
element.innerHTML = '<input type="text" id="saisie" onblur="afficheSaisie(this.value,element);" />'; //Affichage d'un champ text pour la saisie
alert(element.innerHTML); //Pour les tests ci-dessus
setTimeout(function(){document.getElementById('saisie').focus();},100);
}
</script>
<table id=maTable style="border: 1px solid black;">
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<input type="button" onclick="addRow('maTable')" value="addRow"/>
Henri