Dupliquer toutes les lignes sur Excel

Fivel51 Messages postés 510 Statut Membre -  
titeufdu89 Messages postés 387 Statut Membre -
Bonjour,

j'ai un fichier Excel avec 5000 lignes.
Chaque ligne commence en A et se termine en P. Cad il y a des infos dans chaque colonne, de A à P sur les 5000 lignes.
Actuellement les infos sont comme ceci :
Ligne 1
Ligne 2
Ligne 3

Je voudrais cela (dans le même feuillet, même fichier):
Ligne 1
Ligne 1
Ligne 2
Ligne 2
Ligne 3
Ligne 3

Cad que chaque ligne soit dupliquée et que la ligne dupliquée soit juste en dessous.

J'ai trouvé ce code sur Internet, mais ça ne fonctionne pas. Ca duplique uniquement la première ligne, mais pas la seconde et ça duplique uniquement la première colonne de la ligne (A) et pas jusqu'à la colonne P :

Sub test()
ligne = 1
tablo = Range("A1:AP" & Range("A65536").End(xlUp).Row)
For n = LBound(tablo, 1) To UBound(tablo, 1)
For m = 1 To 2
Range("A" & ligne) = tablo(n, 1)
ligne = ligne + 1
Next
Next

End Sub



Quelqu'un pourrait-il me donner le code pour que mes 5000 lignes soient dupliquées en prenant en compte toutes les colonnes de A à P SVP ?

Merci beaucoup :)

3 réponses

titeufdu89 Messages postés 387 Statut Membre 38
 
Bonjour,

Voici un code qui dupliquera tes lignes, en contrôlant au préalable les données des colonnes A et B, si les données sont déjà identiques sur ces deux colonnes, elle ne dupliquera par la ligne, si elles sont différentes alors la ligne sera dupliquer, à tester. Si tu as besoin de changer les colonnes contrôlées ou d'ajouter plus de colonnes dans le contrôle c'est tout à fait possible.
J'ai codé ce contrôle car sans ça à chaque exécution de la macro tes lignes seront automatiquement dupliquées, donc si par exemple tu exécute 2 fois la macro successivement tu te retrouveras avec 4 fois la ligne 1...

Sub dupliquer()
der = Range("A66536").End(xlUp).Row
For i = 1 To der * 2
    If Range("A" & i + 1).Value <> Range("A" & i).Value And Range("B" & i + 1).Value <> Range("B" & i).Value Then
    Rows(i + 1).Insert
    Rows(i).Copy Rows(i + 1)
    End If
i = i + 1
Next i
End Sub


Bonne journée

Jc
1
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 586
 
bonjour, veux-tu simplement dupliquer tes lignes, ou veux-tu plutôt insérer une ligne identique en dessous de chaque ligne? le code que tu proposes ne me semble pas faire d'insertion.
0
vaanbasch Messages postés 1161 Statut Membre 664
 
Salut,
J'étais en train de voir mais j'ai abandonné car je connais trop peu le VBA.
J'ai modifié son code. Sur le fichier que je mets en lien est ce qu'il faut mais faire la même chose sur les autres colonnes jusqu'à la colonne "P" et non pas que sur la colonne "A"

https://www.cjoint.com/c/IBcnfnSLGjG

J'ai réussi en recopiant le code pour chaque colonne mais fastidieux.
Je suis aussi preneur pour un code plus simple :)
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 279
 
Bonjour,

ce n'est pas le genre de question qui mérite d'être posté sur plusieurs forums.
https://forum.excel-pratique.com/viewtopic.php?f=2&t=120046
Un peu de patience suffit...
eric
0
vaanbasch Messages postés 1161 Statut Membre 664
 
Œil de lynx ! ;)
0