XL 2019 Incrémentation

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sum01

XLDnaute Occasionnel
Bonjour à toutes et tous,

Je fais appel à votre aide avant de sombrer dans la folie car au départ je pensais le problème simple mais après une journée et les yeux qui se croise. J'essaie de trouve une solution pour incrémenter une liste de codes. Cette liste suit une logique. Chaque fois que j'arrive à 9, je recommence avec la lettre A ou à l'inverse, lorsque j'arrive à la lettre Z, je recommence avec le chiffre 0 et ainsi de suite. J'ai essayé de représenter la progression dans le petit fichier Excel ci-joint.
Je ne parviens pas à trouver une formule pour incrémenter cette progression. Une des piste que j'ai essayé de suivre est de remplacer les lettres par des chiffres en suivant la position dans l'alphabet mais là aussi je me suis perdu.
 

Pièces jointes

Bonjour,
Il faudrait aussi que l'on comprenne à quoi ça vous sert 🤔
@+
Bonjour Bruno, c'est vrai que sans le contexte cette demande n'a ni queue ni tête. Cette codification alphanumérique est en place depuis des années (je n'en suis pas à l'origine). Et j'essaie de créer une liste compète qui n'existe pas à ce jour. En effet, pour seule documentation, j'ai des notions d'intervalles écris sur un doc. word. Par exemple si nous avons à faire à tel article alors cet article se trouve dans la zone codifiée [599-6AB]. J'essaie d'améliorer cela en tentant de reconstituer ce qui se trouve entre 599 et 6AB (exemple).
 
Bonjour @sum01, Bruno, le forum

Issue de ce forum et légèrement retouché
Cela permet d'aller de A à ZZ
Si tu mets A en A1 :
Code:
Sub Incrementation()

Dim i As Integer, j As Integer, x As Integer, s As Integer, Z&
Dim lettre As String
Dim tablo()

On Error Resume Next
For Z = 1 To 701
    For i = 0 To 25
        lettre = Chr(i + 65)
        ReDim Preserve tablo(i)
        tablo(i) = lettre
    Next
   
    For j = 0 To 25
        For r = 0 To 25
            lettre = tablo(j) & tablo(r)
            x = UBound(tablo) + 1
            ReDim Preserve tablo(x)
            tablo(x) = lettre
        Next
    Next
   
    For s = 0 To UBound(tablo)
        If tablo(s) = Cells(Z, 1).Value Then
            Cells(Z + 1, 1).Value = tablo(s + 1)
        End If
    Next

Next Z
End Sub

Si cela peut donner des idées à quelqu'un...

@Phil69970
 
Bonjour @sum01, Bruno, le forum

Issue de ce forum et légèrement retouché
Cela permet d'aller de A à ZZ
Si tu mets A en A1 :
Code:
Sub Incrementation()

Dim i As Integer, j As Integer, x As Integer, s As Integer, Z&
Dim lettre As String
Dim tablo()

On Error Resume Next
For Z = 1 To 701
    For i = 0 To 25
        lettre = Chr(i + 65)
        ReDim Preserve tablo(i)
        tablo(i) = lettre
    Next
 
    For j = 0 To 25
        For r = 0 To 25
            lettre = tablo(j) & tablo(r)
            x = UBound(tablo) + 1
            ReDim Preserve tablo(x)
            tablo(x) = lettre
        Next
    Next
 
    For s = 0 To UBound(tablo)
        If tablo(s) = Cells(Z, 1).Value Then
            Cells(Z + 1, 1).Value = tablo(s + 1)
        End If
    Next

Next Z
End Sub

Si cela peut donner des idées à quelqu'un...

@Phil69970
Bonjour Phil, merci pour cette réponse. Superbe macro que j'ai essayé d'adapter. Lorsque on arrive à Z on passe à AA. Mais si je souhaite que, arrivé à Z, la boucle recommence à A de façon à incrémenter comme dans mon petit exemple feuille essai2 et cela jusqu'à 99 ?
Comment pourrait-on adapter la macro ?
Un tout grand merci pour votre aide !
 

Pièces jointes

ReBonjour à Tous, merci pour votre réponse PierreJean. J'ai fusionné les deux marco et et je crois bien que l'objectif est atteint. Je joins le fichier si cela peut-être utile. Par contre, je ne suis pas sûr que du point de vue de la structure la macro tel que je la présente maintenant soit propre ?
Encore mille fois merci pour votre aide toujours fantastique
 

Pièces jointes

Dernière édition:
Re

Je suis pas sur du tout que cela corresponde à ta demande initiale car 6AB est non trouvé dans la liste crée.

la zone codifiée [599-6AB].
1616243985254.png


@Phil69970
 
Bonjour sum01, Bruno, Phil69970, Pierre,

Voyez le fichier joint et cette macro évènementielle dans le code de la feuille "Essai" :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Set Target = Target(1)
If Not Target Like "#*[A-Z]" Then Exit Sub
Dim n&, a%
Cancel = True
n = Val(Target)
a = Asc(Right(Target, 1))
Target(2) = IIf(a < Asc("Z"), n & Chr(a + 1), n + 1 & "A")
End Sub
A+
 

Pièces jointes

Une variante dans ce fichier (2) avec le choix du nombre de cellules à remplir :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Set Target = Target(1)
If Not Target Like "#*[A-Z]" Then Exit Sub
Dim x$, nn, resu$(), i&, n&, a%
Cancel = True
Do
    x = InputBox("Nombre de cellules à remplir :", "Incrémentation", nn)
    If x = "" Then Exit Sub
    nn = Int(Val(x))
Loop While nn < 1 Or Target.Row + nn > Rows.Count
ReDim resu(1 To nn, 1 To 1)
x = Target
For i = 1 To nn
    n = Val(x)
    a = Asc(Right(x, 1))
    x = IIf(a < 90, n & Chr(a + 1), n + 1 & "A")
    resu(i, 1) = x
Next
'---restitution---
Target(2).Resize(nn) = resu
End Sub
 

Pièces jointes

Salut Job75, joli travail, mais...

Pour info, si on souhaite partir de 599, ça ne fonctionne pas 😉

Ensuite il y a une erreur, dans ton code on passe de 59Z à 60A, or dans l'exemple de sum01 on doit passer à à 5A0 😱

Comme je l'ai dit, pas si simple 😜

@+
 
Dernière modification par un modérateur:
Bonjour Job75, Bruno, Phil69970, Pierre,
Punaise, quelle sacrées solutions que vous amenez ici. Des œuvres d'art en terme de code pour lequel, même avec 200 ans à disposition, je n'y serai jamais arrivé. Ces solutions font le job et vont m'aider à construire une table de correspondance pour rendre plus facile la lecture de cette codification. Il est vrai que la structure a été mal pensée dès le départ et il est impossible de la changer malheureusement. Encore merci pour votre aide. Très bon week-end
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
170
  • Question Question
XL 2016 Date Me !
Réponses
3
Affichages
600
Retour