[Excel] couper coller

couper coller [Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 06-05-2006 à 10:58:43    

Bonjour,
 
J'essaie de faire la chose suivante:  
Dans une feuille Excel, à partir de la cellule 14 de la colonne A, couper le contenu de cette cellule, le coller 3 cellules plus bas, et recommencer avec un step 11 jusqu'à la millième ligne. J'ai écrit cela ainsi:
 

Code :
  1. Sub Intervertir()
  2. For i = 14 To 1000 Step 11 'pour i dont la valeur va de 14 à 1000, toutes les 11 lignes
  3.     Range("A & i" ).Select
  4.     Selection.Cut
  5.     Range("A & i + 3" ).Select
  6.     ActiveSheet.Paste
  7.     Next i 'incrémentation
  8.    
  9. End Sub


 
Ceci donne un message d'erreur 1004, objet Range non reconnu avec la méthode _global.  
J'ai également essayé une variante avec Offset, infructueuse elle aussi:
 

Code :
  1. Sub Intervertir()
  2. For i = 14 To 1000 Step 11 'pour i dont la valeur va de 14 à 1000, toutes les 11 lignes
  3.     Range("A14" ).Select
  4.     Selection.Cut Destination:=Selection.Offset(3, 0).Address
  5.     Next i 'incrémentation
  6.    
  7. End Sub


 
Voici en somme l'action qui s'enregistre lorsque j'utilise le générateur de macro, et avec laquelle il faudrait faire une boucle:
 

Code :
  1. Sub Macro2()
  2.     Range("A14" ).Select
  3.     Selection.Cut
  4.     Range("A17" ).Select
  5.     ActiveSheet.Paste
  6.     Range("A25" ).Select
  7.     Selection.Cut
  8.     Range("A28" ).Select
  9.     ActiveSheet.Paste
  10.     Range("A36" ).Select
  11.     Selection.Cut
  12.     Range("A39" ).Select
  13.     ActiveSheet.Paste
  14.     Range("A47" ).Select
  15.     Selection.Cut
  16.     Range("A50" ).Select
  17.     ActiveSheet.Paste
  18.     Range("A58" ).Select
  19.     Selection.Cut
  20.     Range("A61" ).Select
  21.     ActiveSheet.Paste
  22. Etc juqu'à 1000
  23. End Sub


Merci d'avance pour toute suggestion!!!
 

Reply

Marsh Posté le 06-05-2006 à 10:58:43   

Reply

Marsh Posté le 06-05-2006 à 13:18:21    

Juste en suggestion, et sans essai de vérification, si tu remplaçais :
Range("A & i + 3" )
par
Range("A" & (i+3))
et idem pour le premier Range, cela devrait marcher mieux.

Reply

Marsh Posté le 06-05-2006 à 16:27:40    

Pas de changement lors du déroulement. Je crois que c'est l'objet Range qui pose problème. Il faudrait qqch comme ActiveCells(14, 1).Select

Reply

Marsh Posté le 06-05-2006 à 17:02:13    

La solution trouvée en tatonnant un peu par hasard...
 
Sub Intervertir()
 
For i = 8 To 1000 Step 11
 
    Cells(i, 1).EntireRow.Select
    Selection.Cut
    Cells(i + 3, 1).EntireRow.Select
    ActiveSheet.Paste
     
         
    Next i
     
    Call Suppression
     
End Sub
 
Merci pour les suggestions!

Reply

Marsh Posté le 06-05-2006 à 17:05:19    

Tant mieux ;)
 
Ceci-dit, es-tu sûr d'avoir également modifié le premier Range :
Range("A & i" ).Select => Range("A" & i).Select
 
Je viens de faire de test de mon côté, et avec ces modifs, cela semble fonctionner.
 
Bon courage pour la suite.

Reply

Marsh Posté le 07-05-2006 à 08:47:41    

C'est vrai, ta version fonctionne également. J'avais effectivement omis de changer le premier Range, ce qui continuait donc à générer le message d'erreur....
Bonne journée, et merci pour le soutien!

Reply

Sujets relatifs:

Leave a Replay

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