Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier un champs de dimension variable d'une feuille à une autre

8 réponses
Avatar
Philippe Com-Nougué
Bonjour, je suis novice en VBA mais accro et je bute sur un petit problème.
Je veux copier une colonne d'une feuille à une autre. Je sais que je peux
copier la colonne au complet, mais je préfèrerais ne copier que le nombre
exacte de cellules contenant des données. Il n'y a aucune cellule vide entre
les données. Et d'une fois à l'autre le nombre de données dans le champs
varie.

J'utilise Excell 2007

Merci

8 réponses

Avatar
Philippe Com-Nougué
Bonjour, après quelques essais j'ai trouvé cela :

Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste

cela me permet de copier les données de A1 à A? et de les coller dans
Export_Access à la cellule A1

mais je dois répéter l'opération pour chaque colonne que je veux copier. Y a
t il quelque chose de plus simple?

Merci


Bonjour, je suis novice en VBA mais accro et je bute sur un petit problème.
Je veux copier une colonne d'une feuille à une autre. Je sais que je peux
copier la colonne au complet, mais je préfèrerais ne copier que le nombre
exacte de cellules contenant des données. Il n'y a aucune cellule vide entre
les données. Et d'une fois à l'autre le nombre de données dans le champs
varie.

J'utilise Excell 2007

Merci


Avatar
Philippe Com-Nougué
Bonjour, après quelques essais voici ce que j'ai trouvé :

Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Je copie les données dans la plage A1 : A? de Feuil1 que je colle dans A1 de
Feuil Export_Access. Je dois répéter cela pour chaque plage même si certaine
se suivent. Quelqu'un peut'il me proposer un meilleur code.

Merci

Philippe CN



Bonjour, je suis novice en VBA mais accro et je bute sur un petit problème.
Je veux copier une colonne d'une feuille à une autre. Je sais que je peux
copier la colonne au complet, mais je préfèrerais ne copier que le nombre
exacte de cellules contenant des données. Il n'y a aucune cellule vide entre
les données. Et d'une fois à l'autre le nombre de données dans le champs
varie.

J'utilise Excell 2007

Merci


Avatar
Philippe.R
Bonjour Philippe,
Essaye, si les colonnes à copier se suivant ou sont espacées d'un pas
constant, avec une boucle qui balaye les différentes colonnes à copier.
Ici avec les colonnes A à G :

for col = 1 to 7
Range(cells(1,col), cells(1,col).End(xlDown)).Copy
Sheets("Export_Access").Select
Range(cells(1,col))Select
ActiveSheet.Paste

--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Philippe Com-Nougué" a écrit
dans le message de
news:
Bonjour, après quelques essais voici ce que j'ai trouvé :

Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Je copie les données dans la plage A1 : A? de Feuil1 que je colle dans A1
de
Feuil Export_Access. Je dois répéter cela pour chaque plage même si
certaine
se suivent. Quelqu'un peut'il me proposer un meilleur code.

Merci

Philippe CN



Bonjour, je suis novice en VBA mais accro et je bute sur un petit
problème.
Je veux copier une colonne d'une feuille à une autre. Je sais que je peux
copier la colonne au complet, mais je préfèrerais ne copier que le nombre
exacte de cellules contenant des données. Il n'y a aucune cellule vide
entre
les données. Et d'une fois à l'autre le nombre de données dans le champs
varie.

J'utilise Excell 2007

Merci




Avatar
isabelle
bonjour Philippe,

Set plg = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, Range("IV1").End(xlToLeft).Column))
plg.Copy Sheets("Export_Access").Range("A1")

isabelle

Bonjour, après quelques essais voici ce que j'ai trouvé :

Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Je copie les données dans la plage A1 : A? de Feuil1 que je colle dans A1 de
Feuil Export_Access. Je dois répéter cela pour chaque plage même si certaine
se suivent. Quelqu'un peut'il me proposer un meilleur code.

Merci

Philippe CN



Bonjour, je suis novice en VBA mais accro et je bute sur un petit problème.
Je veux copier une colonne d'une feuille à une autre. Je sais que je peux
copier la colonne au complet, mais je préfèrerais ne copier que le nombre
exacte de cellules contenant des données. Il n'y a aucune cellule vide entre
les données. Et d'une fois à l'autre le nombre de données dans le champs
varie.

J'utilise Excell 2007

Merci




Avatar
Philippe Com-Nougué
Bonjour Philippe, j'ai apprécié ton aide , malheureusement je dois recopier 4
plages étant un éloignement non constant. Mais j'ai pus assimiler une façon
d'appliquer une boucle cela va me servir.

Merci pour ton temps


Bonjour Philippe,
Essaye, si les colonnes à copier se suivant ou sont espacées d'un pas
constant, avec une boucle qui balaye les différentes colonnes à copier.
Ici avec les colonnes A à G :

for col = 1 to 7
Range(cells(1,col), cells(1,col).End(xlDown)).Copy
Sheets("Export_Access").Select
Range(cells(1,col))Select
ActiveSheet.Paste

--
http://www.excelabo.net/mpfe/connexion.php
http://dj.joss.free.fr/trombine.htm
Avec plaisir
Philippe.R
"Philippe Com-Nougué" a écrit
dans le message de
news:
Bonjour, après quelques essais voici ce que j'ai trouvé :

Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Je copie les données dans la plage A1 : A? de Feuil1 que je colle dans A1
de
Feuil Export_Access. Je dois répéter cela pour chaque plage même si
certaine
se suivent. Quelqu'un peut'il me proposer un meilleur code.

Merci

Philippe CN



Bonjour, je suis novice en VBA mais accro et je bute sur un petit
problème.
Je veux copier une colonne d'une feuille à une autre. Je sais que je peux
copier la colonne au complet, mais je préfèrerais ne copier que le nombre
exacte de cellules contenant des données. Il n'y a aucune cellule vide
entre
les données. Et d'une fois à l'autre le nombre de données dans le champs
varie.

J'utilise Excell 2007

Merci








Avatar
Philippe Com-Nougué
Bonjour Isabelle, si je comprends ton code, je vais copier l'ensemble des
données contenues dans la feuille source. Ce sont mes premiers pas aussi dans
ce genre de groupe. Je réalise que je dois apprendre à être beaucoup plus
précis quand je fais un appel à l'aide.

Mon fichier source comporte 30 colonnes de données. Je veux en recopier 10
seulement. Quelques colonnes se juxtes et d'autres sont éloignés et ce
defaçon non constanste.

Colonnes de données = A à AC
Colonnes à copier = A:D, G, I:N,
Ce que j'ai trouvé et qui semble fonctionner :

Range("A1:D1").Select
Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Range("G1").Select
Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("E1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Range("I1:N1").Select
Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("F1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Merci pour ton temps et excuse moi encore pour mon imprécision dans ma
demande.

Philippe CN


bonjour Philippe,

Set plg = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, Range("IV1").End(xlToLeft).Column))
plg.Copy Sheets("Export_Access").Range("A1")

isabelle

Bonjour, après quelques essais voici ce que j'ai trouvé :

Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Je copie les données dans la plage A1 : A? de Feuil1 que je colle dans A1 de
Feuil Export_Access. Je dois répéter cela pour chaque plage même si certaine
se suivent. Quelqu'un peut'il me proposer un meilleur code.

Merci

Philippe CN



Bonjour, je suis novice en VBA mais accro et je bute sur un petit problème.
Je veux copier une colonne d'une feuille à une autre. Je sais que je peux
copier la colonne au complet, mais je préfèrerais ne copier que le nombre
exacte de cellules contenant des données. Il n'y a aucune cellule vide entre
les données. Et d'une fois à l'autre le nombre de données dans le champs
varie.

J'utilise Excell 2007

Merci







Avatar
isabelle
bonjour Philippe,

si tu veut essayer celle-ci :

Sub Macro1()
Set plg = Sheets("Feuil1").Range("A:C,F:F,I:I")
For Each c In plg.Columns
t1 = Application.CountA(Sheets("Feuil1").Columns(c.Column)) + 1
t2 = Application.CountA(Sheets("Feuil2").Rows("1")) + 1
y = Range(Cells(1, c.Column), Cells(t1, c.Column)).Address
Sheets("Feuil1").Range(y).Copy Sheets("Feuil2").Cells(1, t2)
Next
End Sub

isabelle

Bonjour Isabelle, si je comprends ton code, je vais copier l'ensemble des
données contenues dans la feuille source. Ce sont mes premiers pas aussi dans
ce genre de groupe. Je réalise que je dois apprendre à être beaucoup plus
précis quand je fais un appel à l'aide.

Mon fichier source comporte 30 colonnes de données. Je veux en recopier 10
seulement. Quelques colonnes se juxtes et d'autres sont éloignés et ce
defaçon non constanste.

Colonnes de données = A à AC
Colonnes à copier = A:D, G, I:N,
Ce que j'ai trouvé et qui semble fonctionner :

Range("A1:D1").Select
Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Range("G1").Select
Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("E1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Range("I1:N1").Select
Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("F1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Merci pour ton temps et excuse moi encore pour mon imprécision dans ma
demande.

Philippe CN


bonjour Philippe,

Set plg = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, Range("IV1").End(xlToLeft).Column))
plg.Copy Sheets("Export_Access").Range("A1")

isabelle

Bonjour, après quelques essais voici ce que j'ai trouvé :

Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Je copie les données dans la plage A1 : A? de Feuil1 que je colle dans A1 de
Feuil Export_Access. Je dois répéter cela pour chaque plage même si certaine
se suivent. Quelqu'un peut'il me proposer un meilleur code.

Merci

Philippe CN



Bonjour, je suis novice en VBA mais accro et je bute sur un petit problème.
Je veux copier une colonne d'une feuille à une autre. Je sais que je peux
copier la colonne au complet, mais je préfèrerais ne copier que le nombre
exacte de cellules contenant des données. Il n'y a aucune cellule vide entre
les données. Et d'une fois à l'autre le nombre de données dans le champs
varie.

J'utilise Excell 2007

Merci








Avatar
Philippe Com-Nougué
Bonjour Isabelle, je viens de tester ton code. Merveilleux ça fonctionne bien
et plus rapide et moins de lignes. J'apprécie, maintenant je vais essayer de
comprendre les nouveaux mots clés. Merci pour ce coup de pouce, j'apprécie
grandement

Encore merci Philippe


bonjour Philippe,

si tu veut essayer celle-ci :

Sub Macro1()
Set plg = Sheets("Feuil1").Range("A:C,F:F,I:I")
For Each c In plg.Columns
t1 = Application.CountA(Sheets("Feuil1").Columns(c.Column)) + 1
t2 = Application.CountA(Sheets("Feuil2").Rows("1")) + 1
y = Range(Cells(1, c.Column), Cells(t1, c.Column)).Address
Sheets("Feuil1").Range(y).Copy Sheets("Feuil2").Cells(1, t2)
Next
End Sub

isabelle

Bonjour Isabelle, si je comprends ton code, je vais copier l'ensemble des
données contenues dans la feuille source. Ce sont mes premiers pas aussi dans
ce genre de groupe. Je réalise que je dois apprendre à être beaucoup plus
précis quand je fais un appel à l'aide.

Mon fichier source comporte 30 colonnes de données. Je veux en recopier 10
seulement. Quelques colonnes se juxtes et d'autres sont éloignés et ce
defaçon non constanste.

Colonnes de données = A à AC
Colonnes à copier = A:D, G, I:N,
Ce que j'ai trouvé et qui semble fonctionner :

Range("A1:D1").Select
Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Range("G1").Select
Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("E1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Range("I1:N1").Select
Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("F1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Merci pour ton temps et excuse moi encore pour mon imprécision dans ma
demande.

Philippe CN


bonjour Philippe,

Set plg = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, Range("IV1").End(xlToLeft).Column))
plg.Copy Sheets("Export_Access").Range("A1")

isabelle

Bonjour, après quelques essais voici ce que j'ai trouvé :

Range(Selection, Selection.End(xlDown)).Copy
Sheets("Export_Access").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Feuil1").Select

Je copie les données dans la plage A1 : A? de Feuil1 que je colle dans A1 de
Feuil Export_Access. Je dois répéter cela pour chaque plage même si certaine
se suivent. Quelqu'un peut'il me proposer un meilleur code.

Merci

Philippe CN



Bonjour, je suis novice en VBA mais accro et je bute sur un petit problème.
Je veux copier une colonne d'une feuille à une autre. Je sais que je peux
copier la colonne au complet, mais je préfèrerais ne copier que le nombre
exacte de cellules contenant des données. Il n'y a aucune cellule vide entre
les données. Et d'une fois à l'autre le nombre de données dans le champs
varie.

J'utilise Excell 2007

Merci