J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la
valeur entrée dans une cellule (ce numéro n'est pas numérique, il est de la
forme aa-xxxxxxx). En rassemblant quelques neurones fatigués, voir ci-dessous
ce que j'ai pondu. La question est : il y a surement un moyen de faire plus
rapidement et plus élégamment...... Appel aux gourous !!!
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la
valeur entrée dans une cellule (ce numéro n'est pas numérique, il est de la
forme aa-xxxxxxx). En rassemblant quelques neurones fatigués, voir ci-dessous
ce que j'ai pondu. La question est : il y a surement un moyen de faire plus
rapidement et plus élégamment...... Appel aux gourous !!!
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la
valeur entrée dans une cellule (ce numéro n'est pas numérique, il est de la
forme aa-xxxxxxx). En rassemblant quelques neurones fatigués, voir ci-dessous
ce que j'ai pondu. La question est : il y a surement un moyen de faire plus
rapidement et plus élégamment...... Appel aux gourous !!!
Bonjour le forum !
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la valeur entrée dans une
cellule (ce numéro n'est pas numérique, il est de la forme aa-xxxxxxx). En rassemblant quelques neurones
fatigués, voir ci-dessous ce que j'ai pondu. La question est : il y a surement un moyen de faire plus
rapidement et plus élégamment...... Appel aux gourous !!!
Merci d'avance à tou(te)s
----------------------
Sub Numero()
Application.EnableEvents = False
debut = ActiveCell.Value
nombre = InputBox("Quantité")
For i = 1 To nombre - 1
unite = Val(Right(debut, 1))
If unite <> 9 Then
unite = unite + 1
debut = Left(debut, Len(debut) - 1) & unite
Else
unite = 0
dizaine = Val(Right(Left(debut, Len(debut) - 1), 1))
If dizaine <> 9 Then
dizaine = dizaine + 1
debut = Left(debut, Len(debut) - 2) & dizaine & unite
Else
dizaine = 0
centaine = Val(Right(Left(debut, Len(debut) - 2), 1))
If centaine <> 9 Then
centaine = centaine + 1
debut = Left(debut, Len(debut) - 3) & centaine & dizaine & unite
Else
centaine = 0
millier = Val(Right(Left(debut, Len(debut) - 3), 1))
If millier <> 9 Then
millier = millier + 1
debut = Left(debut, Len(debut) - 4) & millier & centaine & dizaine & unite
End If
End If
End If
End If
ActiveCell.Offset(i, 0).Value = debut
Next
Application.EnableEvents = True
End Sub
----------------
@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G. Courteline
Bonjour le forum !
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la valeur entrée dans une
cellule (ce numéro n'est pas numérique, il est de la forme aa-xxxxxxx). En rassemblant quelques neurones
fatigués, voir ci-dessous ce que j'ai pondu. La question est : il y a surement un moyen de faire plus
rapidement et plus élégamment...... Appel aux gourous !!!
Merci d'avance à tou(te)s
----------------------
Sub Numero()
Application.EnableEvents = False
debut = ActiveCell.Value
nombre = InputBox("Quantité")
For i = 1 To nombre - 1
unite = Val(Right(debut, 1))
If unite <> 9 Then
unite = unite + 1
debut = Left(debut, Len(debut) - 1) & unite
Else
unite = 0
dizaine = Val(Right(Left(debut, Len(debut) - 1), 1))
If dizaine <> 9 Then
dizaine = dizaine + 1
debut = Left(debut, Len(debut) - 2) & dizaine & unite
Else
dizaine = 0
centaine = Val(Right(Left(debut, Len(debut) - 2), 1))
If centaine <> 9 Then
centaine = centaine + 1
debut = Left(debut, Len(debut) - 3) & centaine & dizaine & unite
Else
centaine = 0
millier = Val(Right(Left(debut, Len(debut) - 3), 1))
If millier <> 9 Then
millier = millier + 1
debut = Left(debut, Len(debut) - 4) & millier & centaine & dizaine & unite
End If
End If
End If
End If
ActiveCell.Offset(i, 0).Value = debut
Next
Application.EnableEvents = True
End Sub
----------------
@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G. Courteline
Bonjour le forum !
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la valeur entrée dans une
cellule (ce numéro n'est pas numérique, il est de la forme aa-xxxxxxx). En rassemblant quelques neurones
fatigués, voir ci-dessous ce que j'ai pondu. La question est : il y a surement un moyen de faire plus
rapidement et plus élégamment...... Appel aux gourous !!!
Merci d'avance à tou(te)s
----------------------
Sub Numero()
Application.EnableEvents = False
debut = ActiveCell.Value
nombre = InputBox("Quantité")
For i = 1 To nombre - 1
unite = Val(Right(debut, 1))
If unite <> 9 Then
unite = unite + 1
debut = Left(debut, Len(debut) - 1) & unite
Else
unite = 0
dizaine = Val(Right(Left(debut, Len(debut) - 1), 1))
If dizaine <> 9 Then
dizaine = dizaine + 1
debut = Left(debut, Len(debut) - 2) & dizaine & unite
Else
dizaine = 0
centaine = Val(Right(Left(debut, Len(debut) - 2), 1))
If centaine <> 9 Then
centaine = centaine + 1
debut = Left(debut, Len(debut) - 3) & centaine & dizaine & unite
Else
centaine = 0
millier = Val(Right(Left(debut, Len(debut) - 3), 1))
If millier <> 9 Then
millier = millier + 1
debut = Left(debut, Len(debut) - 4) & millier & centaine & dizaine & unite
End If
End If
End If
End If
ActiveCell.Offset(i, 0).Value = debut
Next
Application.EnableEvents = True
End Sub
----------------
@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G. Courteline
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir
de la valeur entrée dans une cellule (ce numéro n'est pas numérique, il
est de la forme aa-xxxxxxx).
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir
de la valeur entrée dans une cellule (ce numéro n'est pas numérique, il
est de la forme aa-xxxxxxx).
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir
de la valeur entrée dans une cellule (ce numéro n'est pas numérique, il
est de la forme aa-xxxxxxx).
Bonjour le forum !
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la valeur entrée dans une cellule (ce numéro n'est pas
numérique, il est de la forme aa-xxxxxxx). En rassemblant quelques neurones fatigués, voir ci-dessous ce que j'ai pondu. La
question est : il y a surement un moyen de faire plus rapidement et plus élégamment...... Appel aux gourous !!!
Merci d'avance à tou(te)s
----------------------
Sub Numero()
Application.EnableEvents = False
debut = ActiveCell.Value
nombre = InputBox("Quantité")
For i = 1 To nombre - 1
unite = Val(Right(debut, 1))
If unite <> 9 Then
unite = unite + 1
debut = Left(debut, Len(debut) - 1) & unite
Else
unite = 0
dizaine = Val(Right(Left(debut, Len(debut) - 1), 1))
If dizaine <> 9 Then
dizaine = dizaine + 1
debut = Left(debut, Len(debut) - 2) & dizaine & unite
Else
dizaine = 0
centaine = Val(Right(Left(debut, Len(debut) - 2), 1))
If centaine <> 9 Then
centaine = centaine + 1
debut = Left(debut, Len(debut) - 3) & centaine & dizaine & unite
Else
centaine = 0
millier = Val(Right(Left(debut, Len(debut) - 3), 1))
If millier <> 9 Then
millier = millier + 1
debut = Left(debut, Len(debut) - 4) & millier & centaine & dizaine & unite
End If
End If
End If
End If
ActiveCell.Offset(i, 0).Value = debut
Next
Application.EnableEvents = True
End Sub
----------------
@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G. Courteline
Bonjour le forum !
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la valeur entrée dans une cellule (ce numéro n'est pas
numérique, il est de la forme aa-xxxxxxx). En rassemblant quelques neurones fatigués, voir ci-dessous ce que j'ai pondu. La
question est : il y a surement un moyen de faire plus rapidement et plus élégamment...... Appel aux gourous !!!
Merci d'avance à tou(te)s
----------------------
Sub Numero()
Application.EnableEvents = False
debut = ActiveCell.Value
nombre = InputBox("Quantité")
For i = 1 To nombre - 1
unite = Val(Right(debut, 1))
If unite <> 9 Then
unite = unite + 1
debut = Left(debut, Len(debut) - 1) & unite
Else
unite = 0
dizaine = Val(Right(Left(debut, Len(debut) - 1), 1))
If dizaine <> 9 Then
dizaine = dizaine + 1
debut = Left(debut, Len(debut) - 2) & dizaine & unite
Else
dizaine = 0
centaine = Val(Right(Left(debut, Len(debut) - 2), 1))
If centaine <> 9 Then
centaine = centaine + 1
debut = Left(debut, Len(debut) - 3) & centaine & dizaine & unite
Else
centaine = 0
millier = Val(Right(Left(debut, Len(debut) - 3), 1))
If millier <> 9 Then
millier = millier + 1
debut = Left(debut, Len(debut) - 4) & millier & centaine & dizaine & unite
End If
End If
End If
End If
ActiveCell.Offset(i, 0).Value = debut
Next
Application.EnableEvents = True
End Sub
----------------
@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G. Courteline
Bonjour le forum !
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la valeur entrée dans une cellule (ce numéro n'est pas
numérique, il est de la forme aa-xxxxxxx). En rassemblant quelques neurones fatigués, voir ci-dessous ce que j'ai pondu. La
question est : il y a surement un moyen de faire plus rapidement et plus élégamment...... Appel aux gourous !!!
Merci d'avance à tou(te)s
----------------------
Sub Numero()
Application.EnableEvents = False
debut = ActiveCell.Value
nombre = InputBox("Quantité")
For i = 1 To nombre - 1
unite = Val(Right(debut, 1))
If unite <> 9 Then
unite = unite + 1
debut = Left(debut, Len(debut) - 1) & unite
Else
unite = 0
dizaine = Val(Right(Left(debut, Len(debut) - 1), 1))
If dizaine <> 9 Then
dizaine = dizaine + 1
debut = Left(debut, Len(debut) - 2) & dizaine & unite
Else
dizaine = 0
centaine = Val(Right(Left(debut, Len(debut) - 2), 1))
If centaine <> 9 Then
centaine = centaine + 1
debut = Left(debut, Len(debut) - 3) & centaine & dizaine & unite
Else
centaine = 0
millier = Val(Right(Left(debut, Len(debut) - 3), 1))
If millier <> 9 Then
millier = millier + 1
debut = Left(debut, Len(debut) - 4) & millier & centaine & dizaine & unite
End If
End If
End If
End If
ActiveCell.Offset(i, 0).Value = debut
Next
Application.EnableEvents = True
End Sub
----------------
@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet - G. Courteline
"ThierryP" a écrit dans le message de news:J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la
valeur entrée dans une cellule (ce numéro n'est pas numérique, il est de la
forme aa-xxxxxxx). En rassemblant quelques neurones fatigués, voir ci-dessous
ce que j'ai pondu. La question est : il y a surement un moyen de faire plus
rapidement et plus élégamment...... Appel aux gourous !!!
*****************************
Avec ta solution...problèmes possibles :
Essaye donc avec la variable "nombre" = 30000
......
Une approche :
Sub azerty()
nombre = InputBox("Quantité")
Application.ScreenUpdating = False
x1 = Left(ActiveCell, InStr(ActiveCell, "-"))
x2 = Mid(ActiveCell, InStr(ActiveCell, "-") + 1, 9 ^ 9)
décal = 1
For i = 1 To nombre
x2 = x2 + 1
ActiveCell.Offset(décal, 0).Value = x1& x2
décal = décal + 1
Next
End Sub
Etc
"ThierryP"<t@toto.com> a écrit dans le message de news:
O6ougTe5KHA.1432@TK2MSFTNGP04.phx.gbl...
J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la
valeur entrée dans une cellule (ce numéro n'est pas numérique, il est de la
forme aa-xxxxxxx). En rassemblant quelques neurones fatigués, voir ci-dessous
ce que j'ai pondu. La question est : il y a surement un moyen de faire plus
rapidement et plus élégamment...... Appel aux gourous !!!
*****************************
Avec ta solution...problèmes possibles :
Essaye donc avec la variable "nombre" = 30000
......
Une approche :
Sub azerty()
nombre = InputBox("Quantité")
Application.ScreenUpdating = False
x1 = Left(ActiveCell, InStr(ActiveCell, "-"))
x2 = Mid(ActiveCell, InStr(ActiveCell, "-") + 1, 9 ^ 9)
décal = 1
For i = 1 To nombre
x2 = x2 + 1
ActiveCell.Offset(décal, 0).Value = x1& x2
décal = décal + 1
Next
End Sub
Etc
"ThierryP" a écrit dans le message de news:J'ai besoin de créer des numéros de série incrémentés de 1 en 1 à partir de la
valeur entrée dans une cellule (ce numéro n'est pas numérique, il est de la
forme aa-xxxxxxx). En rassemblant quelques neurones fatigués, voir ci-dessous
ce que j'ai pondu. La question est : il y a surement un moyen de faire plus
rapidement et plus élégamment...... Appel aux gourous !!!
*****************************
Avec ta solution...problèmes possibles :
Essaye donc avec la variable "nombre" = 30000
......
Une approche :
Sub azerty()
nombre = InputBox("Quantité")
Application.ScreenUpdating = False
x1 = Left(ActiveCell, InStr(ActiveCell, "-"))
x2 = Mid(ActiveCell, InStr(ActiveCell, "-") + 1, 9 ^ 9)
décal = 1
For i = 1 To nombre
x2 = x2 + 1
ActiveCell.Offset(décal, 0).Value = x1& x2
décal = décal + 1
Next
End Sub
Etc
Bonjour,
Une piste avec comme minimum d'entrée de la cellule de départ "aa-"
'---------------
Sub Numero()
'Application.EnableEvents = False
If ActiveCell = "" Or Len(ActiveCell)< 3 Then Exit Sub
ActiveCell.Value = Left(ActiveCell, 3)& Format(Val(Mid(ActiveCell, 4, 9 ^ 9)) + (Abs(Mid(ActiveCell, 4, 9 ^
9) = "") * 1), "0000000")
nombre = InputBox("Quantité")
If Not IsNumeric(nombre) Then Exit Sub
debut = Left(ActiveCell, 3)& Format(Val(Mid(ActiveCell, 4, 9 ^ 9)) + (Abs(Mid(ActiveCell, 4, 9 ^ 9) = "") *
1), "0000000")
For i = 1 To nombre
ActiveCell.Offset(i, 0).Value = Left(debut, 3)& Format(Mid(debut, 4, 9 ^ 9) + i, "0000000")
Next
Application.EnableEvents = True
End Sub
'--------------------
Bonjour,
Une piste avec comme minimum d'entrée de la cellule de départ "aa-"
'---------------
Sub Numero()
'Application.EnableEvents = False
If ActiveCell = "" Or Len(ActiveCell)< 3 Then Exit Sub
ActiveCell.Value = Left(ActiveCell, 3)& Format(Val(Mid(ActiveCell, 4, 9 ^ 9)) + (Abs(Mid(ActiveCell, 4, 9 ^
9) = "") * 1), "0000000")
nombre = InputBox("Quantité")
If Not IsNumeric(nombre) Then Exit Sub
debut = Left(ActiveCell, 3)& Format(Val(Mid(ActiveCell, 4, 9 ^ 9)) + (Abs(Mid(ActiveCell, 4, 9 ^ 9) = "") *
1), "0000000")
For i = 1 To nombre
ActiveCell.Offset(i, 0).Value = Left(debut, 3)& Format(Mid(debut, 4, 9 ^ 9) + i, "0000000")
Next
Application.EnableEvents = True
End Sub
'--------------------
Bonjour,
Une piste avec comme minimum d'entrée de la cellule de départ "aa-"
'---------------
Sub Numero()
'Application.EnableEvents = False
If ActiveCell = "" Or Len(ActiveCell)< 3 Then Exit Sub
ActiveCell.Value = Left(ActiveCell, 3)& Format(Val(Mid(ActiveCell, 4, 9 ^ 9)) + (Abs(Mid(ActiveCell, 4, 9 ^
9) = "") * 1), "0000000")
nombre = InputBox("Quantité")
If Not IsNumeric(nombre) Then Exit Sub
debut = Left(ActiveCell, 3)& Format(Val(Mid(ActiveCell, 4, 9 ^ 9)) + (Abs(Mid(ActiveCell, 4, 9 ^ 9) = "") *
1), "0000000")
For i = 1 To nombre
ActiveCell.Offset(i, 0).Value = Left(debut, 3)& Format(Mid(debut, 4, 9 ^ 9) + i, "0000000")
Next
Application.EnableEvents = True
End Sub
'--------------------
Peut-être préfères-tu cette syntaxe :
'-----------------------------
Sub test()
Dim Rad As String, Coef As Long
With Worksheets("Feuil1").Range("A1:A3000")
Rad = Left(.Item(1, 1), InStr(1, .Item(1, 1), "-", vbTextCompare))
Coef = CLng(Replace(.Item(1, 1), Rad, ""))
.Formula = "="""& Rad& """&"& Coef - 1& "+"& "Row(A1)"
.Value = .Value
End With
End Sub
'-----------------------------
"michdenis" a écrit dans le message de groupe de discussion :
Bonjour,
Une alternative :
A ) Nom de la feuille à adapter
B ) J'ai déterminé que la première cellule était A1, à adapter
C ) En A1 se trouve la chaîne de caractères
première partie : Alphanumérique
Séparateur : "-"
Deuxième partie : chiffre x
D) Recopie la section alphanumérique en incrémentant de 1
la section numérique.
'-----------------------------------
Sub test()
Dim Rg As Range,Rad as String, Coef As Long
With Worksheets("Feuil1")
Set Rg = .Range("A1:A3000")
rad = Left(.Range("A1"), InStr(1, .Range("A1"), "-", vbTextCompare))
coef = CLng(Replace(.Range("A1"), rad, ""))
End With
With Rg
.Offset(1).Formula = "="""& rad& """&"& coef& "+"& "Row(A1)"
.Offset(1).Value = .Value
End With
End Sub
'-----------------------------------
Peut-être préfères-tu cette syntaxe :
'-----------------------------
Sub test()
Dim Rad As String, Coef As Long
With Worksheets("Feuil1").Range("A1:A3000")
Rad = Left(.Item(1, 1), InStr(1, .Item(1, 1), "-", vbTextCompare))
Coef = CLng(Replace(.Item(1, 1), Rad, ""))
.Formula = "="""& Rad& """&"& Coef - 1& "+"& "Row(A1)"
.Value = .Value
End With
End Sub
'-----------------------------
"michdenis"<michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
AB0BB6BD-ACF7-4901-A7C2-648C91BF9B3A@microsoft.com...
Bonjour,
Une alternative :
A ) Nom de la feuille à adapter
B ) J'ai déterminé que la première cellule était A1, à adapter
C ) En A1 se trouve la chaîne de caractères
première partie : Alphanumérique
Séparateur : "-"
Deuxième partie : chiffre x
D) Recopie la section alphanumérique en incrémentant de 1
la section numérique.
'-----------------------------------
Sub test()
Dim Rg As Range,Rad as String, Coef As Long
With Worksheets("Feuil1")
Set Rg = .Range("A1:A3000")
rad = Left(.Range("A1"), InStr(1, .Range("A1"), "-", vbTextCompare))
coef = CLng(Replace(.Range("A1"), rad, ""))
End With
With Rg
.Offset(1).Formula = "="""& rad& """&"& coef& "+"& "Row(A1)"
.Offset(1).Value = .Value
End With
End Sub
'-----------------------------------
Peut-être préfères-tu cette syntaxe :
'-----------------------------
Sub test()
Dim Rad As String, Coef As Long
With Worksheets("Feuil1").Range("A1:A3000")
Rad = Left(.Item(1, 1), InStr(1, .Item(1, 1), "-", vbTextCompare))
Coef = CLng(Replace(.Item(1, 1), Rad, ""))
.Formula = "="""& Rad& """&"& Coef - 1& "+"& "Row(A1)"
.Value = .Value
End With
End Sub
'-----------------------------
"michdenis" a écrit dans le message de groupe de discussion :
Bonjour,
Une alternative :
A ) Nom de la feuille à adapter
B ) J'ai déterminé que la première cellule était A1, à adapter
C ) En A1 se trouve la chaîne de caractères
première partie : Alphanumérique
Séparateur : "-"
Deuxième partie : chiffre x
D) Recopie la section alphanumérique en incrémentant de 1
la section numérique.
'-----------------------------------
Sub test()
Dim Rg As Range,Rad as String, Coef As Long
With Worksheets("Feuil1")
Set Rg = .Range("A1:A3000")
rad = Left(.Range("A1"), InStr(1, .Range("A1"), "-", vbTextCompare))
coef = CLng(Replace(.Range("A1"), rad, ""))
End With
With Rg
.Offset(1).Formula = "="""& rad& """&"& coef& "+"& "Row(A1)"
.Offset(1).Value = .Value
End With
End Sub
'-----------------------------------