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
Bonjoir, comme dirait quelqu'un.... sur le principe, ça marche ! Le problème c'est que je ne sais pas à l'avance sur quelle ligne je vais entamer une nouvelle "série de numéros de série", ni combien de numéros je vais avoir à renseigner; c'est pour cela que je préfère passer par une macro.
Merci !
Le 27/04/2010 14:08, Modeste a écrit :
Bonsour®
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 C1 le N° d'origine (valeur entrée dans une cellule ) en A1 la formule : ="aa-"&TEXTE($C$1+LIGNE();"0000000")
recopier la formule vers le bas autant que nécessaire
-- ---- ThierryP
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet (Georges Courteline)
Bonjoir, comme dirait quelqu'un....
sur le principe, ça marche ! Le problème c'est que je ne sais pas à l'avance sur
quelle ligne je vais entamer une nouvelle "série de numéros de série", ni
combien de numéros je vais avoir à renseigner; c'est pour cela que je préfère
passer par une macro.
Merci !
Le 27/04/2010 14:08, Modeste a écrit :
Bonsour®
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 C1 le N° d'origine (valeur entrée dans une cellule )
en A1 la formule :
="aa-"&TEXTE($C$1+LIGNE();"0000000")
recopier la formule vers le bas autant que nécessaire
--
----
ThierryP
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet
(Georges Courteline)
Bonjoir, comme dirait quelqu'un.... sur le principe, ça marche ! Le problème c'est que je ne sais pas à l'avance sur quelle ligne je vais entamer une nouvelle "série de numéros de série", ni combien de numéros je vais avoir à renseigner; c'est pour cela que je préfère passer par une macro.
Merci !
Le 27/04/2010 14:08, Modeste a écrit :
Bonsour®
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 C1 le N° d'origine (valeur entrée dans une cellule ) en A1 la formule : ="aa-"&TEXTE($C$1+LIGNE();"0000000")
recopier la formule vers le bas autant que nécessaire
-- ---- ThierryP
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet (Georges Courteline)
MehdiH
Bonjour à tous,
Juste une parenthèse ( Outre l'automatisation de la tâche, je tiens juste à rappeler, à ceux qui d'entre nous débutent, qu'il est tout à fait possible d'utiliser la poigner de recopie pour obtenir le même résultat. Seul désagrément, peut être, c'est que vous n'allez pas vous arrêter pile poile à la quantité souhaitée du premier coup. )
Merci pour les différentes réponses, cette diversité permet d'en apprendre plus côté programmation.
Cordialement MehdiH -------------------------------------------------------- "ThierryP" a écrit dans le message de groupe de discussion :
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 à tous,
Juste une parenthèse (
Outre l'automatisation de la tâche, je tiens juste à rappeler, à ceux qui
d'entre nous débutent, qu'il est tout à fait possible d'utiliser la poigner
de recopie pour obtenir le même résultat. Seul désagrément, peut être, c'est
que vous n'allez pas vous arrêter pile poile à la quantité souhaitée du
premier coup.
)
Merci pour les différentes réponses, cette diversité permet d'en apprendre
plus côté programmation.
Cordialement
MehdiH
--------------------------------------------------------
"ThierryP" <t@toto.com> a écrit dans le message de groupe de discussion :
O6ougTe5KHA.1432@TK2MSFTNGP04.phx.gbl...
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
Juste une parenthèse ( Outre l'automatisation de la tâche, je tiens juste à rappeler, à ceux qui d'entre nous débutent, qu'il est tout à fait possible d'utiliser la poigner de recopie pour obtenir le même résultat. Seul désagrément, peut être, c'est que vous n'allez pas vous arrêter pile poile à la quantité souhaitée du premier coup. )
Merci pour les différentes réponses, cette diversité permet d'en apprendre plus côté programmation.
Cordialement MehdiH -------------------------------------------------------- "ThierryP" a écrit dans le message de groupe de discussion :
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
MehdiH
re-bonjour à tous,
Ceci m'a donné une idée de macro qui ce base sur la recopie ------------------ Sub Macro1 Dim DestPlage as string Nombre= val(inputbox("Quantité")) DestPlage = range ( activecell , cells ( activecell.row+ Nombre -1, activecell.column ) ).address Selection.autofill Destination:=range(DestPlage), Type:=xlFillDefault End sub ------------------ Cordialement MehdiH ------------------------------------------- "MehdiH" a écrit dans le message de groupe de discussion : OrXQc#
Bonjour à tous,
Juste une parenthèse ( Outre l'automatisation de la tâche, je tiens juste à rappeler, à ceux qui d'entre nous débutent, qu'il est tout à fait possible d'utiliser la poigner de recopie pour obtenir le même résultat. Seul désagrément, peut être, c'est que vous n'allez pas vous arrêter pile poile à la quantité souhaitée du premier coup. )
Merci pour les différentes réponses, cette diversité permet d'en apprendre plus côté programmation.
Cordialement MehdiH -------------------------------------------------------- "ThierryP" a écrit dans le message de groupe de discussion :
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
re-bonjour à tous,
Ceci m'a donné une idée de macro qui ce base sur la recopie
------------------
Sub Macro1
Dim DestPlage as string
Nombre= val(inputbox("Quantité"))
DestPlage = range ( activecell , cells ( activecell.row+ Nombre -1,
activecell.column ) ).address
Selection.autofill Destination:=range(DestPlage), Type:=xlFillDefault
End sub
------------------
Cordialement
MehdiH
-------------------------------------------
"MehdiH" <happymedia_dz@hotmail.com> a écrit dans le message de groupe de
discussion : OrXQc#75KHA.4116@TK2MSFTNGP02.phx.gbl...
Bonjour à tous,
Juste une parenthèse (
Outre l'automatisation de la tâche, je tiens juste à rappeler, à ceux qui
d'entre nous débutent, qu'il est tout à fait possible d'utiliser la
poigner de recopie pour obtenir le même résultat. Seul désagrément, peut
être, c'est que vous n'allez pas vous arrêter pile poile à la quantité
souhaitée du premier coup.
)
Merci pour les différentes réponses, cette diversité permet d'en apprendre
plus côté programmation.
Cordialement
MehdiH
--------------------------------------------------------
"ThierryP" <t@toto.com> a écrit dans le message de groupe de discussion :
O6ougTe5KHA.1432@TK2MSFTNGP04.phx.gbl...
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
Ceci m'a donné une idée de macro qui ce base sur la recopie ------------------ Sub Macro1 Dim DestPlage as string Nombre= val(inputbox("Quantité")) DestPlage = range ( activecell , cells ( activecell.row+ Nombre -1, activecell.column ) ).address Selection.autofill Destination:=range(DestPlage), Type:=xlFillDefault End sub ------------------ Cordialement MehdiH ------------------------------------------- "MehdiH" a écrit dans le message de groupe de discussion : OrXQc#
Bonjour à tous,
Juste une parenthèse ( Outre l'automatisation de la tâche, je tiens juste à rappeler, à ceux qui d'entre nous débutent, qu'il est tout à fait possible d'utiliser la poigner de recopie pour obtenir le même résultat. Seul désagrément, peut être, c'est que vous n'allez pas vous arrêter pile poile à la quantité souhaitée du premier coup. )
Merci pour les différentes réponses, cette diversité permet d'en apprendre plus côté programmation.
Cordialement MehdiH -------------------------------------------------------- "ThierryP" a écrit dans le message de groupe de discussion :
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