Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Besoin d'aide pour une macro

4 réponses
Avatar
hydrae
Bonjour à tous,

Je ne maitrise pas du tout les macro sous excel, c'est pourquoi je me permets de solliciter votre aide.

J'ai actuellement un tableau de 16 000 lignes. C'est une questionnaire rempli par différentes personnes, donc les lignes 1 à 100 se répètent (101 à 200, 201 à 300 etc) (meme chose des colonnes A à E, puis réponses differentes de F à BZ).

Cependant je dois rajouter une ligne qui sera exactement la même ("Other" inscrit sur la cellule A, tout le reste blanc). Je dois insérer cette ligne avant la ligne 10, 23 et 76 et ceux sur tout le tableau (donc ensuite avant la ligne 110, 123, 176...)

J'ai essayé avec l'enregistreur automatique de macro, mais je ne sais pas comment automatiser la chose, pour qu'il fasse la meme opération sur les lignes suivantes, d'autant plus qu'après avoir ajouter une ligne, la ligne suivante sera forcément décalée (ce ne sera plus la ligne 23 mais la ligne 24).

Savez-vous si ce genre de manip est faisable?
Je vous serais vraiment très reconnaissant si quelqu'un pouvait m'apporter son aide !

Merci beaucoup
Francois

4 réponses

Avatar
LSteph
Bonjour,

Selon ce que j'ai fini par comprendre dans cette question:

'dans un module standard
Sub arebourinsert()
Dim i As Long
For i = 16000 To 10 Step -1
Select Case Right(CStr(i), 2)
Case "76", "23", "10"
Rows(i).EntireRow.Insert
Rows(i).Cells(1) = "Other"
End Select
Next

End Sub

'LSteph


On Apr 4, 10:00 am, hydrae wrote:
Bonjour tous,

Je ne maitrise pas du tout les macro sous excel, c'est pourquoi je me per mets
de solliciter votre aide.

J'ai actuellement un tableau de 16 000 lignes. C'est une questionnaire re mpli
par diff rentes personnes, donc les lignes 1 100 se r p tent (101 200, 20 1
300 etc) (meme chose des colonnes A E, puis r ponses differentes de F BZ) .

Cependant je dois rajouter une ligne qui sera exactement la m me ("Other"
inscrit sur la cellule A, tout le reste blanc). Je dois ins rer cette lig ne
avant la ligne 10, 23 et 76 et ceux sur tout le tableau (donc ensuite ava nt la
ligne 110, 123, 176...)

J'ai essay avec l'enregistreur automatique de macro, mais je ne sais pas
comment automatiser la chose, pour qu'il fasse la meme op ration sur les lignes
suivantes, d'autant plus qu'apr s avoir ajouter une ligne, la ligne suiva nte
sera forc ment d cal e (ce ne sera plus la ligne 23 mais la ligne 24).

Savez-vous si ce genre de manip est faisable?
Je vous serais vraiment tr s reconnaissant si quelqu'un pouvait m'apporte r son
aide !

Merci beaucoup
Francois
Avatar
hydrae
LSteph a écrit le 05/04/2011 à 10h58 :
Bonjour,

Selon ce que j'ai fini par comprendre dans cette question:

'dans un module standard
Sub arebourinsert()
Dim i As Long
For i = 16000 To 10 Step -1
Select Case Right(CStr(i), 2)
Case "76", "23", "10"
Rows(i).EntireRow.Insert
Rows(i).Cells(1) = "Other"
End Select
Next

End Sub

'LSteph


On Apr 4, 10:00 am, hydrae wrote:
Bonjour tous,

Je ne maitrise pas du tout les macro sous excel, c'est pourquoi je me per mets
de solliciter votre aide.

J'ai actuellement un tableau de 16 000 lignes. C'est une questionnaire re mpli
par diff rentes personnes, donc les lignes 1 100 se r p tent (101 200, 20 1
300 etc) (meme chose des colonnes A E, puis r ponses differentes de F BZ) .

Cependant je dois rajouter une ligne qui sera exactement la m me
("Other"
inscrit sur la cellule A, tout le reste blanc). Je dois ins rer cette lig ne
avant la ligne 10, 23 et 76 et ceux sur tout le tableau (donc ensuite ava nt
la
ligne 110, 123, 176...)

J'ai essay avec l'enregistreur automatique de macro, mais je ne sais pas
comment automatiser la chose, pour qu'il fasse la meme op ration sur les
lignes
suivantes, d'autant plus qu'apr s avoir ajouter une ligne, la ligne suiva nte
sera forc ment d cal e (ce ne sera plus la ligne 23 mais la ligne 24).

Savez-vous si ce genre de manip est faisable?
Je vous serais vraiment tr s reconnaissant si quelqu'un pouvait m'apporte r
son
aide !

Merci beaucoup
Francois




Bonjour LSteph,

Merci beaucoup pour votre réponse. La macro fait exactement ce que je voulais.

Par contre cela serait-il également réalisable si le numéro de cellule ne contenait pas toujours 76, 23 ou 10 mais était toujours espacé par le meme nombre de lignes?

Par exemple, ci-dessous, si je voulais rajouter une ligne avant chaque "Q10", ce qui correspondrait ici aux lignes actuelles 9, 18 et 27 (donc espacés de 9 lignes à chaque fois)

1 Q1
2 Q2
3 Q3
4 Q5
5 Q6
6 Q7
7 Q8
8 Q9
9 Q10
10 Q1
11 Q2
12 Q3
13 Q5
14 Q6
15 Q7
16 Q8
17 Q9
18 Q10
19 Q1
20 Q2
21 Q3
22 Q5
23 Q6
24 Q7
25 Q8
26 Q9
27 Q10
...

Cela est-il faisable ?

Merci beaucoup, ça fait vraiment plaisir d'avoir de l'aide !

Francois
Avatar
LSteph
Bonjour,

Pour le cas précédent.

>> avant la ligne 10, 23 et 76


...
>> sera forc ment d cal e (ce ne sera plus la ligne 23 mais la ligne 24).


Tu auras noté que la boucle s'effectue de bas en haut, exit ainsi le
souci du decalage lors de l'insertion.

Pour cette alternative
Par exemple, ci-dessous, si je voulais rajouter une ligne avant chaque "Q 10",


Plus besoin du select case des lignes on conditionne sur cette valeur
si celle-ci est exactement le contenu des cellules où insérer
sauf qu comme il n'y a pas de q4 pour le bloc du haut il n'y aura que
8 valeurs et cela fait bizarre de couper avant la valeur "Q10" perso
j'aurais choisi "Q1"
mais qu'à cela ne tienne:

Sub aq10insert()
Dim i As Long
For i = 16000 To 1 Step -1
With [a:a]
If .Cells(i) = "Q10" Then
Rows(i).EntireRow.Insert
.Cells(i) = "Other"
End If
End With
Next
End Sub

'LSteph

On Apr 5, 6:18 pm, hydrae wrote:
LSteph a crit le 05/04/2011 10h58 :







> Bonjour,

> Selon ce que j'ai fini par comprendre dans cette question:

> 'dans un module standard
> Sub arebourinsert()
> Dim i As Long
> For i = 16000 To 10 Step -1
> Select Case Right(CStr(i), 2)
> Case "76", "23", "10"
> Rows(i).EntireRow.Insert
> Rows(i).Cells(1) = "Other"
> End Select
> Next

> End Sub

> 'LSteph

> On Apr 4, 10:00 am, hydrae  wrote:
>> Bonjour tous,

>> Je ne maitrise pas du tout les macro sous excel, c'est pourquoi je me per
mets
>> de solliciter votre aide.

>> J'ai actuellement un tableau de 16 000 lignes. C'est une questionnaire re
mpli
>> par diff rentes personnes, donc les lignes 1 100 se r p tent (101 200, 20 1
>> 300 etc) (meme chose des colonnes A E, puis r ponses differentes de F BZ) .

>> Cependant je dois rajouter une ligne qui sera exactement la m me
>> ("Other"
>> inscrit sur la cellule A, tout le reste blanc). Je dois ins rer cette lig
ne
>> avant la ligne 10, 23 et 76 et ceux sur tout le tableau (donc ensuite ava
nt
>> la
>> ligne 110, 123, 176...)

>> J'ai essay avec l'enregistreur automatique de macro, mais je ne sais p as
>> comment automatiser la chose, pour qu'il fasse la meme op ration sur l es
>> lignes
>> suivantes, d'autant plus qu'apr s avoir ajouter une ligne, la ligne su iva
nte
>> sera forc ment d cal e (ce ne sera plus la ligne 23 mais la ligne 24).

>> Savez-vous si ce genre de manip est faisable?
>> Je vous serais vraiment tr s reconnaissant si quelqu'un pouvait m'appo rte r
>> son
>> aide !

>> Merci beaucoup
>> Francois

Bonjour LSteph,

Merci beaucoup pour votre r ponse. La macro fait exactement ce que je vou lais.

Par contre cela serait-il galement r alisable si le num ro de cellule ne
contenait pas toujours 76, 23 ou 10 mais tait toujours espac par le meme
nombre de lignes?

Par exemple, ci-dessous, si je voulais rajouter une ligne avant chaque "Q 10",
ce qui correspondrait ici aux lignes actuelles 9, 18 et 27 (donc espac s de 9
lignes chaque fois)

1 Q1
2 Q2
3 Q3
4 Q5
5 Q6
6 Q7
7 Q8
8 Q9
9 Q10
10 Q1
11 Q2
12 Q3
13 Q5
14 Q6
15 Q7
16 Q8
17 Q9
18 Q10
19 Q1
20 Q2
21 Q3
22 Q5
23 Q6
24 Q7
25 Q8
26 Q9
27 Q10
..

Cela est-il faisable ?

Merci beaucoup, a fait vraiment plaisir d'avoir de l'aide !

Francois
Avatar
hydrae
LSteph a écrit le 06/04/2011 à 12h26 :
Bonjour,

Pour le cas précédent.

>> avant la ligne 10, 23 et 76



...
>> sera forc ment d cal e (ce ne sera plus la ligne 23 mais la ligne
24).



Tu auras noté que la boucle s'effectue de bas en haut, exit ainsi le
souci du decalage lors de l'insertion.

Pour cette alternative
Par exemple, ci-dessous, si je voulais rajouter une ligne avant chaque "Q
10",



Plus besoin du select case des lignes on conditionne sur cette valeur
si celle-ci est exactement le contenu des cellules où insérer
sauf qu comme il n'y a pas de q4 pour le bloc du haut il n'y aura que
8 valeurs et cela fait bizarre de couper avant la valeur "Q10" perso
j'aurais choisi "Q1"
mais qu'à cela ne tienne:

Sub aq10insert()
Dim i As Long
For i = 16000 To 1 Step -1
With [a:a]
If .Cells(i) = "Q10" Then
Rows(i).EntireRow.Insert
.Cells(i) = "Other"
End If
End With
Next
End Sub

'LSteph

On Apr 5, 6:18 pm, hydrae wrote:
LSteph a crit le 05/04/2011 10h58 :







> Bonjour,

> Selon ce que j'ai fini par comprendre dans cette question:

> 'dans un module standard
> Sub arebourinsert()
> Dim i As Long
> For i = 16000 To 10 Step -1
> Select Case Right(CStr(i), 2)
> Case "76", "23", "10"
> Rows(i).EntireRow.Insert
> Rows(i).Cells(1) = "Other"
> End Select
> Next

> End Sub

> 'LSteph

> On Apr 4, 10:00 am, hydrae  wrote:
>> Bonjour tous,

>> Je ne maitrise pas du tout les macro sous excel, c'est pourquoi je me
per
mets
>> de solliciter votre aide.

>> J'ai actuellement un tableau de 16 000 lignes. C'est une
questionnaire re
mpli
>> par diff rentes personnes, donc les lignes 1 100 se r p tent (101
200, 20 1
>> 300 etc) (meme chose des colonnes A E, puis r ponses differentes de F
BZ) .

>> Cependant je dois rajouter une ligne qui sera exactement la m me
>> ("Other"
>> inscrit sur la cellule A, tout le reste blanc). Je dois ins rer cette
lig
ne
>> avant la ligne 10, 23 et 76 et ceux sur tout le tableau (donc ensuite
ava
nt
>> la
>> ligne 110, 123, 176...)

>> J'ai essay avec l'enregistreur automatique de macro, mais je ne sais
p as
>> comment automatiser la chose, pour qu'il fasse la meme op ration sur
l es
>> lignes
>> suivantes, d'autant plus qu'apr s avoir ajouter une ligne, la ligne
su iva
nte
>> sera forc ment d cal e (ce ne sera plus la ligne 23 mais la ligne
24).

>> Savez-vous si ce genre de manip est faisable?
>> Je vous serais vraiment tr s reconnaissant si quelqu'un pouvait
m'appo rte r
>> son
>> aide !

>> Merci beaucoup
>> Francois

Bonjour LSteph,

Merci beaucoup pour votre r ponse. La macro fait exactement ce que je vou
lais.

Par contre cela serait-il galement r alisable si le num ro de cellule ne
contenait pas toujours 76, 23 ou 10 mais tait toujours espac par le meme
nombre de lignes?

Par exemple, ci-dessous, si je voulais rajouter une ligne avant chaque "Q
10",
ce qui correspondrait ici aux lignes actuelles 9, 18 et 27 (donc espac s de 9
lignes chaque fois)

1 Q1
2 Q2
3 Q3
4 Q5
5 Q6
6 Q7
7 Q8
8 Q9
9 Q10
10 Q1
11 Q2
12 Q3
13 Q5
14 Q6
15 Q7
16 Q8
17 Q9
18 Q10
19 Q1
20 Q2
21 Q3
22 Q5
23 Q6
24 Q7
25 Q8
26 Q9
27 Q10
..

Cela est-il faisable ?

Merci beaucoup, a fait vraiment plaisir d'avoir de l'aide !

Francois




Génial !!!

Merci beaucoup :)

Vraiment merci !!!

Bonne journée :=)

Francois