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. 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.
    1. 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
      1. Merci, je regarde ça un peu plus tard
      2. Contributeur
        fallait lire C2 au lieu de B3...
    2. 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. Slt Thordek

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

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

          plage= n1 & ":" & n2
          range(plage).Select
        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
      2. 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
        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
      3. Que veux-tu exactement ?
        Juste répéter 96 fois la macro "macro5" ? Sans rien changer dans la macro ?