Boucle VBA et incrementation

Résolu
Mo one Messages postés 7 Statut Membre -  
Mo one Messages postés 7 Statut Membre -
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. thordek Messages postés 37 Statut Membre 9
     
    Que veux-tu exactement ?
    Juste répéter 96 fois la macro "macro5" ? Sans rien changer dans la macro ?
    0
  2. Mo one Messages postés 7 Statut Membre
     
    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. thordek Messages postés 37 Statut Membre 9
       
      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
  3. Mo one Messages postés 7 Statut Membre
     
    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. Paf
       
      tu peux essayer :

      plage= n1 & ":" & n2
      range(plage).Select
      0
    2. Mo one Messages postés 7 Statut Membre
       
      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
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. Mo one Messages postés 7 Statut Membre
       
      Merci, je regarde ça un peu plus tard
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      fallait lire C2 au lieu de B3...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mo one Messages postés 7 Statut Membre
     
    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
  7. Mo one Messages postés 7 Statut Membre
     
    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