Boucle VBA et incrementation

Résolu/Fermé
Mo one Messages postés 7 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 7 juillet 2011 - 7 juil. 2011 à 13:12
Mo one Messages postés 7 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 7 juillet 2011 - 7 juil. 2011 à 17:28
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

thordek Messages postés 32 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 12 septembre 2013 9
Modifié par thordek le 7/07/2011 à 13:15
Que veux-tu exactement ?
Juste répéter 96 fois la macro "macro5" ? Sans rien changer dans la macro ?
0
Mo one Messages postés 7 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 7 juillet 2011
7 juil. 2011 à 13:19
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
thordek Messages postés 32 Date d'inscription mercredi 6 juillet 2011 Statut Membre Dernière intervention 12 septembre 2013 9
7 juil. 2011 à 13:27
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
Mo one Messages postés 7 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 7 juillet 2011
7 juil. 2011 à 14:11
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
tu peux essayer :

plage= n1 & ":" & n2
range(plage).Select
0
Mo one Messages postés 7 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 7 juillet 2011
7 juil. 2011 à 16:28
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 7/07/2011 à 16:44
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
Mo one Messages postés 7 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 7 juillet 2011
7 juil. 2011 à 17:00
Merci, je regarde ça un peu plus tard
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 7/07/2011 à 17:02
fallait lire C2 au lieu de B3...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mo one Messages postés 7 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 7 juillet 2011
7 juil. 2011 à 17:28
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
Mo one Messages postés 7 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 7 juillet 2011
7 juil. 2011 à 14:20
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