Excel : doubler les lignes

kernaleguen

XLDnaute Nouveau
Bonjour,

Je dispose d'une base de données pour laquelle je souhaite doubler une fois toutes les lignes (environ 7 000). Exemple de la base de données :


DTPIEC NOCPTE SENSEC Total
20180831 431600 C 812,32
20180831 431611 C 81,2
20180831 445718 C 9263,18

Pouvez-vous m'indiquer une macro ?

Merci
 

kernaleguen

XLDnaute Nouveau
Bonjour,

pas de macro, mais une manip toute simple :
tu recopies ta base a la suite et tu tries sur la premiere colonne.


Crdlmt


Pardon car j'ai oublié un point important dans ma demande :

1- Pour les lignes doublées et pour la colonne "SENS" qui indique à l'origine du fichier "C" ou "D" les lettres doivent être inversées (pour les lignes doublées : C devient D et D devient C).


Exemple :
Situation initiale
DTPIEC NOCPTE SENSEC Total
20180831 431600 C 812,32
20180831 431611 C 81,2
20180831 445718 C 9263,18

situation lorsque les lignes sont doublées :

DTPIEC NOCPTE SENSEC Total
20180831 431600 C - 812,32
20180831 431600 D -812,32
20180831 431611 C 81,2
20180831 431611 D 81,2
20180831 445718 C 9263,18
20180831 445718 D 9263,18


Merci
 

vgendron

XLDnaute Barbatruc
avec ce code
VB:
Sub Dupliquer()
Dim tablo() As Variant
With ActiveSheet
    fin = .Range("A" & .Rows.Count).End(xlUp).Row 'dernière ligne
    tablo = .Range("A2:K" & fin).Value 'on met tout dans un tableau VBA
    For i = LBound(tablo, 1) + 1 To UBound(tablo, 1) 'on inverse C et D
        tablo(i, 10) = IIf(tablo(i, 10) = "C", "D", "C")
    Next i
    .Range("A" & fin + 1).Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo 'on copie le nouveau tablo à la suite de l'existant
End With
End Sub
 

kernaleguen

XLDnaute Nouveau
avec ce code
VB:
Sub Dupliquer()
Dim tablo() As Variant
With ActiveSheet
    fin = .Range("A" & .Rows.Count).End(xlUp).Row 'dernière ligne
    tablo = .Range("A2:K" & fin).Value 'on met tout dans un tableau VBA
    For i = LBound(tablo, 1) + 1 To UBound(tablo, 1) 'on inverse C et D
        tablo(i, 10) = IIf(tablo(i, 10) = "C", "D", "C")
    Next i
    .Range("A" & fin + 1).Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo 'on copie le nouveau tablo à la suite de l'existant
End With
End Sub
la macro fonctionne très bien.

Merci beaucoup
 

Discussions similaires

Réponses
306
Affichages
26 K

Statistiques des forums

Discussions
312 215
Messages
2 086 325
Membres
103 179
dernier inscrit
BERSEB50