OVH Cloud OVH Cloud

comment définir un range à partir de cellules qui varient?

1 réponse
Avatar
JF
Bonjour

J'ai un tableau de 38 colonnes.
Je souhaite r=E9cup=E9rer certaines de ces colonnes, les copier/coller
dans une feuille =E0 part, mais dans un ordre diff=E9rent de celui
d'origine (tout =E7a sous vba).
Pour se faire, j'ai d=E9fini un tableau avec en colonne A les libell=E9s
de colonnes dans l'ordre voulu. Et en colonne B, en face de chaque
libell=E9, la colonne correspondante dans le fichier d'origine.

En vba, je souhaite parcourir une par une, les cellules de la colonne
B, et en fonction de la valeur de chaque cellule (A, B,C, D...)
d=E9finir mon range =E0 copier.

Sub XXX()
Dim nomc As String
For n =3D 2 To 72
nomc =3D Sheets("Feuil1").Cells(n, 2).Value
Sheets("GW").Select
Range(nomc, nomc).Select
Selection.Copy
Next n
End Sub

La macro plante avec comme message d'erreur "la m=E9thode Range de
l'Objet Global a =E9chou=E9".
Est-ce que quelqu'un peut m'aider?

A moins qu'il y'ait une solution plus simple, en vba, qui impose un
ordre de copie,ex si j'=E9cris

Range("D:D,P:P,H:H).Select
Selection.Copy
Windows("reporting.xls").Activate
Range("a1").Select
ActiveSheet.Paste

la macro va coller la colonne D, puis H puis P, sans respecter l'ordre
inscrit dans Range. Est-ce qu'on peut imposer un ordre pour coller les
colonnes?

merci

1 réponse

Avatar
isabelle
bonjour JF,

sans savoir exactement l'information contenue dans la variable nomc,
tu peut utiliser cette méthode,

exemple si la variable
nomc1 = "G:G"
nomc2 = "E:E"
nomc3 = "A:A"

Set bigRange = Application.Union(Range(nomc1), Range(nomc2), Range(nomc3))
bigRange.Copy

isabelle


Bonjour

J'ai un tableau de 38 colonnes.
Je souhaite récupérer certaines de ces colonnes, les copier/coller
dans une feuille à part, mais dans un ordre différent de celui
d'origine (tout ça sous vba).
Pour se faire, j'ai défini un tableau avec en colonne A les libellés
de colonnes dans l'ordre voulu. Et en colonne B, en face de chaque
libellé, la colonne correspondante dans le fichier d'origine.

En vba, je souhaite parcourir une par une, les cellules de la colonne
B, et en fonction de la valeur de chaque cellule (A, B,C, D...)
définir mon range à copier.

Sub XXX()
Dim nomc As String
For n = 2 To 72
nomc = Sheets("Feuil1").Cells(n, 2).Value
Sheets("GW").Select
Range(nomc, nomc).Select
Selection.Copy
Next n
End Sub

La macro plante avec comme message d'erreur "la méthode Range de
l'Objet Global a échoué".
Est-ce que quelqu'un peut m'aider?

A moins qu'il y'ait une solution plus simple, en vba, qui impose un
ordre de copie,ex si j'écris

Range("D:D,P:P,H:H).Select
Selection.Copy
Windows("reporting.xls").Activate
Range("a1").Select
ActiveSheet.Paste

la macro va coller la colonne D, puis H puis P, sans respecter l'ordre
inscrit dans Range. Est-ce qu'on peut imposer un ordre pour coller les
colonnes?

merci