Copie de plusieurs plages avec VBA
Je cherche à copier plusieurs plages à l'aide de VBA Excel. Je comprends que, dans le but de sélectionner plusieurs plages, d'une syntaxe similaire à celle ci-dessous est utilisé:
Range("A1:B4000, F1:F4000").Select
Cela fonctionne bien dans sélection la gamme appropriée. Toutefois, les éléments suivants:
Range("A1:B4000, F1:F4000").Copy
...seulement des copies de l'A1:B4000 gamme. C'est le premier problème, je suis confronté à.
Deuxièmement, je voudrais dynamiquement copier les données de la ligne du bas, ce qui n'est pas nécessairement la ligne #4000. Si la sélection d'une plage unique, la syntaxe est comme suit:
Range("A1", Range("B1").End(xlDown)).Copy
Le code ci-dessus avec succès des copies de tout, de A1 vers le bas de la colonne B. Je ne trouve pas sur le net expliquant comment faire pour faire une sélection multiple.
Ce que je suis essentiellement d'essayer de faire est de copier A1:B(en bas) et F1:F(en bas), mais les deux points qui précèdent sont m'en empêche. Je suppose que c'est un problème de syntaxe..?
- Pouvez-vous juste de faire une boucle et de copier et coller deux fois (donc, de copier et de coller le premier de la gamme, puis copiez et collez la deuxième plage)? Il semble que, depuis que vous êtes à l'aide de VBA, vous êtes ajout de complexité en essayant de tout faire en une seule étape.
- Yep, je pouvais le faire - c'est ma solution actuelle. Je déteste juste les solutions de contournement 😛
- J'ai simplement utilisé votre code et il a bien fonctionné pour moi (elle a copié les trois colonnes et collées côte à côte ci-dessous). Quelle version d'Excel êtes-vous?
- Jetez un oeil à
Range("A1").CurrentRegion
. C'est la voie la plus commode pour les plages dynamiques, si vos données est conforme aux exigences.
Vous devez vous connecter pour publier un commentaire.
Utiliser le "Syndicat" de la méthode.
Alors vous pouvez vous amuser avec mutipleRange, comme la normale.
Set range1 = Range("A1:B" & Range("B" & Rows.Count).End(xlUp).Row)
pour obtenir la vraie dernière cellule dans la colonne B. Faire la même chose pour la colonne F ainsi.@Scott Holtzman fournis la solution dans un commentaire: