Correspondance lettre chiffre

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 590 fois - Téléchargée 29 fois

Contenu du snippet

Alors je suis peu être un peu bête (si ca existe deja...) mais comme je code souvent en VBA pour Excel, et que je me serts des colonnes, j'ai trouvé utile de faire une petite fonction qui renvoie le numero de la colonne lorsqu'on rentre la ou les lettres. La fonction est limitée a 2 lettres mais rien ne vous empeche de le compléter pour eventuellement coder une chaine de texte (enfin moi je dis ca....)...

Donc voila, a quoi ça ressemble :

Source / Exemple :


Public ColonneE()
Public Alphabet()

Function Correspondance(col)
    'Stockage de l'alphabet
    Alphabet = Array("", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z")
    col = UCase(col) 'Pour eviter les erreurs de case
    For i = 1 To 26
        'Correspondance lettre <=> chiffre (rang)
        ReDim Preserve ColonneE(2, i + 1)
        ColonneE(1, i) = Alphabet(i)
        ColonneE(2, i) = i
    Next i
    
    Select Case Len(col)
        Case 1 'Cas ou la colonne rentrée est entre A et Z
            For i = 1 To 26
                If ColonneE(1, i) = col Then
                    indice = ColonneE(2, i)
                    Exit For
                End If
            Next 'Cas ou la colonne rentrée comporte 2 lettres
        Case 2
            For i = 1 To 26
                If ColonneE(1, i) = Left(col, 1) Then
                    indice1 = ColonneE(2, i)
                    Exit For
                End If
            Next i
            For i = 1 To 26
                If ColonneE(1, i) = Right(col, 1) Then
                    indice2 = ColonneE(2, i)
                    Exit For
                End If
            Next i
            indice = (indice1 * 26) + indice2
    End Select
    
    Correspondance = indice
End Function

Conclusion :


Donc c'est très simple vous coller ça ou vous voulez, et vou tapper un
rang = Correspondance(inputbox("Quelle colonne a convertir ?"))
par exemple, et voila, vous aurez dans rang la valeur chiffrée de la chaine !!

Libre à vous de completer le tableau Alphabet, pour un fonctionnement optimum, je l'ai fait pour mes besoins, maintenant ils ne sont certainement pas universels, donc si vous vous en servez et si vous modifiez, ça serait cool de me le dire pour que je mette à jour la source (promis je mettrai vos noms!!).

SHARE !!!!

A voir également

Ajouter un commentaire Commentaires
Messages postés
1467
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
3
Heu, désolé nagattaque, mais renfield à raison... Tu t'embrouilles pour rien. En plus, on pourrait facilement rajouter une option permettant de ne pas limiter le longueur de la chaine grâche à la solution de renfield...
Enfin moi, ce que j'en dit...
Messages postés
230
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
5 juin 2007

Oui elle pourrait... mais elle en a décidé autrement !
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Ta fonction pourrait se contenter d'être :

Function CorrespondanceR(ByVal Col As String) As Integer
Col = UCase(Col)

CorrespondanceR = Asc(Col) - 64
If Len(Col) = 2 Then
CorrespondanceR = 26 * CorrespondanceR + Asc(Mid(Col, 2, 1)) - 64
End If
End Function

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.