base26.psm1
|
function Convert-ExcelStyle { param ( [Parameter(Mandatory = $true)] [string]$inputValue ) if ($inputValue -notmatch '^([A-Z]+)(\d+)$') { throw "Format invalide. Utilisez un format comme 'AB23'" } $letters = $matches[1] $numbers = [int]$matches[2] if ($letters -notmatch '^[A-Z]+$') { throw "Les lettres doivent être entre A et Z uniquement." } if ($letters.Length -gt 3) { throw "La colonne '$letters' dépasse la longueur maximale de 3 caractères." } $columnNumber = 0 $length = $letters.Length for ($i = 0; $i -lt $length; $i++) { $char = $letters[$i] $charValue = [int][char]$char - [int][char]'A' + 1 $columnNumber = $columnNumber * 26 + $charValue } if ($columnNumber -gt 16384) { throw "La colonne '$letters' dépasse la limite Excel (max XFD, soit 16384)." } if ($numbers -lt 1 -or $numbers -gt 1048576) { throw "Le numéro de ligne doit être entre 1 et 1 048 576." } return @($columnNumber, $numbers) } |