Insérer des lignes en fonction de variable

Bonjour à tous et à toutes,

Ce sujet est assez connue mais je n'arrive pas à trouver ce que je veux. Pour insérer plusieurs lignes on peut écrire ceci :

ThisWorkbook.Worksheets("Feuil1").Range("A1:A28").EntireRow.Insert

Ce qui est intéressant c'est qu'on n'utilise pas de boucle for. J'aimerais donc adapter la ligne ci-dessus avec des 2 variables pour les numéros des lignes. J'ai écrit ceci:

ThisWorkbook.Worksheets("Feuil1").Range(Cells(i, "A"), Cells(j, "A")).EntireRow.Insert

Malheureusement ceci ne fonctionne pas... Auriez-vous une idée pour écrire mon code correctement ?

J'aimerais éviter d'utiliser une boucle for comme ceci :

For i = 1 To j
       ThisWorkbook.Worksheets("Feuil1").Range("A" & i).EntireRow.Insert
Next i

Merci par avance.

@+

Bonjour mpetit,

Bien sûr que si le code fonctionne, il suffit juste de définir les variables

Sub Test()
  Dim i As Long, j As Long
  i = 1: j = 28
  ThisWorkbook.Worksheets("Feuil1").Range(Cells(i, "A"), Cells(j, "A")).EntireRow.Insert
End Sub

@+

Je n'ai pas précisé que l'initialisation des variable avait été faites (même si j'aurais du le préciser dans mon post).

J'ai le message d'erreur : Erreur définie par l'application ou par l'objet

Remarque : Mon post n'est qu'un exemple simple de ma véritable application.

J'ai réussi à reproduire mon erreur sur un exemple :

Sub Test()
  Dim i As Long, j As Long
  i = 1
  j = Workbooks("Export_IE03").Sheets(1).Range("C" &
Rows.Count).End(xlUp).Row

  ThisWorkbook.Worksheets("Feuil1").Range(Cells(i, "A"), Cells(i + j, "A")).EntireRow.Insert
End Sub

Si je met j = 12 alors pas de soucie, les lignes se créent correctement. Cependant, si je viens récupérer le numéro de la dernière ligne d'un autre fichier et que je veux insérer ce nombre de ligne, cela me met le message d'erreur ci-dessus.

Auriez-vous une idée ?

Y a t-il besoin que je vous envoie un fichier exemple ?

Merci par avance,

@+

Re,

Forcément, si vous ne nous dites pas tout... comment voulez-vous que nous devinions

Pour

j = Workbooks("Export_IE03").Sheets(1).Range("C" & Rows.Count).End(xlUp).Row

Il faut que votre classeur soit actif et donc ouvert

Essayez

Sub Test()
  Dim i As Long, j As Long
  Dim sPath As String, sFic As String
  Dim Wbk As Workbook
  ' Définir les paramètres
  sPath = ThisWorkbook.Path & "\"
  sFic = "Export_IE03.xlsx"
  i = 1
  ' Ouvrir le classeur
  Set Wbk = Workbooks.Open(sPath & sFic)
  ' en profiter pour récupérer la dernière ligne
  j = Wbk.Sheets(1).Range("C" & Rows.Count).End(xlUp).Row
  ' Activer ce classeur
  With ThisWorkbook
    .Activate
    .Worksheets("Feuil1").Range(Cells(i, "A"), Cells(i + j, "A")).EntireRow.Insert
  End With
End Sub

@+

Veuillez m'excuser. Je ne voulais juste pas vous perdre en faisant au plus simple. Désolé

J'ai pensé à ouvrir le fichier manuellement. Même en modifiant comme ci-dessous, rien n'y fait .... :

Sub Test()

Dim i As Long, j As Long

i = 1

Workbooks.Open ("C:\Users\Test\Desktop\Hey\entreprise\ERP\Étude%\peutetre\Export_IE03.xls")

j = Workbooks("Export_IE03").Sheets(1).Range("C" & Rows.Count).End(xlUp).Row

ThisWorkbook.Worksheets("Feuil1").Range(Cells(i, "A"), Cells(i + j, "A")).EntireRow.Insert

End Sub

J'ai toujours le même message d'erreur à la ligne :

ThisWorkbook.Worksheets("Feuil1").Range(Cells(i, "A"), Cells(i + j, "A")).EntireRow.Insert

@+

Merci, j'ai finalement compris d'où venait mon erreur !

Sub Test()

Dim i As Long, j As Long

i = 1

Workbooks.Open ("C:\Users\Test\Desktop\Hey\entreprise\ERP\Étude%\peutetre\Export_IE03.xls")

j = Workbooks("Export_IE03").Sheets(1).Range("C" & Rows.Count).End(xlUp).Row

ThisWorkbook.Worksheets("Feuil1").Activate 'Cette ligne là qui manquait
ThisWorkbook.Worksheets("Feuil1").Range(Cells(i, "A"), Cells(i + j, "A")).EntireRow.Insert

End Sub

Je ne savait pas qu'il fallait activer la feuille qu'on modifie en faisant .Activate.

Merci.

Bien cordialement,

Re,

J'ai mis le code à tester dans mon précédent post

Nota : il faudra changer le chemin

@+

Rechercher des sujets similaires à "inserer lignes fonction variable"