OVH Cloud OVH Cloud

insertion d'un nombre de lignes

4 réponses
Avatar
boblebob
salut,

je voudrais optimiser un travail. Voici le point de départ, un tableau de 3
col et X lignes (j'ai mis des "," pour séparer les col).
A , B, C
1 code1,2,p
2 code2,3,m
3 code3,4,m
4 code4,1,z
...etc...

Je tente de faire une macro qui permettrait de créer autant de lignes que la
valeur trouvé en col B.
ce qui devrait me donner le tableau suivant (en gros si B2=2 alors créer 1
ligne pour le code1 ; si B2=4 alors créer 3 lignes pour le code1...)
A , B, C
1 code1,2,p
2 code1,,p
2 code2,3,m
3 code2,,m
4 code2,,m
etc...
et là je sèche sur les boucles...si vous avez une idée je suis preneur
merci
--
a+
bob
nospam00-boblebob@voila.fr
(enlever nospam00-)

4 réponses

Avatar
boblebob
salut et merci,

c'est presque ça sauf que ta macros insert autant de lignes que la valeur
trouvée en col B alors qu'elle devrait insérer une ligne de moins que la
valeur (si j'ai 4 en B je dois créer 3 lignes et non 4).
Autre chose, si la macro pouvait copier-coller également toutes les valeurs
de la ligne se serait très bien.


---
a+
bob

(enlever nospam00-)
"AV" a écrit dans le message de news:

Sub zz_Insert()
For i = [B65536].End(3).Row To 2 Step -1
On Error Resume Next
For j = 1 To Cells(i, "B").Value
Range("A" & i + 1 & ":C" & i + 1).Insert
Next
Next
End Sub

AV

"boblebob" a écrit dans le message news:
uqV#
salut,

je voudrais optimiser un travail. Voici le point de départ, un tableau
de 3


col et X lignes (j'ai mis des "," pour séparer les col).
A , B, C
1 code1,2,p
2 code2,3,m
3 code3,4,m
4 code4,1,z
...etc...

Je tente de faire une macro qui permettrait de créer autant de lignes
que la


valeur trouvé en col B.
ce qui devrait me donner le tableau suivant (en gros si B2=2 alors créer
1


ligne pour le code1 ; si B2=4 alors créer 3 lignes pour le code1...)
A , B, C
1 code1,2,p
2 code1,,p
2 code2,3,m
3 code2,,m
4 code2,,m
etc...
et là je sèche sur les boucles...si vous avez une idée je suis preneur
merci
--
a+
bob

(enlever nospam00-)








Avatar
AV
c'est presque ça sauf que ta macros insert autant de lignes que la valeur
trouvée en col B alors qu'elle devrait insérer une ligne de moins


** Ben comme t'as dit ça et son contraire :

"Je tente de faire une macro qui permettrait de créer autant de lignes que la
valeur trouvé en col B."
**Ca c'est ce que j'ai fait !
ce qui devrait me donner le tableau suivant (en gros si B2=2 alors créer 1
ligne pour le code1 ; si B2=4 alors créer 3 lignes pour le code1...)
** Ca c'est pas cohérent avec ce qui précède donc il a fallu faire un

choix...c'était donc pas le bon ;-)
Modif :
-----
For j = 1 To Cells(i, "B").Value-1
----
Autre chose, si la macro pouvait copier-coller également toutes les valeurs
de la ligne se serait très bien.
**Quelle ligne ? La ligne entière ?


AV

Avatar
AV
Essaye ça (PS : j'ai pas très bien compris ce que tu voulais copier...)

Sub zz_Insert2()
For i = [B65536].End(3).Row To 2 Step -1
For j = 1 To Cells(i, "B").Value - 1
Range("A" & i + 1 & ":C" & i + 1).Insert Shift:=xlDown
Range("A" & i + 1 & ":C" & i + 1) = Range("A" & i & ":C" & i).Value
Next
Next
End Sub

AV

"boblebob" a écrit dans le message news:
#
effectivement mon message n'était pas très clair, merci pour ta modif, oui
je voudrais copier la ligne entière.

--
a+
bob
"AV" a écrit dans le message de news:

c'est presque ça sauf que ta macros insert autant de lignes que la
valeur


trouvée en col B alors qu'elle devrait insérer une ligne de moins


** Ben comme t'as dit ça et son contraire :

"Je tente de faire une macro qui permettrait de créer autant de lignes que
la

valeur trouvé en col B."
**Ca c'est ce que j'ai fait !
ce qui devrait me donner le tableau suivant (en gros si B2=2 alors créer
1


ligne pour le code1 ; si B2=4 alors créer 3 lignes pour le code1...)
** Ca c'est pas cohérent avec ce qui précède donc il a fallu faire un

choix...c'était donc pas le bon ;-)
Modif :
-----
For j = 1 To Cells(i, "B").Value-1
----
Autre chose, si la macro pouvait copier-coller également toutes les
valeurs


de la ligne se serait très bien.
**Quelle ligne ? La ligne entière ?


AV









Avatar
boblebob
pas mal pour un débutant.
je te remercie.

--
a+
bob

(enlever nospam00-)
"AV" a écrit dans le message de news:

Essaye ça (PS : j'ai pas très bien compris ce que tu voulais copier...)

Sub zz_Insert2()
For i = [B65536].End(3).Row To 2 Step -1
For j = 1 To Cells(i, "B").Value - 1
Range("A" & i + 1 & ":C" & i + 1).Insert Shift:=xlDown
Range("A" & i + 1 & ":C" & i + 1) = Range("A" & i & ":C" &
i).Value

Next
Next
End Sub

AV

"boblebob" a écrit dans le message news:
#
effectivement mon message n'était pas très clair, merci pour ta modif,
oui


je voudrais copier la ligne entière.

--
a+
bob
"AV" a écrit dans le message de news:

c'est presque ça sauf que ta macros insert autant de lignes que la
valeur


trouvée en col B alors qu'elle devrait insérer une ligne de moins


** Ben comme t'as dit ça et son contraire :

"Je tente de faire une macro qui permettrait de créer autant de lignes
que



la
valeur trouvé en col B."
**Ca c'est ce que j'ai fait !
ce qui devrait me donner le tableau suivant (en gros si B2=2 alors
créer




1
ligne pour le code1 ; si B2=4 alors créer 3 lignes pour le code1...)
** Ca c'est pas cohérent avec ce qui précède donc il a fallu faire un

choix...c'était donc pas le bon ;-)
Modif :
-----
For j = 1 To Cells(i, "B").Value-1
----
Autre chose, si la macro pouvait copier-coller également toutes les
valeurs


de la ligne se serait très bien.
**Quelle ligne ? La ligne entière ?


AV