[Catégorie encore modifiée VB6 --> VBA] Syntaxe pour sélectionner des lignes con

uspa Messages postés 12 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 16 octobre 2010 - 5 oct. 2010 à 23:33
uspa Messages postés 12 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 16 octobre 2010 - 6 oct. 2010 à 00:38
Bonsoir,
J'ai besoin de réorganiser une feuille qui contient plusieurs centaines de lignes (une vingtaine de colonnes) mais mes débuts en VBA sont laborieux.
Voilà ma tentative pour une première partie de la macro:

Dim x As Integer
Dim y As Integer
Dim Count As Integer

x = 26
y = 4

For Count = 1 To 11
Rows("x:x+1").Select 'je sélectionne 2 lignes contigues
Selection.Cut
Rows("y:y").Select
Selection.Insert Shift:=xlDown' J'insère les 2 lignes ici
x = x + 2
y = y + 4
Next Count

Quelqu'un pourrait-il m'aider à résoudre l'erreur "Incompatibilité de type" 13 qui s'affiche pour la ligne en rouge?
Merci pour votre aide
Uspa

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
6 oct. 2010 à 00:07
Salut

Rows ne peut désigner qu'une seule ligne.
Il te faut utiliser Range pour définir un ensemble de cellules ou lignes.

Range(Rows(x), Rows(x+1)).Select

Pense à ouvrir l'aide de VBA avant de poster tes questions.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
uspa Messages postés 12 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 16 octobre 2010
6 oct. 2010 à 00:30
Merci Jack
Comme quoi il ne faut pas toujours faire confiance à ce que l'on trouve sur internet.
Encore merci pour ton aide

Uspa
0
uspa Messages postés 12 Date d'inscription mercredi 21 juin 2006 Statut Membre Dernière intervention 16 octobre 2010
6 oct. 2010 à 00:38
Jack
Peux-tu m'expliquer pourquoi l'enregistreur de macro me donne ceci:
Rows("26:27").Select
Selection.Cut
Rows("4:4").Select
Selection.Insert Shift:=xlDown

Sinon j'ai bien sûr appliquer la fonction Range comme tu me l'a indiqué et cela marche très bien mais j'aimerai juste comprendre...
Uspa
0
Rejoignez-nous