XL 2016 Série de lettres

chifounou

XLDnaute Occasionnel
En étirant une cellule sur celles d'à côté, on peut aisément obtenir une série de chiffres

Est-il possible d'accomplir une série de lettres ? La première case contenant par exemple BD, et obtenir BE, BF, BG dans les cases suivantes (verticalement ou horizontalement)

Merci
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
En étirant une cellule sur celles d'à côté, on peut aisément obtenir une série de chiffres

Est-il possible d'accomplir une série de lettres ?
une serie de une seule lettre...
Option Excel > standard >Modifier les listes personnalisées :
upload_2017-2-17_10-35-37.png

exemples obtenus directement avec la poignée de recopie
upload_2017-2-17_10-40-0.png
 

vgendron

XLDnaute Barbatruc
Re !

Avec une fonction personalisée qui fonctionne quelque soit la longueur de la chaine initiale
VB:
Public Function IncrémentLettre(LettresInit As String) As String
Application.Volatile
nbcar = Len(LettresInit)

pos = nbcar
If Left(LettresInit, 1) = "Z" Then 'permet d'allonger la chaine de caractères d'une lettre
    LettresInit = "A" & String(nbcar, "A")
    GoTo fin
End If
fin = False
While fin = False
    If Mid(LettresInit, pos, 1) <> "Z" Then
        LettresInit = Left(LettresInit, pos - 1) & Chr(Asc(Mid(LettresInit, pos, 1)) + 1)
        If pos <> nbcar Then
            LettresInit = LettresInit & String(nbcar - pos, "A")
          
        End If
         fin = True
    Else
        pos = pos - 1
    End If
Wend
fin:
IncrémentLettre = LettresInit
End Function

mettre ce code dans un module vba standard
et il suffit de taper dans la feuille excel =Incrémentlettre(A1) et tirer vers le bas ou la droite (avec A1 qui contient la chaine de départ)
 

vgendron

XLDnaute Barbatruc
à remplacer par ce code
VB:
Public Function IncrémentLettre(LettresInit As String) As String
Application.Volatile
nbcar = Len(LettresInit)

pos = nbcar
For i = 1 To nbcar
    If Mid(LettresInit, i, 1) <> "Z" Then
        NoFullZ = True
    End If
Next i

If NoFullZ = False Then 'permet d'allonger la chaine de caractères d'une lettre
    LettresInit = "A" & String(nbcar, "A")
    GoTo fin
End If
fin = False

While fin = False
    If Mid(LettresInit, pos, 1) <> "Z" Then
        LettresInit = Left(LettresInit, pos - 1) & Chr(Asc(Mid(LettresInit, pos, 1)) + 1)
        If pos <> nbcar Then
            LettresInit = LettresInit & String(nbcar - pos, "A")
           
        End If
         fin = True
    Else
        pos = pos - 1
    End If
Wend
fin:
IncrémentLettre = LettresInit
End Function

Le précédent faisait passer Z à AA
mais aussi ZA à AAA. au lieu de ZB
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour chifounou, à tous,
Un autre essai avec commentaires:
VB:
Function ABC$(ByVal x$)
Dim I&, C As String * 1, R As Boolean, Res$
    x = UCase(x): R = True
    For I = Len(x) To 1 Step -1
        C = Mid$(x, I)  'Ième caractère (à partir de la droite)
        If R Then    'si retenue R
            C = Chr(Asc(C) + 1)  'on incrémente le Ième caractère
            If C <= "Z" Then     'C est inférieur à "Z" donc autorisé
                Res = C & Res    'on ajoute C au résultat
                R = False        'il n'y a pas de retenue
            Else
                C = "A"          'C est supérieur à "Z" donc interdit, on passe C à "A"
                Res = C & Res    'on ajoute C au résultat
                R = True         'il y a une retenue
            End If
        Else    'si pas de retenue R
            Res = C & Res     'on ajoute C au résultat
            R = False         'il n'y a pas de retenue
        End If
    Next I
    'traitement de la dernière retenue R
    If R Then ABC = "A" & Res Else ABC = Res
End Function
 

Pièces jointes

  • chifounou-série lettres- v1.xlsm
    22.5 KB · Affichages: 27
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 967
Membres
103 069
dernier inscrit
jujulop