[COLOR="DarkSlateGray"][B]=SI(A1="";"";(((CODE(GAUCHE(A1;1))-(CODE(GAUCHE(A1;1))>73)
-(CODE(GAUCHE(A1;1))>79)-(CODE(GAUCHE(A1;1))>85))*23
+CODE(STXT(A1;2;1))-(CODE(STXT(A1;2;1))>73)
-(CODE(STXT(A1;2;1))>79)-(CODE(STXT(A1;2;1))>85)
-(CODE(GAUCHE(A1;1))*23+CODE(STXT(A1;2;1))>1992))*528
+(CODE(STXT(A1;8;1))-(CODE(STXT(A1;8;1))>73)
-(CODE(STXT(A1;8;1))>79)-(CODE(STXT(A1;8;1))>85))*23
+CODE(DROITE(A1;1))-(CODE(DROITE(A1;1))>73)
-(CODE(DROITE(A1;1))>79)-(CODE(DROITE(A1;1))>85)
-(CODE(STXT(A1;8;1))*23+CODE(DROITE(A1;1))>1992)
-825240)*999+STXT(A1;4;3))[/B][/COLOR]
Quant à incrémenter l'alphabet, je ne comprends même pas. Pour mémoire :(...) 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 (...)
incrémenter, verbe transitif
Sens : Augmenter d'une quantité déterminée une variable à chaque boucle d'un programme.
incrémenter : définition et conjugaison du mot incrémenter
En informatique, l'incrémentation est l'opération qui consiste à ajouter une valeur entière fixée à un compteur. L'opération inverse, la décrémentation, consiste à retirer une valeur entière au compteur.
Incrémentation - Wikipédia
Définition du mot INCREMENTER :
Désigne le fait d'ajouter une valeur (habituellement la valeur est 1) à une variable.
INCREMENTER
[COLOR="DarkSlateGray"][B]=SI((A1>0)*(A1<278505217);INDEX(TAB;1+(((A1-1-MOD(A1-1;999))/999
-MOD((A1-1-MOD(A1-1;999))/999;528))/528
+(((A1-1-MOD(A1-1;999))/999
-MOD((A1-1-MOD(A1-1;999))/999;528))/528>383)
-MOD(((A1-1-MOD(A1-1;999))/999
-MOD((A1-1-MOD(A1-1;999))/999;528))/528
+(((A1-1-MOD(A1-1;999))/999
-MOD((A1-1-MOD(A1-1;999))/999;528))/528>383);23))/23)
&INDEX(TAB;1+MOD(((A1-1-MOD(A1-1;999))/999
-MOD((A1-1-MOD(A1-1;999))/999;528))/528
+(((A1-1-MOD(A1-1;999))/999
-MOD((A1-1-MOD(A1-1;999))/999;528))/528>383);23))
&"-"&TEXTE(1+MOD(A1-1;999);"000")&"-"
&INDEX(TAB;1+(MOD((A1-1-MOD(A1-1;999))/999;528)
+(MOD((A1-1-MOD(A1-1;999))/999;528)>383)
-MOD(MOD((A1-1-MOD(A1-1;999))/999;528)
+(MOD((A1-1-MOD(A1-1;999))/999;528)>383);23))/23)
&INDEX(TAB;1+MOD(MOD((A1-1-MOD(A1-1;999))/999;528)
+(MOD((A1-1-MOD(A1-1;999))/999;528)>383);23));"")[/B][/COLOR]
[COLOR="DarkSlateGray"][B]={"A"\"B"\"C"\"D"\"E"\"F"\"G"\"H"\"J"\"K"\"L"\"M"\"N"\"P"\"Q"\"R"\"S"\"T"\"V"\"W"\"X"\"Y"\"Z"}[/B][/COLOR]
Est-ce que vos propres résultats correspondent à l'une ou l'autre des solutions ?
comment puis je incrémenter l'alphabet
je met "a" en A1 et je tire les poignées de recopie pour avoir "b" en A2,
"c" en A3, "d" en A4 etc ...... jusqu'à "z"
=CAR(96+LIGNE())
Il y a une solution :(...)
Mais pour incrémenter les numéros d'immatriculation, c'est une autre paire de manche !
(...)
Sub c_alpha(casse As Boolean)
With [A1].Resize(26)
.FormulaLocal = IIf(casse, "=CAR(96+LIGNE())", "=CAR(64+LIGNE())")
.Value = .Value
End With
End Sub
Sub a_min()
c_alpha 1
End Sub
Sub a_maj()
c_alpha 0
End Sub
[COLOR="DarkSlateGray"][B]Function libN$(N)
Application.Volatile
Dim ch, u&
If IsNumeric(N) Then
If (0 < N) * (N < 278505217) Then
ch = Array("A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", _
"M", "N", "P", "Q", "R", "S", "T", "V", "W", "X", "Y", "Z")
libN = "-" & Format(1 + (N - 1) Mod 999, "000") & "-"
N = (N - 1) \ 999
u = N Mod 528: u = u - (u > 383)
libN = libN & ch(u \ 23) & ch(u Mod 23)
u = N \ 528: u = u - (u > 383)
libN = ch(u \ 23) & ch(u Mod 23) & libN
End If
End If
End Function[/B][/COLOR]
[COLOR="DarkSlateGray"][B]Function libN1$(N)
Application.Volatile
Dim ch$, u&
If IsNumeric(N) Then
If (0 < N) * (N < 278505217) Then
ch = "ABCDEFGHJKLMNPQRSTVWXYZ"
libN1 = "-" & Format(1 + (N - 1) Mod 999, "000") & "-"
N = (N - 1) \ 999
u = N Mod 528: u = u - (u > 383)
libN1 = libN1 & Mid$(ch, 1 + u \ 23, 1) & Mid$(ch, 1 + u Mod 23, 1)
u = N \ 528: u = u - (u > 383)
libN1 = Mid$(ch, 1 + u \ 23, 1) & Mid$(ch, 1 + u Mod 23, 1) & libN1
End If
End If
End Function[/B][/COLOR]
[COLOR="DarkSlateGray"][B]Function Nlib(lib$)
Application.Volatile
Dim ch$, x&, y&
ch = "ABCDEFGHJKLMNPQRSTVWXYZ"
lib = Replace(Replace(lib, "-", ""), " ", "")
If lib Like "??###??" And Not (lib Like "??000??" Or lib Like "*SS*" Or lib Like "*I*" Or lib Like "*O*" Or lib Like "*U*") Then
x = 23 * (InStr(1, ch, Mid$(lib, 6, 1)) - 1) + InStr(1, ch, Mid$(lib, 7, 1)) - 1
y = 23 * (InStr(1, ch, Mid$(lib, 1, 1)) - 1) + InStr(1, ch, Mid$(lib, 2, 1)) - 1
Nlib = 999 * (528 * (y + (y > 383)) + x + (x > 383)) + Mid$(lib, 3, 3)
Else
Nlib = ""
End If
End Function[/B][/COLOR]
Ce n'est pas incompatible.Bonsoir ROGER2327,
je suis nouveau sur le forum et curieux.
Moi-même, j'ai du mal…Je n'arrive pas à comprendre la formule de la cellule dans le tableau Excel ( et non en VBA)
qui permet à partir d'un libellé de trouver son rang d'immatriculation
Je ne crois pas : 23 x 23 -2 = 527.- à quoi correspond 1992 ? ( peut être ((23*23)-2) )
Cette constante tient au fait que 1°) le SIV utilise 23 lettres ; 2°) le code ASCII de la lettre A est 65. Si les codes ASCII de l'alphabet majuscule A-Z avaient été 0-25 au lieu de 65-90, la constante eût été nulle.- et surtout 825240 ?????????
Non.- lorsqu'on tape en A1" "WW-001-AA", il y a un rang qui s'affiche alors que cette série est "interdite". est-ce que cette série est incluse dans le 825240??????
=SI(NBCAR(A1)=9;SI(((CHERCHE("I";A1&" I")+CHERCHE("O";A1&" O")+CHERCHE("U";A1&" U")+CHERCHE("SS";A1&" SS"))<44)+(GAUCHE(A1;2)="WW")+NON(EXACT(A1;MAJUSCULE(A1)))+NON(ESTNUM(0+STXT(A1;4;3)))+(0+STXT(A1;4;3)=0);"";
(((CODE(A1)-(CODE(A1)>73)-(CODE(A1)>79)-(CODE(A1)>85))*23
+CODE(STXT(A1;2;1))-(CODE(STXT(A1;2;1))>73)-(CODE(STXT(A1;2;1))>79)-(CODE(STXT(A1;2;1))>85)
-(CODE(A1)*23+CODE(STXT(A1;2;1))>1992)
-(CODE(A1)*23+CODE(STXT(A1;2;1))>2088))*528
+(CODE(STXT(A1;8;1))-(CODE(STXT(A1;8;1))>73)-(CODE(STXT(A1;8;1))>79)-(CODE(STXT(A1;8;1))>85))*23
+CODE(DROITE(A1))-(CODE(DROITE(A1))>73)-(CODE(DROITE(A1))>79)-(CODE(DROITE(A1))>85)
-(CODE(STXT(A1;8;1))*23+CODE(DROITE(A1))>1992)
-825240)*999+STXT(A1;4;3));"")
9 Évident !
23 =NBCAR("ABCDEFGHJKLMNPQRSTVWXYZ")
44 Évident ! (Le test associé élimine les immatriculations contenant I ou O ou U ou SS)
73 =CODE("I")
79 =CODE("O")
83 =CODE("S")
85 =CODE("U")
87 =CODE("W")
528 =NBCAR("ABCDEFGHJKLMNPQRSTVWXYZ")^2-1
999 =10^3-1
1992 =CODE("S")*NBCAR("ABCDEFGHJKLMNPQRSTVWXYZ")+CODE("S")
2088 =CODE("W")*NBCAR("ABCDEFGHJKLMNPQRSTVWXYZ")+CODE("W")
825240 =(CODE("A")*NBCAR("ABCDEFGHJKLMNPQRSTVWXYZ")+CODE("A"))*(NBCAR("ABCDEFGHJKLMNPQRSTVWXYZ")^2-1)+(CODE("A")*NBCAR("ABCDEFGHJKLMNPQRSTVWXYZ")+CODE("A"))
De rien.Merci