<p>Vous pouvez utiliser les fonctions <code>ROW</code> et <code>COLUMN</code> pour cela. Si vous omettez l’argument de ces formules, la cellule actuelle est utilisée. Celles-ci peuvent être directement utilisées avec <a href="http://support.microsoft.com/kb/324991">la fonction <code>OFFSET</code></a>, ou toute autre fonction où vous pouvez spécifier à la fois la ligne et la colonne sous forme de valeurs numériques.</p>
<p>Par exemple, si vous entrez <code>=ROW()</code> dans la cellule D8, la valeur renvoyée est 8. Si vous entrez <code>=COLUMN()</code> dans la même cellule, la valeur renvoyée est 4.</p>
<p>Si vous voulez la lettre de la colonne, vous pouvez utiliser la fonction <code>CHAR</code>. Je ne recommande pas l’utilisation de lettres pour représenter la colonne, car les choses se compliquent lorsqu’on passe à des noms de colonnes à deux lettres (où l’utilisation de nombres est de toute façon plus logique).</p>
<p>Néanmoins, si vous souhaitez toujours obtenir la lettre de la colonne, vous pouvez simplement ajouter 64 au numéro de colonne (64 étant un caractère de moins que <code>A</code>), donc dans l’exemple précédent, si vous définissez la valeur de la cellule à <code>=CHAR(COLUMN()+64)</code>, la valeur renvoyée serait <code>D</code>. Si vous vouliez que la valeur d’une cellule soit l’emplacement de la cellule elle-même, la formule complète serait <code>=CHAR(COLUMN()+64) & ROW()</code>.</p>
<p>Pour information, j’ai obtenu 64 à partir d’une table ASCII. Vous pourriez également utiliser la formule <code>CODE</code>, donc la formule mise à jour serait <code>=CHAR(COLUMN() + CODE("A") - 1)</code>. Vous devez soustraire 1 puisque la valeur minimale de <code>COLUMN</code> est toujours 1, et alors la valeur de retour minimale de la formule entière serait <code>B</code>.</p>
<p>Cependant, cela ne fonctionnera pas avec les colonnes à deux lettres. Dans ce cas, vous avez besoin de la formule suivante pour analyser correctement les colonnes à deux lettres :</p>
<pre><code class="lang-auto">=IF(COLUMN()>26,IF(RIGHT(CHAR(IF(MOD(COLUMN()-1,26)=0,1,MOD(COLUMN()-1,26))+64),1)="Y",CHAR(INT((COLUMN()-1)/26)+64) & "Z",CHAR(INT((COLUMN()-1)/26)+64) & CHAR(IF(MOD(COLUMN(),26)=0,1,MOD(COLUMN(),26))+64)),CHAR(COLUMN()+64))&ROW()
</code></pre>
<p>Je ne suis pas sûr qu’il existe une façon plus simple de le faire, mais je sais que cela fonctionne de la cellule <code>A1</code> à <code>ZZ99</code> sans aucun problème. Cependant, cela illustre pourquoi il est préférable d’éviter l’utilisation d’identifiants de colonnes basés sur des lettres et de s’en tenir a</p>
<p><em>(Réponse tronquée)</em></p>