incrementation da l'alphabet (pour calcul Nb nouvelle plaque immat)

Macpoy

XLDnaute Impliqué
bonsoir le forum,

j'avoue, ce soir je n'ai rien de plus matériel / sérieux à proposer à votre perspicacité!

comment puis je incrémenter l'alphabet de manière à calculer le nombre de véhicules déjà immatriculés depuis la mise en place des nouvelles plaques.

rappel: format des plaques :

aa 001 aa, aa 002 aa, etc (dans cette série cela représente 999 immatriculations)
ensuite, on passe à aa 001 ab => 999 autres, etc ........

sachant que ao et ai, ne sont pas utilisés et que ss peut être pas.
pour u j'en sais rien !!!

à ce jour j'ai vu une plaque AQ 678 JN.

merci de bien vouloir (comme moi) vous amuser avec Excel pour répondre
à cette futile interrogation.

@plus
 

hoerwind

XLDnaute Barbatruc
Re : incrementation da l'alphabet (pour calcul Nb nouvelle plaque immat)

Bonjour et salut à vous tous,

Pour incrémenter des lettres :
Menu Outils - Listes pers
Saisir une nouvelle liste : A,B,C,D, ... (tout l'alphabet)

Saisir une lettre (majuscule) quelconque dans une cellule quelconque et la copier vers le bas ou vers la droite.
L'incrémentation se fait à partir de cette lettre et renvoie A après Z.

Il ne faut pas créer une autre liste pour les minuscules, Excel respecte la casse de la première lettre saisie.
 

ROGER2327

XLDnaute Barbatruc
Re : incrementation da l'alphabet (pour calcul Nb nouvelle plaque immat)

Suite (et fin ?)
Bonjour ROGER2327

Merci pour les explications; c'est SUPER
Tant mieux !

Mais vu la longueur de la formule, VBA est tout indiqué :
VB:
Function NLib(r$)
'Exemple : transforme BQ-020-YC en 20 000 000
Application.Volatile
Dim a$, ch$, sp
  ch = "ABCDEFGHJKLMNPQRSTVWXYZ"
  a = Replace(r, "-", Space(1))
  If a Like "[A-Z][A-Z] ### [A-Z][A-Z]" And Not (a Like "*000*" Or a Like "*[IOU]*" Or a Like "*SS*" Or a Like "WW*") Then
    sp = Split(a)
    NLib = 999 * (528 * (23 * (InStr(1, ch, Left$(sp(0), 1))) + (InStr(1, ch, Right$(sp(0), 1))) + _
      (sp(0) > "SR") + (sp(0) > "WV")) + 23 * InStr(1, ch, Left$(sp(2), 1)) + _
      (InStr(1, ch, Right$(sp(2), 1))) + (sp(2) > "SR") - 12696) + sp(1)
  Else
    NLib = ""
  End If
End Function

Et la fonction réciproque :
VB:
Function LibN$(n)
'Exemple : transforme 20 000 000 en BQ-020-YC
Application.Volatile
Dim ch$, m&, u&
  If IsNumeric(n) Then
    m = CLng(n)
    If (0 < m) * (m < 277977745) Then
      ch = "ABCDEFGHJKLMNPQRSTVWXYZ"
      LibN = "-" & Format(1 + (m - 1) Mod 999, "000") & "-"
      m = (m - 1) \ 999
      u = m Mod 528: u = u - (u > 383)
      LibN = LibN & Mid$(ch, 1 + u \ 23, 1) & Mid$(ch, 1 + u Mod 23, 1)
      u = m \ 528: u = u - (u > 383) - (u > 454)
      LibN = Mid$(ch, 1 + u \ 23, 1) & Mid$(ch, 1 + u Mod 23, 1) & LibN
    End If
  End If
End Function
ROGER2327
#4853


Jeudi 12 Décervelage 138 (Saint Landru, gynécologue, SQ)
20 Nivôse An CCXIX
2011-W01-7T02:12:14Z
 

ROGER2327

XLDnaute Barbatruc
Re : incrementation da l'alphabet (pour calcul Nb nouvelle plaque immat)

Suite de la suite (et fin ?)
Je m'aperçois qu'il manque la fonction réciproque en formule Excel.
La voici :
Code:
=SI(ESTNUM(A1)*(0<A1)*(A1<277977745);STXT("ABCDEFGHJKLMNPQRSTVWXYZ";ENT((((A1-MOD(A1-1;999)-1)/999-MOD((A1-MOD(A1-1;999)-1)/999;528))/528+(((A1-MOD(A1-1;999)-1)/999-MOD((A1-MOD(A1-1;999)-1)/999;528))/528>383)+(((A1-MOD(A1-1;999)-1)/999-MOD((A1-MOD(A1-1;999)-1)/999;528))/528>454))/23)+1;1)&STXT("ABCDEFGHJKLMNPQRSTVWXYZ";MOD((((A1-MOD(A1-1;999)-1)/999-MOD((A1-MOD(A1-1;999)-1)/999;528))/528+(((A1-MOD(A1-1;999)-1)/999-MOD((A1-MOD(A1-1;999)-1)/999;528))/528>383)+(((A1-MOD(A1-1;999)-1)/999-MOD((A1-MOD(A1-1;999)-1)/999;528))/528>454));23)+1;1)&"-"&TEXTE(MOD(A1-1;999)+1;"000")&"-"&STXT("ABCDEFGHJKLMNPQRSTVWXYZ";ENT((MOD((A1-MOD(A1-1;999)-1)/999;528)+(MOD((A1-MOD(A1-1;999)-1)/999;528)>383))/23)+1;1)&STXT("ABCDEFGHJKLMNPQRSTVWXYZ";MOD((MOD((A1-MOD(A1-1;999)-1)/999;528)+(MOD((A1-MOD(A1-1;999)-1)/999;528)>383));23)+1;1);"")
Ci-joint un classeur récapitulatif.​
ROGER2327
#4854


Vendredi 13 Décervelage 138 (Saint Guillotin, médecin, SQ)
21 Nivôse An CCXIX
2011-W02-1T00:01:20Z
 

Pièces jointes

  • SIV.xls
    38 KB · Affichages: 90
  • SIV.xls
    38 KB · Affichages: 81
  • SIV.xls
    38 KB · Affichages: 81

Statistiques des forums

Discussions
314 644
Messages
2 111 529
Membres
111 189
dernier inscrit
Laurent.