Convertir un entier en nom de colonne sous Microsoft Excel

Pour un développement professionnel sous Delphi, j’ai eu besoin de pouvoir convertir un entier en nom de colonne sous Microsoft Excel (typique une série de lettre en majuscule).

Donc, j’ai fait chauffer mes petites cellules grises pour produire ceci:

function MakeExcelColumnName(AValue: integer): string;
const
  ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  DIVISEUR = 26;
begin
  Result := '';
 
  if AValue > 0 then
  begin
    if AValue <= DIVISEUR then
      Result := ALPHABET[AValue] 
    else 
    while Avalue > 0 do
    begin
      Result := ALPHABET[AValue mod DIVISEUR] + Result;
      AValue := AValue div DIVISEUR;
    end;
  end;
end;

Quelques explications sur la routine, je fait un premier test pour savoir si la valeur d’entrée est bien supérieur a zéro (vu que dans un chaine de caractères comme l’est ALPHABET) la première valeur a comme index 1.

Ensuite, le deuxième test est fait pour gagner du temps en évitant de rentrer inutilement dans la boucle WHILE DO si la valeur en entrée est inférieur ou égale a 26 (qui est bien entendu la limite maximum de la chaine ALPHABET).

La boucle finale est la pour exploiter la fonction MODULO du langage PASCAL OBJET (que l’on trouve dans Delphi ou dans LAZARUS).
Continuer la lecture de « Convertir un entier en nom de colonne sous Microsoft Excel »