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)
}