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 ?
    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
      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
    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.
      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
    3. 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. 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,

        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.