Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés
sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en
allant chercher dans la BdD le n° précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de AB-9999 on
passe à AC-1001 (la limite théorique étant la série ZZ-1001 à ZZ-9999)
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de AB-9999 on
passe à AC-1001 (la limite théorique étant la série ZZ-1001 à ZZ-9999)
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de AB-9999 on
passe à AC-1001 (la limite théorique étant la série ZZ-1001 à ZZ-9999)
bonjour Michel,
voici comment passer de AA - 9999 à AB - 0001 et ainsi de suite ZY - 9999
à ZZ - 0001
en supposant que tu utilises xl 2007 et +
x = "AA - 9999"
n = Split(x, " - ")
aph = n(0)
no = n(1)
'If aph = "ZZ" And CDbl(no) = 9999 Then ??
If CDbl(no) = 9999 Then
aph1 = Columns(aph).Offset(0, 1).Column
MsgBox Application.Substitute(Cells(1, aph1).Address(0, 0), "1", "") &
" - 0001"
Else
MsgBox aph & " - " & Format(CDbl(no) + 1, "0000")
End If
pour le cas du "K" je n'ai pas compris de quoi il retourne, peut tu donner
plus d'info ?
isabelle
Le 2010-08-13 18:49, Péhemme a écrit :
> Bonjour(soir) à Tous,
>
>
>
> J'ai un problème d'incrémentation alphabétique tordue.
>
> J'ai une base de données qui s'alimente via des TextBox et Label placés
> sur un UserForm.
>
> Au moment de la saisie, un Label doit être rempli automatiquement en
> allant chercher dans la BdD le n° précédent incrémenté de 1.
>
>
>
> 1°) Première partie à incrémenter (déjà tordue) : la série :
>
> La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
> l'incrémentation se fait
>
> a) numériquement de 1001 à 9999
>
> b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
> AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
> ZZ-9999)
>
> Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
> Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
bonjour Michel,
voici comment passer de AA - 9999 à AB - 0001 et ainsi de suite ZY - 9999
à ZZ - 0001
en supposant que tu utilises xl 2007 et +
x = "AA - 9999"
n = Split(x, " - ")
aph = n(0)
no = n(1)
'If aph = "ZZ" And CDbl(no) = 9999 Then ??
If CDbl(no) = 9999 Then
aph1 = Columns(aph).Offset(0, 1).Column
MsgBox Application.Substitute(Cells(1, aph1).Address(0, 0), "1", "") &
" - 0001"
Else
MsgBox aph & " - " & Format(CDbl(no) + 1, "0000")
End If
pour le cas du "K" je n'ai pas compris de quoi il retourne, peut tu donner
plus d'info ?
isabelle
Le 2010-08-13 18:49, Péhemme a écrit :
> Bonjour(soir) à Tous,
>
>
>
> J'ai un problème d'incrémentation alphabétique tordue.
>
> J'ai une base de données qui s'alimente via des TextBox et Label placés
> sur un UserForm.
>
> Au moment de la saisie, un Label doit être rempli automatiquement en
> allant chercher dans la BdD le n° précédent incrémenté de 1.
>
>
>
> 1°) Première partie à incrémenter (déjà tordue) : la série :
>
> La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
> l'incrémentation se fait
>
> a) numériquement de 1001 à 9999
>
> b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
> AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
> ZZ-9999)
>
> Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
> Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
bonjour Michel,
voici comment passer de AA - 9999 à AB - 0001 et ainsi de suite ZY - 9999
à ZZ - 0001
en supposant que tu utilises xl 2007 et +
x = "AA - 9999"
n = Split(x, " - ")
aph = n(0)
no = n(1)
'If aph = "ZZ" And CDbl(no) = 9999 Then ??
If CDbl(no) = 9999 Then
aph1 = Columns(aph).Offset(0, 1).Column
MsgBox Application.Substitute(Cells(1, aph1).Address(0, 0), "1", "") &
" - 0001"
Else
MsgBox aph & " - " & Format(CDbl(no) + 1, "0000")
End If
pour le cas du "K" je n'ai pas compris de quoi il retourne, peut tu donner
plus d'info ?
isabelle
Le 2010-08-13 18:49, Péhemme a écrit :
> Bonjour(soir) à Tous,
>
>
>
> J'ai un problème d'incrémentation alphabétique tordue.
>
> J'ai une base de données qui s'alimente via des TextBox et Label placés
> sur un UserForm.
>
> Au moment de la saisie, un Label doit être rempli automatiquement en
> allant chercher dans la BdD le n° précédent incrémenté de 1.
>
>
>
> 1°) Première partie à incrémenter (déjà tordue) : la série :
>
> La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
> l'incrémentation se fait
>
> a) numériquement de 1001 à 9999
>
> b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
> AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
> ZZ-9999)
>
> Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur.
> Sa présence a pour but d'obtenir une lecture plus facile du n° complet.
Bonsour®
"Péhemme" a écrit1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Sub test()
MsgBox "Ctrl-Pause pour interrompre ce test", vbExclamation, "Michel On
s'accroche !!!"
[A1] = Chr(65 + Rnd() * 26) & Chr(65 + Rnd() * 26) & "-" & Format(Rnd() *
10 ^ 4, "0000")
For i = 1 To 20000
increment
DoEvents
Next
End Sub
Sub increment()
x = [A1]
alpha1 = Asc(UCase(Left(x, 1)))
alpha2 = Asc(UCase(Mid(x, 2, 1)))
nombre = CInt(Right(x, 4))
'-----incrementation numerique
nombre = nombre + 1
'-----incrementation 2éme lettre
If nombre > 9999 Then
alpha2 = alpha2 + 1
nombre = 0
End If
'-----incrementation 1ére lettre
If alpha2 > Asc("Z") Then
alpha2 = 65
alpha1 = alpha1 + 1
End If
'----- limite capacité
If alpha1 > Asc("Z") Then
MsgBox "limite capacité atteinte AA-9999"
Exit Sub
End If
'-----
[A1] = Chr(alpha1) & Chr(alpha2) & "-" & Format(nombre, "0000")
End Sub
Bonsour®
"Péhemme" a écrit
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Sub test()
MsgBox "Ctrl-Pause pour interrompre ce test", vbExclamation, "Michel On
s'accroche !!!"
[A1] = Chr(65 + Rnd() * 26) & Chr(65 + Rnd() * 26) & "-" & Format(Rnd() *
10 ^ 4, "0000")
For i = 1 To 20000
increment
DoEvents
Next
End Sub
Sub increment()
x = [A1]
alpha1 = Asc(UCase(Left(x, 1)))
alpha2 = Asc(UCase(Mid(x, 2, 1)))
nombre = CInt(Right(x, 4))
'-----incrementation numerique
nombre = nombre + 1
'-----incrementation 2éme lettre
If nombre > 9999 Then
alpha2 = alpha2 + 1
nombre = 0
End If
'-----incrementation 1ére lettre
If alpha2 > Asc("Z") Then
alpha2 = 65
alpha1 = alpha1 + 1
End If
'----- limite capacité
If alpha1 > Asc("Z") Then
MsgBox "limite capacité atteinte AA-9999"
Exit Sub
End If
'-----
[A1] = Chr(alpha1) & Chr(alpha2) & "-" & Format(nombre, "0000")
End Sub
Bonsour®
"Péhemme" a écrit1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Sub test()
MsgBox "Ctrl-Pause pour interrompre ce test", vbExclamation, "Michel On
s'accroche !!!"
[A1] = Chr(65 + Rnd() * 26) & Chr(65 + Rnd() * 26) & "-" & Format(Rnd() *
10 ^ 4, "0000")
For i = 1 To 20000
increment
DoEvents
Next
End Sub
Sub increment()
x = [A1]
alpha1 = Asc(UCase(Left(x, 1)))
alpha2 = Asc(UCase(Mid(x, 2, 1)))
nombre = CInt(Right(x, 4))
'-----incrementation numerique
nombre = nombre + 1
'-----incrementation 2éme lettre
If nombre > 9999 Then
alpha2 = alpha2 + 1
nombre = 0
End If
'-----incrementation 1ére lettre
If alpha2 > Asc("Z") Then
alpha2 = 65
alpha1 = alpha1 + 1
End If
'----- limite capacité
If alpha1 > Asc("Z") Then
MsgBox "limite capacité atteinte AA-9999"
Exit Sub
End If
'-----
[A1] = Chr(alpha1) & Chr(alpha2) & "-" & Format(nombre, "0000")
End Sub
Bonsour®
"Péhemme" a écrit1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Sub test()
MsgBox "Ctrl-Pause pour interrompre ce test", vbExclamation, "Michel On
s'accroche !!!"
[A1] = Chr(65 + Rnd() * 26) & Chr(65 + Rnd() * 26) & "-" & Format(Rnd() *
10 ^ 4, "0000")
For i = 1 To 20000
increment
DoEvents
Next
End Sub
Sub increment()
x = [A1]
alpha1 = Asc(UCase(Left(x, 1)))
alpha2 = Asc(UCase(Mid(x, 2, 1)))
nombre = CInt(Right(x, 4))
'-----incrementation numerique
nombre = nombre + 1
'-----incrementation 2éme lettre
If nombre > 9999 Then
alpha2 = alpha2 + 1
nombre = 0
End If
'-----incrementation 1ére lettre
If alpha2 > Asc("Z") Then
alpha2 = 65
alpha1 = alpha1 + 1
End If
'----- limite capacité
If alpha1 > Asc("Z") Then
MsgBox "limite capacité atteinte AA-9999"
Exit Sub
End If
'-----
[A1] = Chr(alpha1) & Chr(alpha2) & "-" & Format(nombre, "0000")
End Sub
Bonsour®
"Péhemme" a écrit
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Sub test()
MsgBox "Ctrl-Pause pour interrompre ce test", vbExclamation, "Michel On
s'accroche !!!"
[A1] = Chr(65 + Rnd() * 26) & Chr(65 + Rnd() * 26) & "-" & Format(Rnd() *
10 ^ 4, "0000")
For i = 1 To 20000
increment
DoEvents
Next
End Sub
Sub increment()
x = [A1]
alpha1 = Asc(UCase(Left(x, 1)))
alpha2 = Asc(UCase(Mid(x, 2, 1)))
nombre = CInt(Right(x, 4))
'-----incrementation numerique
nombre = nombre + 1
'-----incrementation 2éme lettre
If nombre > 9999 Then
alpha2 = alpha2 + 1
nombre = 0
End If
'-----incrementation 1ére lettre
If alpha2 > Asc("Z") Then
alpha2 = 65
alpha1 = alpha1 + 1
End If
'----- limite capacité
If alpha1 > Asc("Z") Then
MsgBox "limite capacité atteinte AA-9999"
Exit Sub
End If
'-----
[A1] = Chr(alpha1) & Chr(alpha2) & "-" & Format(nombre, "0000")
End Sub
Bonsour®
"Péhemme" a écrit1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001,
l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de
AB-9999 on passe à AC-1001 (la limite théorique étant la série ZZ-1001 à
ZZ-9999)
Sub test()
MsgBox "Ctrl-Pause pour interrompre ce test", vbExclamation, "Michel On
s'accroche !!!"
[A1] = Chr(65 + Rnd() * 26) & Chr(65 + Rnd() * 26) & "-" & Format(Rnd() *
10 ^ 4, "0000")
For i = 1 To 20000
increment
DoEvents
Next
End Sub
Sub increment()
x = [A1]
alpha1 = Asc(UCase(Left(x, 1)))
alpha2 = Asc(UCase(Mid(x, 2, 1)))
nombre = CInt(Right(x, 4))
'-----incrementation numerique
nombre = nombre + 1
'-----incrementation 2éme lettre
If nombre > 9999 Then
alpha2 = alpha2 + 1
nombre = 0
End If
'-----incrementation 1ére lettre
If alpha2 > Asc("Z") Then
alpha2 = 65
alpha1 = alpha1 + 1
End If
'----- limite capacité
If alpha1 > Asc("Z") Then
MsgBox "limite capacité atteinte AA-9999"
Exit Sub
End If
'-----
[A1] = Chr(alpha1) & Chr(alpha2) & "-" & Format(nombre, "0000")
End Sub
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en allant chercher dans la BdD le n°
précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001, l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de AB-9999 on passe à AC-1001 (la limite
théorique étant la série ZZ-1001 à ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur. Sa présence a pour but d'obtenir
une lecture plus facile du n° complet.
2°) Seconde partie : la lettre finale :
Elle doit s'incrémenter de K (plus petit caractère) à Z (le plus grand). Cette incrémentation, bien que liée
au n° de série, est indépendante de celui-ci (une série quelconque peut, à titre d'exemple, ne posséder que
3 lettres finales distinctes (K, L ou M par exemple). Mais au minimum un seul élément dans la série : K.
Le plus petit n° complet s'écrit donc AA-1001-K
Je n'ai pas encore traité ce dernier point, mais je me débrouillerai.
Ne sachant pas comment faire, j'ai solutionné le problème du n° de série :
a) en créant 4 colonnes dans ma BdD et 4 Label (dont 3 invisibles) sur mon UserForm
b) en écrivant la macro suivante qui répond à mon problème mais qui me semble « contorsionniste et
bourrin ».
L'un d'entre vous sait-il si je peux, et dans la série « j'ai la plus courte », incrémenter directement mes
séries sans passer par la dichotomie de son n°.
Merci d'avance de vos avis et commentaires.
La macro :
Private Sub UserForm_Initialize()
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim R As Long
If R = 65535 Then
MsgBox "Vous êtes à la fin de la page !"
GoTo Fin
Else
R = Sheets("Feuil1").Range("G65536").End(xlUp).Row
End If
'Une première ligne est déjà remplie à A, A, 1000 pour rentrer dans la boucle
x = Range("G" & R).Value + 1
y = Asc(Range("Feuil1!F65536").End(xlUp).Value)
z = Asc(Range("Feuil1!E65536").End(xlUp).Value)
If x = 10000 Then
x = 1001
y = y + 1
If y = 91 Then
y = 65
z = z + 1
If z = 91 Then
GoTo Fin
End If
End If
End If
Label1.Visible = False
Label2.Visible = False
Label3.Visible = False
Label1 = Chr(z)
Label2 = Chr(y)
Label3 = x
Label4 = Label1 & Label2 & "-" & Label3
Exit Sub
Fin:
MsgBox "Vous êtes au maximum autorisé", vbCritical, "ATTENTION LIMITES !"
End Sub
Bonne nuit
Michel
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en allant chercher dans la BdD le n°
précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001, l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de AB-9999 on passe à AC-1001 (la limite
théorique étant la série ZZ-1001 à ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur. Sa présence a pour but d'obtenir
une lecture plus facile du n° complet.
2°) Seconde partie : la lettre finale :
Elle doit s'incrémenter de K (plus petit caractère) à Z (le plus grand). Cette incrémentation, bien que liée
au n° de série, est indépendante de celui-ci (une série quelconque peut, à titre d'exemple, ne posséder que
3 lettres finales distinctes (K, L ou M par exemple). Mais au minimum un seul élément dans la série : K.
Le plus petit n° complet s'écrit donc AA-1001-K
Je n'ai pas encore traité ce dernier point, mais je me débrouillerai.
Ne sachant pas comment faire, j'ai solutionné le problème du n° de série :
a) en créant 4 colonnes dans ma BdD et 4 Label (dont 3 invisibles) sur mon UserForm
b) en écrivant la macro suivante qui répond à mon problème mais qui me semble « contorsionniste et
bourrin ».
L'un d'entre vous sait-il si je peux, et dans la série « j'ai la plus courte », incrémenter directement mes
séries sans passer par la dichotomie de son n°.
Merci d'avance de vos avis et commentaires.
La macro :
Private Sub UserForm_Initialize()
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim R As Long
If R = 65535 Then
MsgBox "Vous êtes à la fin de la page !"
GoTo Fin
Else
R = Sheets("Feuil1").Range("G65536").End(xlUp).Row
End If
'Une première ligne est déjà remplie à A, A, 1000 pour rentrer dans la boucle
x = Range("G" & R).Value + 1
y = Asc(Range("Feuil1!F65536").End(xlUp).Value)
z = Asc(Range("Feuil1!E65536").End(xlUp).Value)
If x = 10000 Then
x = 1001
y = y + 1
If y = 91 Then
y = 65
z = z + 1
If z = 91 Then
GoTo Fin
End If
End If
End If
Label1.Visible = False
Label2.Visible = False
Label3.Visible = False
Label1 = Chr(z)
Label2 = Chr(y)
Label3 = x
Label4 = Label1 & Label2 & "-" & Label3
Exit Sub
Fin:
MsgBox "Vous êtes au maximum autorisé", vbCritical, "ATTENTION LIMITES !"
End Sub
Bonne nuit
Michel
Bonjour(soir) à Tous,
J'ai un problème d'incrémentation alphabétique tordue.
J'ai une base de données qui s'alimente via des TextBox et Label placés sur un UserForm.
Au moment de la saisie, un Label doit être rempli automatiquement en allant chercher dans la BdD le n°
précédent incrémenté de 1.
1°) Première partie à incrémenter (déjà tordue) : la série :
La difficulté est que le n° de départ (plus petit n°) étant AA-1001, l'incrémentation se fait
a) numériquement de 1001 à 9999
b) puis alphabétiquement : de AA-9999 on passe à AB-1001, puis de AB-9999 on passe à AC-1001 (la limite
théorique étant la série ZZ-1001 à ZZ-9999)
Si cela peut aider, on peut supprimer le tiret utilisé comme séparateur. Sa présence a pour but d'obtenir
une lecture plus facile du n° complet.
2°) Seconde partie : la lettre finale :
Elle doit s'incrémenter de K (plus petit caractère) à Z (le plus grand). Cette incrémentation, bien que liée
au n° de série, est indépendante de celui-ci (une série quelconque peut, à titre d'exemple, ne posséder que
3 lettres finales distinctes (K, L ou M par exemple). Mais au minimum un seul élément dans la série : K.
Le plus petit n° complet s'écrit donc AA-1001-K
Je n'ai pas encore traité ce dernier point, mais je me débrouillerai.
Ne sachant pas comment faire, j'ai solutionné le problème du n° de série :
a) en créant 4 colonnes dans ma BdD et 4 Label (dont 3 invisibles) sur mon UserForm
b) en écrivant la macro suivante qui répond à mon problème mais qui me semble « contorsionniste et
bourrin ».
L'un d'entre vous sait-il si je peux, et dans la série « j'ai la plus courte », incrémenter directement mes
séries sans passer par la dichotomie de son n°.
Merci d'avance de vos avis et commentaires.
La macro :
Private Sub UserForm_Initialize()
Dim x As Integer
Dim y As Integer
Dim z As Integer
Dim R As Long
If R = 65535 Then
MsgBox "Vous êtes à la fin de la page !"
GoTo Fin
Else
R = Sheets("Feuil1").Range("G65536").End(xlUp).Row
End If
'Une première ligne est déjà remplie à A, A, 1000 pour rentrer dans la boucle
x = Range("G" & R).Value + 1
y = Asc(Range("Feuil1!F65536").End(xlUp).Value)
z = Asc(Range("Feuil1!E65536").End(xlUp).Value)
If x = 10000 Then
x = 1001
y = y + 1
If y = 91 Then
y = 65
z = z + 1
If z = 91 Then
GoTo Fin
End If
End If
End If
Label1.Visible = False
Label2.Visible = False
Label3.Visible = False
Label1 = Chr(z)
Label2 = Chr(y)
Label3 = x
Label4 = Label1 & Label2 & "-" & Label3
Exit Sub
Fin:
MsgBox "Vous êtes au maximum autorisé", vbCritical, "ATTENTION LIMITES !"
End Sub
Bonne nuit
Michel
mais pourquoi tu me fais un tirage aléatoire au lieu d'une incrémentation
"toute bête" (+1 à chaque fois, sauf aux sauts de pas spécifiés) ? Tu veux
vérifier si je suis ?... :-))
mais pourquoi tu me fais un tirage aléatoire au lieu d'une incrémentation
"toute bête" (+1 à chaque fois, sauf aux sauts de pas spécifiés) ? Tu veux
vérifier si je suis ?... :-))
mais pourquoi tu me fais un tirage aléatoire au lieu d'une incrémentation
"toute bête" (+1 à chaque fois, sauf aux sauts de pas spécifiés) ? Tu veux
vérifier si je suis ?... :-))