Forum Clubic

Macro Excel Pour Inserer Des Lignes - insertion automatiques de lignes

Bonjour,
Je débute en VBA…et j’ai un petit souci !!!
Je souhaite insérer automatiquement 4 lignes en dessous de chaque ligne selectionnée… Ci dessous, le code dans lequel il manque qqch pour qu’il fonctionne correctement…Si je selectionne 1 ligne, la macro insere bien 4 lignes en doussous…Mais si je selectionne 2 lignes, la macro en insere 8…Le tableau que je dois modifier contient près de 10000 lignes et si je dois répéter la macro à chaque ligne selectionnée une à une, j’en ai pour des heures…
L’aide de la communauté clubic sera la bienvenue !!!

Sub Macro3()

’ Macro3 Macro
’ Macro enregistrée le 07/06/2005 par Ity


Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
Selection.Insert Shift:=xlDown
End Sub

Essaie ce code:

For i=1 to 10000
CurLigne= i+4*(i-1)
Worksheets("TaFeuille").Rows(CurLigne).Insert Shift:=xlDown
Worksheets("TaFeuille").Rows(CurLigne+1).Insert Shift:=xlDown
Worksheets("TaFeuille").Rows(CurLigne+2).Insert Shift:=xlDown
Worksheets("TaFeuille").Rows(CurLigne+3).Insert Shift:=xlDown
loop

// Worksheets("TaFeuille").Rows(2).Insert Shift:=xlDown
// insert une ligne apres la 2è ligne

Je te remercie pour ta proposition, je vais l’essayer… Avant que tu ne répondes, j’ai trouvé ça…

Dim x As Integer
For x = Range(“A65536”).End(xlUp).Row To 1 Step -1
If Not Intersect(Range(“A” & x), Selection) Is Nothing Then
Rows(x).Insert Shift:=xlDown
Rows(x).Insert Shift:=xlDown
Rows(x).Insert Shift:=xlDown
Rows(x).Insert Shift:=xlDown ’
End If
Next

Bonjour,

En cherchant à insérer 2 lignes entre les lignes sélectionnées de mon tableur, j’ai recopier le code de ITY, qui fonctionne à merveille sous excel 2003.

Est-il possible d’ajouter une mise en forme (par exemple fond vert) pour les lignes insérées automatiquement ainsi qu’une lettre x dans la colonne “A” des lignes insérées automatiquement? Si oui, comment cela pourrait-il s’écrire dans VBA?

Merci pour vos précieuses réponses.

Olivier.

Quand tu fais une insertion et que tu as quelque chose de cohérent dans le presse-papier, il te l’insère à la place de la ligne vide.
Donc tu dois pouvoir utiliser la méthode suivante :
1- tu fais la première modification manuellement, y compris la mise en forme
2- tu fais ta sélection
3- tu appliques la macro d’insertion à la sélection en y incluant le copie

Dans mon exemple, je suppose que tu rajoutes deux lignes sous la ligne 1 en manuel
Dim R As Range
For Each R In Selection
Rows(“2:3”).Copy
R.EntireRow.Insert
Next

De mémoire, avec cette méthode, l’insertion doit se faire au dessus et non en dessous de la sélection.
Si c’est le cas, il suffit de mettre
R.Offset(1).EntireRow.Insert

De même, s’agissant d’une copie de lignes entières, le EntireRow doit être facultatif
R.Offset(1).Insert
devrait suffire