Boucle, générateur de boucles

Boucle, générateur de boucles - VB/VBA/VBS - Programmation

Marsh Posté le 02-02-2010 à 11:21:18    

Bonjour à tous,
 
J'ai posé un poste sur un problème de boucle, le problème a changé, donc mes soucis aussi. Je reviens vers vous pour demander votre aide.
 
Voici ma macro,
 

Code :
  1. Sub Macro2()
  2. '
  3. ' Macro2 Macro
  4. '
  5. ' Touche de raccourci du clavier: Ctrl+w
  6. '
  7.     Range("B24:B167" ).Select
  8.     Selection.Copy
  9.     Sheets("Feuil1" ).Select
  10.     Range("C6" ).Select
  11.     Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
  12.         False, Transpose:=True
  13. End Sub


 
Ce que je voudrais faire maintenant, c'est créeé une boucle pour faire la même chose, sachant qu'une même sélection contient 144 données.
 
 
Merci de votre aide

Reply

Marsh Posté le 02-02-2010 à 11:21:18   

Reply

Marsh Posté le 02-02-2010 à 13:59:16    

ce qui pourrais m'aider:
 
comment selectionne ton une plage dynamique dans  excel avec VBA?
 
Merci

Reply

Marsh Posté le 02-02-2010 à 16:07:43    

Pour sélectionner une plage dynamique, utiliser End(xlDown) ou End(xlRight). Par exemple :
 Set rRange = Range([A1], [A1].End(xlDown))

Reply

Marsh Posté le 03-02-2010 à 11:35:08    

olivthill a écrit :

Pour sélectionner une plage dynamique, utiliser End(xlDown) ou End(xlRight). Par exemple :
 Set rRange = Range([A1], [A1].End(xlDown))


 
Merci, j'ai essayé, mais maintenant j'ai un soucis avec la fonction copier et coller puis transposer, je comprends pas pourquoi, j'ai un message d'erreur, une idée?
Et il ne fait pas la boucle, est-elle mal programmée?
 

Code :
  1. Sub Macro2()
  2. '
  3. ' Macro2 Macro
  4. '
  5. ' Touche de raccourci du clavier: Ctrl+w
  6. '
  7. Dim i, j, x, y As Integer
  8. Dim vRange As Range
  9. x = 3
  10. y = 3
  11. i = 167
  12. j = 24
  13. While (i <> 186000)
  14.     Set vRange = Range(Cells(i, 2), Cells(j, 2))
  15.     ' Range(Cells(maligne, 5), Cells(maligne, macol))
  16.     vRange.Select
  17.     Selection.Copy
  18.     Sheets("Feuil1" ).Select
  19.     'Sheets(Feuil1).Cells(x, y)
  20.     Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
  21.         False, Transpose:=True
  22.     i = i + 144
  23.     j = j + 144
  24.     y = y + 1
  25. Wend
  26. End Sub


 
Merci de votre aide

Reply

Marsh Posté le 03-02-2010 à 15:00:30    


Bonjour
Je pense que ton pb est là:
 
i = 167
j = 24
tu sélectionnes ta zone de bas en haut, et XL, il aime pas! Il faut faire une sélection de haut en bas, et de gauche à droite.

Reply

Marsh Posté le 03-02-2010 à 16:46:56    

C'est mieux, mais il ne veut pas faire la boucle, est-elle mauvaise?

Reply

Marsh Posté le 03-02-2010 à 20:40:28    

rectifie ça:
 'Sheets(Feuil1).Cells(x, y)
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
 
comme ça:
 Sheets("Feuil1" ).Cells(x, y).Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
 
 
 
Sinon ta sélection reste sur vRange.  
 
Et il vaut mieux écrire:
   While (i <= 186000)
 
car sinon, la boucle ne s'arrête QUE si différent de, mais pas si "supérieur à"


Message édité par Laoo le 03-02-2010 à 20:56:34
Reply

Marsh Posté le 04-02-2010 à 10:12:58    

Merci, le soucis c'est qu'il ne veut pas copier les 144 chiffres suivants, il ne cesse de copier la premiere selection!
 
Argh!
 
Merci

Reply

Marsh Posté le 04-02-2010 à 14:02:14    

Jje coirs comprendre d'où vient mon erreur,  
il garde la premiere selection de Vrange, mlgré que les indices aient changé. Il y at-il moyen de réinitialisé Vrange à chaque fois,
 
Ou autre solution?
 
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed