Insérer n lignes (VBA)

vinc24

XLDnaute Nouveau
Bonjour

J'ai une feuille qui comporte deux tableaux, qui se situent l'un en dessous de l'autre. Entre les deux je voudrais insérer un tableau de taille variable.

Pour y parvenir je pensais insérer n lignes, n correspondant au nombres de lignes de mon tableau que je vais copier après.

pour selectioner mon tableau j'utilise :

Code:
ActiveSheet.Range("A2").Select
ActiveSheet.Range("A1", ActiveCell.End(xlToRight).Offset(1, 0)).Select
ActiveSheet.Range(Selection, Selection.End(xlDown)).Select

mais après je ne sait pas comment savoir le nombre de ligne que comporte se tableau.

Si vous avez des idées, elles sont les bien venues!

vincent
 

Davidc57

XLDnaute Occasionnel
Re : Insérer n lignes (VBA)

Salut,

Le nombre de ligne de ton tableau est :

ndl = Range("A1").end(xldown).row

ou si tu veux partir du bas :

ndl = range("A65536").End(xlUp).row

A condition que ton tableau commence bien en A1, sinon tu retranches le nombre de ligen qu'il faut ...

A+
David
 

Davidc57

XLDnaute Occasionnel
Re : Insérer n lignes (VBA)

Vincent,

Sélection une des lignes vides entre els deux tableaux (à l'endroit où il faut insérer tes lignes .... par exemple :

Rows("10:10").select

Puis, pour insérer n lignes, à mon avis le mieux est de faier une boucle :

Rows("10:10").select
For i = 1 to n
Selection.Insert Shift:=xlDown
Next i

Tu peux aussi sélectionner tout se suite les n lignes et faier une seule fois le Insert ...

C'est comem tu veux ...

A+
David
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Insérer n lignes (VBA)

Bonjour vinc24, Davidc57,
On peut aussi faire sans boucle ni select ;):
Code:
[COLOR=blue]Sub[/COLOR] test()
n = 3
Rows(10).Resize(n).Insert Shift:=xlDown
[COLOR=blue]End Sub[/COLOR]
Cordialement
EDIT:
Une version "complète". Dans l'exemple le code est dans le bouton (Click droit sur l'onglet / Visualiser le code)
Code:
[COLOR=blue]Sub[/COLOR] test2()
[COLOR=green]'Avec la feuille2 (feuille du tableau à copier)[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Feuil2")
   [COLOR=green]'On cherche la dernière ligne du tableau en partant du bas[/COLOR]
    Derligne = .Cells(Rows.Count, 1).End(xlUp).Row
   [COLOR=green]'On copy la zone du tableau[/COLOR]
    .Rows("1:" & Derligne).Copy
[COLOR=green]'On arrete d'utiliser la feuille 2[/COLOR]
[COLOR=blue]End With[/COLOR]
[COLOR=green]'Avec la feuille1 (feuille de destination du tableau)[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Feuil1")
   [COLOR=green]'On insert les lignes copiées[/COLOR]
    .Rows(10).Resize(Derligne).Insert Shift:=xlDown
[COLOR=green]'On arrete d'utiliser la feuille 1[/COLOR]
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
 

Pièces jointes

  • Vinc24(1).xls
    33 KB · Affichages: 644
Dernière édition:

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
295