Comment insérer et dupliquer des lignes
#1
Débutant XLPages

Inscription: 28/02/2012

Messages: 8

Système d'exploitation:
Mac
Version Excel utilisée:
2011 (2010)
Posté le : 28-02-2012 23h15
Bonjour, Je vous remercie pour votre attention.
J'ai besoin, dans un fichier, d'insérer 2 lignes sous chaque ligne, et ensuite de dupliquer chaque ligne contenant des données sur les lignes insérées en dessous.
Vous pourrez trouver un exemple en pièce jointe.
J'ai trouvé sur le site un code intéressant, mais il faut sélectionner manuellement chaque ligne à dupliquer/insérer. Avec 1500 lignes ça va être très très long.
Comment faire pour automatiser l'opération sur une plage donnée par exemple?

http://www.mdf-xlpages.com/modules/ne ... ost_id=5337#forumpost5337

Sub InsereLign()

'myDearFriend!  -  www.mdf-xlpages.com

Dim Plage As Range

Dim L As Long

    Application.ScreenUpdating = False

    Set Plage = Rows(6)

    For L = 11 To 2250 Step 5

        Set Plage = Application.Union(Plage, Rows(L))

    Next L

    Plage.Insert Shift:=xlDown

    Application.ScreenUpdating = True

    MsgBox "Insertion terminée !"

End Sub



Merci d'avance pour votre aide.


Pièce jointe:
xlsx Classeur1.xlsx   [ Taille: 47.69 Ko - Téléchargements: 995 ]
Edité par bardav le 02/03/2012 10:32:21
Hors Ligne
Rapport   Haut 

Re: Comment insérer et dupliquer des lignes
#2
Accro XLPages

Inscription: 17/08/2007
De Québec, Canada

Messages: 180

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2003, 2007 (FR) & MsProject 2003
Posté le : 29-02-2012 00h11
 Salut le forum

Bienvenue Bardav comme nouveau membres

Une façon de le faire
Sub InsertAndCopy()
Dim Ligne As Long

For Ligne = 2 To Cells(Rows.Count, "A").End(xlUp).Row * 3 Step 3
 
  Rows(Ligne & ":" & Ligne + 1).Insert Shift:=xlDown
 
    Range(Cells(Ligne - 1, 1), Cells(Ligne - 1, 5)).AutoFill _
        Destination:=Range(Cells(Ligne - 1, 1), Cells(Ligne + 1, 5)), _
            Type:=xlFillCopy
           
Next Ligne

End Sub
Ou pour pousser un peu la note
Sub InsertAndCopy()
Dim Ligne As Long

For Ligne = 2 To Cells(Rows.Count, "A").End(xlUp).Row * 3 Step 3
 
  Rows(Ligne & ":" & Ligne + 1).Insert Shift:=xlDown

    With Range(Cells(Ligne - 1, 1), Cells(Ligne - 1, 5))
        .AutoFill Destination:=.Resize(.Rows.Count + 2, .Columns.Count), Type:=xlFillCopy
    End With
   
Next Ligne

End Sub
Mytå
Hors Ligne
Rapport   Haut 

Re: Comment insérer et dupliquer des lignes
#3
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 29-02-2012 00h28
Bonsoir bardav, bienvenue sur XLpages.com
Bonsoir Mytå,

Arf, je vois que l'ami Mytå est déjà passé (trop rapide pour moi, Mytå )...

Comme j'ai un peu travaillé sur le sujet avant de m'apercevoir de ton intervention, je dépose quand même ma façon de faire... Comme ça bardav aura l'embarras du choix !

DANS UN MODULE DE CODE STANDARD (ex: Module1)

Option Explicit

'myDearFriend!  -  www.mdf-xlpages.com
Sub DupliqueLignes()
Dim Lmax As Long, L As Long
    With Sheets(1)      'A adapter
        Lmax = .Cells(.Rows.Count, 1).End(xlUp).Row
        For L = Lmax To 1 Step -1
            With .Rows(L)
                .Copy
                .Offset(1, 0).Resize(2).Insert Shift:=xlDown
            End With
        Next L
    End With
    Application.CutCopyMode = False
End Sub

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Comment insérer et dupliquer des lignes
#4
Accro XLPages

Inscription: 17/08/2007
De Québec, Canada

Messages: 180

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2003, 2007 (FR) & MsProject 2003
Posté le : 29-02-2012 00h35
Re le forum

MyDearFriend , c'est la que l'on voit que chaque programmeur
à une façon différente pour résoudre la problématique.

3 belles solutions pour notre nouvel adepte . . .

En prime choix du nombre de duplication de la ligne
Sub InsertAndCopy()
Dim Ligne As Long
Dim NbLgCpy As Integer

NbLgCpy = Application.InputBox("Nombre de duplication ?", Type:=1)
    If NbLgCpy = False Or NbLgCpy < 0 Then Exit Sub

For Ligne = 2 To Cells(Rows.Count, "A").End(xlUp).Row * (NbLgCpy + 1) Step NbLgCpy + 1
 
  Rows(Ligne & ":" & Ligne + NbLgCpy - 1).Insert Shift:=xlDown

    With Range(Cells(Ligne - 1, 1), Cells(Ligne - 1, 5))
        .AutoFill Destination:=.Resize(.Rows.Count + NbLgCpy, .Columns.Count), Type:=xlFillCopy
    End With
   
Next Ligne

End Sub
 Bonne fin de soirée
Mytå


Edité par Mytå le 29/02/2012 01:01:41

Merci, de donner un retour à votre question, nous ne sommes pas des robots. [GMT - 5]
Le travail d'équipe est essentiel. En cas d'erreur, ça permet d'accuser quelqu'un d'autre.
Hors Ligne
Rapport   Haut 

Re: Comment insérer et dupliquer des lignes
#5
Débutant XLPages

Inscription: 28/02/2012

Messages: 8

Système d'exploitation:
Mac
Version Excel utilisée:
2011 (2010)
Posté le : 29-02-2012 14h18
Merci à tous!
Je vais essayer de décortiquer tout ça pour comprendre mieux le fonctionnement de toutes les solutions que vous m'avez données.
Je vous suis infiniment reconnaissant.
Bonne journée/soirée à tous.
 
Hors Ligne
Rapport   Haut 

Re: Comment insérer et dupliquer des lignes
#6
Accro XLPages

Inscription: 17/08/2007
De Québec, Canada

Messages: 180

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2003, 2007 (FR) & MsProject 2003
Posté le : 29-02-2012 22h42
 Re le forum

Merci de passer la ficelle en [Résolu] , si la solution te convient.

Mytå





Merci, de donner un retour à votre question, nous ne sommes pas des robots. [GMT - 5]
Le travail d'équipe est essentiel. En cas d'erreur, ça permet d'accuser quelqu'un d'autre.
Hors Ligne
Rapport   Haut 

Re: Comment insérer et dupliquer des lignes
#7
Débutant XLPages

Inscription: 28/02/2012

Messages: 8

Système d'exploitation:
Mac
Version Excel utilisée:
2011 (2010)
Posté le : 02-03-2012 12h50
 Bonjour,
Merci à tous pour votre aide, mais après avoir testé toutes les solutions proposées, je me retrouve avec le même problème qu'initialement, c'est à dire qu'après avoir exécuté l'opération une fois, sur la première ligne, il faut que je me mette sur la ligne suivant et que je relance la macro pour que l'insertion et la duplication se fassent.
Comment faire pour que par exemple sur les lignes 1 à 2000 cette opération se fasse de manière automatique?
Hors Ligne
Rapport   Haut 

Re: Comment insérer et dupliquer des lignes
#8
Accro XLPages

Inscription: 17/08/2007
De Québec, Canada

Messages: 180

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2003, 2007 (FR) & MsProject 2003
Posté le : 02-03-2012 18h23
Re le forum

Les macros fonctionnent très bien sur le modèle fourni.

Si la disposition du fichier n'est pas la même, il faut adapter le code.

Mytå

Merci, de donner un retour à votre question, nous ne sommes pas des robots. [GMT - 5]
Le travail d'équipe est essentiel. En cas d'erreur, ça permet d'accuser quelqu'un d'autre.
Hors Ligne
Rapport   Haut 

Re: Comment insérer et dupliquer des lignes
#9
Débutant XLPages

Inscription: 28/02/2012

Messages: 8

Système d'exploitation:
Mac
Version Excel utilisée:
2011 (2010)
Posté le : 05-03-2012 14h33
Bonjour, effectivement après avoir réessayé, tout fonctionne.
J'ai du faire un erreur en recopiant le code.
Merci encore pour votre aide précieuse.
Edité par bardav le 22/03/2012 08:02:33
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   2 Utilisateur(s) anonymes