Boucle VBA et incrementation

Résolu
Bonjour,

Voici un code que je voudrais répéter 96 fois pour réordonnées mes données. Merci d'avance pour la solution

Sub Macro5()
'
' Macro5 Macro
' Macro enregistrée le 7/07/2011 par Nicolas Vignier
'

'
Range("A3:A7").Select
Selection.Copy
Range("B2").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Rows("3:7").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp

Range("A4:A8").Select
Selection.Copy
Range("B3").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Rows("4:8").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
End Sub

6 réponses

  1. Que veux-tu exactement ?
    Juste répéter 96 fois la macro "macro5" ? Sans rien changer dans la macro ?
    0
    1. J'ai en entré 576 valeurs en colonnes
      1
      2
      3
      4
      5
      6
      1
      2
      3
      4
      5
      6
      etc

      et je veux en sortie

      1 2 3 4 5 6
      1 2 3 4 5 6
      etc
      0
      1. As-tu essayé une boucle :
        for i = 1 to (576-5)
        n1 = "A" & i
        n2 = "A" & (i+5)
        range(n1:n2).Select
        ...
        ...
        ...
        next i

        je pense que quelque chose dans le genre, ça devrait aller.
        Tiens moi au courant.

        Cdt,

        Thordek
        0
    2. Slt Thordek

      sur
      range(n1:n2).Select
      le compilateur reponds
      attenduseparateur de liste ou) attendu

      J'ai essayé Range("n1:n2").Select
      Pas mieux.
      0
      1. tu peux essayer :

        plage= n1 & ":" & n2
        range(plage).Select
        0
      2. Super ca marche! je continu d'ecrire le reste du code avant de crier victoire.
        Merci beaucoup, je te tiens au courant de la suite
        0
    3. Contributeur
      Bonjour

      tes nombres en colonne A, restitution à partir de B3

      Option Explicit 
      Option Base 1 
      Sub faire_matrice_6() 
      Dim Fin As Integer, Nbre As Integer, Max As Byte 
      Dim T_in(), T_out() 
      Dim Cptr_in As Integer, Cptr_out As Integer, col As Byte
      
       
      Fin = Columns("A").Find("*", Range("A1"), , , , xlPrevious).Row 
      T_in = Application.Transpose(Range("A1:A" & Fin).Value) 
      Nbre = UBound(T_in) 
      Max = Int(Nbre / 6) 
      ReDim T_out(Max, 6) 
      
      Cptr_out = 1 
      For Cptr_in = 1 To Nbre 
           For col = 1 To 6 
                T_out(Cptr_out, col) = T_in(Cptr_in) 
                 Cptr_in = Cptr_in + 1 
           Next 
      Cptr_out = Cptr_out + 1 
      Cptr_in = Cptr_in - 1 
      Next 
      Application.ScreenUpdating = False 
      Range("C2").Resize(Max, 6) = T_out 
      End Sub

      Michel
      0
      1. Merci, je regarde ça un peu plus tard
        0
      2. Contributeur
        fallait lire C2 au lieu de B3...
        0
    4. Slt,

      Je m'en suis sorti avec ce code

      For i = 1 To 576
      n1 = "A" & (i + 1)
      n2 = "A" & (i + 5)
      n3 = "B" & i
      plage1 = n1 & ":" & n2
      Range(plage1).Select
      Selection.Copy
      Range(n3).Select
      Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
      , Transpose:=True
      Range(plage1).Select
      Application.CutCopyMode = False
      Selection.Delete Shift:=xlUp
      Next i

      Merci à tous pour vos conseil et recette.
      0
      1. Slt Thordek

        Je suis vraiment tout debutant dans VBA et dans la programmation aussi excuse d'avance mes questions naïves.

        Merci pour ton aide
        -1