Formule Excel ou script

Bonjour à tous,

J'ai une question sur excel qui est la suivante :

J'ai un fichier excel avec environ 3000 lignes, et j'aimerais insérer toute les 6 lignes : une ligne vierge (donc le bête : inert entire line)

J'ai essayé une macro mais à part le faire à la main pour les 3000 lignes je n'y arrive pas car je n'arrive pas à automatiser ça.

Est-ce que quelqu'un à une solution à me proposer ?

Merci d'avance pour votre aide.

Salutations

Bonjour,

Il faudrait savoir de quelle ligne on part. en supposant que c'est de la ligne 6, un code du genre :

Sub test()
For i = 6 To 3000 Step 6
Rows(i).EntireRow.Insert
Next
End Sub

Si ok n'oublie pas de cliquer sur le V vert à coté du bouton Editer pour cloturer le fil

Amicalement

Bonjour

Salut Dan

Pour plus de commodité, il y aurait lieu de bloquer l'écran

Sub test()

Application.ScreenUpdating = False

For i = 6 To 3000 Step 6

Rows(i).EntireRow.Insert

Next

End Sub

Cordialement

Bonjour

Je me permets d'intervenir

Je ne penses pas que cela fonctionne

Il faut partir à l'envers

Sub test()
Application.ScreenUpdating = False
For i = 3000 To 6 Step - 6
Rows(i).Insert
Next

A moins que j'ai raté un cours

Bonjour à tous,

Banzai, c'est aussi mon avis,

ce que je ne pige pas, c'est que même en incrémentant le Lg, çà ne marche pas non plus !

Sub test()
Dim Lg%, i%
    Application.ScreenUpdating = False
    Lg = Range("a65536").End(xlUp).Row
    For i = 7 To Lg Step 7 'à régler
        Rows(i).EntireRow.Insert
        Lg = Lg + 1
    Next
End Sub

Amicalement

Claude

Bonjour,

Une autre façon:

Sub Inserer()
'Partage en bloc de (Pas-1) lignes
Const Pas = 6
Dim Macol1 As Range, Macol2 As Range, k1, k2, k

On Error GoTo FIN
    Set Macol1 = Application.InputBox(prompt:=" Sélectionner la 1ière cellule dela colonne", Type:=8)
    Set Macol1 = Macol1.Cells(1, 1)
    Macol1.Worksheet.Activate
    Set Macol2 = Application.InputBox(prompt:=" Sélectionner la dernière cellule dela colonne", Type:=8)
    Set Macol2 = Macol2.Cells(1, 1)
On Error GoTo 0
    k1 = Macol1.Row + Pas - 1
    k2 = Macol2.Row
    With Macol1.Worksheet
        Do While k1 < k2
            .Rows(k1).Insert
            k1 = k1 + Pas
            k2 = k2 + 1
        Loop
    End With
FIN:
End Sub

Bonjour le forum

Dans beaucoup de langage, les bornes d'une boucle de type loop ne sont évaluées qu'une seule fois au début de la boucle.

Sub TestK()
Dim K, J
    K = 3
    For J = 1 To K
        MsgBox "J= " & J & "   K=" & K
        'K change mais la boucle n'est exécutée que 3 fois
        K = K + 1
Next J
End Sub

edit: remplacer loop par for..next

re,

sans partir du bas et en suivant mon idée précédente

Sub test2()
Dim Lg%, i%
    Application.ScreenUpdating = False
    Lg = Range("a65536").End(xlUp).Row
    For i = 7 To Int(Lg + (Lg / 6)) + 1 Step 7 'à régler
        Rows(i).EntireRow.Insert
    Next
End Sub

Pas vraiment convaincu !

Claude

Bonjour

Une p'tite remarque quand à

MaPoire a écrit :

les bornes d'une boucle de type loop ne sont évaluées qu'une seule fois au début de la boucle.

Valable pour For...Next

Si vous voulais une boucle infinie (sauf problème de capacité)

Sub testDo()
Dim K, J
  K = 3
  Do While J < K
      MsgBox K
      'Boucle infinie
     J = J + 1
     K = K + 1
    If K = 10 Then Exit Do
  Loop
End Sub

re bonjour le forum,

Pour mon précedent message, il fallait bien sur lire boucle for..next et non pas loop. !

Voilà ce que c'est de ne pas tourner 7 fois sa langue dans sa bouche !

Salut le forum

Une autre façon de faire

Sub InsertLigne()
Dim Ligne As Long

Ligne = 2 'Ligne de départ
  Do While Ligne < ActiveSheet.UsedRange.Rows.Count
    Ligne = Ligne + 6
    Rows(Ligne).EntireRow.Insert
  Loop

End Sub

Mytå

C'est parfait je vous remercie beaucoup !

Encore une fois les réponses sont claires et rapides !

Merci encore !

Rechercher des sujets similaires à "formule script"