Macro : Répéter action toutes les 4 lignes

Fermé
KevinB_3091 Messages postés 1 Date d'inscription jeudi 2 mai 2019 Statut Membre Dernière intervention 2 mai 2019 - 2 mai 2019 à 18:31
cs_Le Pivert Messages postés 7860 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 2 décembre 2022 - 3 mai 2019 à 12:52
Bonjour,

Novice en macro, je cherche à répéter une action toutes les 4 lignes.

L'action en question :

A;B;C;D;E;
Q1;Rep1;Rep2;Rep3;Rep4;
;;;;;
;;;;;
;;;;;
Q2;Rep1.Rep2;Rep3;Rep4;
;;;;;
;;;;;
;;;;;

Le résultat souhaité

Q1;Rep1;;;;
;Rep2;;;;
;Rep3;;;;
;Rep4;;;;
Q2;Rep1;;;;
;Rep2;;;;
;Rep3;;;;
;Rep4;;;;
...

La macro enregistrée :

Sub Macro1()
Range("G2:J2").Select
Selection.Copy
Range("F2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub


Merci :)
Kevin

Configuration: Windows / Chrome 73.0.3683.103

1 réponse

cs_Le Pivert Messages postés 7860 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 2 décembre 2022 723
Modifié le 3 mai 2019 à 11:42
Bonjour,

pas très clair!

Si les données sont dans les cellules A1 et A5:

Sub Test()
Range("A2").Value = ";" & Split(Range("A1").Value, ";")(2) & ";;;;"
Range("A3").Value = ";" & Split(Range("A1").Value, ";")(3) & ";;;;"
Range("A4").Value = ";" & Split(Range("A1").Value, ";")(4) & ";;;;"
Range("A1").Value = Split(Range("A1").Value, ";")(0) & "; " & Split(Range("A1").Value, ";")(1) & ";;;;"
Range("A6").Value = ";" & Split(Range("A5").Value, ";")(2) & ";;;;"
Range("A7").Value = ";" & Split(Range("A5").Value, ";")(3) & ";;;;"
Range("A8").Value = ";" & Split(Range("A5").Value, ";")(4) & ";;;;"
Range("A5").Value = Split(Range("A5").Value, ";")(0) & "; " & Split(Range("A5").Value, ";")(1) & ";;;;"
End Sub


et si les données sont dans les colonnes A;B;C;D;E;

Sub test()
Range("A1").Value = Range("A1").Value & Range("B1").Value & ";;;;"
Range("A2").Value = ";" & Range("C1").Value & ";;;;"
Range("A3").Value = ";" & Range("D1").Value & ";;;;"
Range("A4").Value = ";" & Range("E1").Value & ";;;;"
Range("A5").Value = Range("A5").Value & Range("B5").Value & ";;;;"
Range("A6").Value = ";" & Range("C5").Value & ";;;;"
Range("A7").Value = ";" & Range("D5").Value & ";;;;"
Range("A8").Value = ";" & Range("E5").Value & ";;;;"
End Sub


voilà

0
cs_Le Pivert Messages postés 7860 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 2 décembre 2022 723
3 mai 2019 à 12:52
Pour faire une colonne complète, faire une boucle comme ceci:

Sub For_X_to_Next_Ligne()
Dim FL1 As Worksheet, NoCol As Integer
Dim NoLig As Long, Var As Variant
    Set FL1 = Worksheets("Feuil1") 'a adpater
    NoCol = 1 'lecture de la colonne A
    For NoLig = 1 To Split(FL1.UsedRange.Address, "$")(4) Step 4 'toutes le 4 lignes
        Var = FL1.Cells(NoLig, NoCol)
      FL1.Cells(NoLig, NoCol).Value = FL1.Cells(NoLig, NoCol).Value & FL1.Cells(NoLig, NoCol + 1).Value & ";;;;"
FL1.Cells(NoLig + 1, NoCol).Value = ";" & FL1.Cells(NoLig, NoCol + 2).Value & ";;;;"
FL1.Cells(NoLig + 2, NoCol).Value = ";" & FL1.Cells(NoLig, NoCol + 3).Value & ";;;;"
FL1.Cells(NoLig + 3, NoCol).Value = ";" & FL1.Cells(NoLig, NoCol + 4).Value & ";;;;"
    Next
    Set FL1 = Nothing
End Sub


@+
0