OVH Cloud OVH Cloud

Copier plusieurs feuilles d'1 fichier dans un autre fichier (format, valeurs)

5 réponses
Avatar
JacquesH
Bonjour à toutes et tous,

Amateur en VBA, je tourne souvent autour du même problème. Je
consulte régulièrement les archives et les sites "pro", mais je n'arrive
pas à simplifier mes Macro :

J'ai 3 feuilles (Feuill1 - Feuill2 - Feuill3) dans un fichier
(Classeur1).

J'ai un second fichier (Classeur2) avec 3 feuilles qui n'ont pas
forcément les memes noms que dans le fichier précédent (Feuill4...).

Je souhaite copier chacune des feuilles du premier fichier dans
la feuille correspondante du second (par exemple Feuil1 de Classeur1en
Feuil4 de classeur 2...). Je souhaite récupérer les valeurs et le
format, mais je ne veux pas les formules.

Actuellement, je l'ai réalisé avec l'éditeur, mais j'ai 9 lignes
par feuille, soit 27 lignes au total :

Windows("Classeur1.xls").Activate
Sheets("Feuil1").Select
Range("A1:K1000").Select
Selection.Copy
Windows("Classeur2.xls").Activate
Sheets("Feuil4").Select
Range("A1").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues

Merci à ceux qui pourront m'aider.

Jacques

5 réponses

Avatar
LeSteph
Bonsoir,
Peux tu dire précisément ce que tu veux copier
d'où et où ce sera plus facile pour l'écrire sinon
tu irais peut être plus vite en copiant les feuilles

Sub copi2()
Sheets(Array("Feuil3", "Feuil5")).Copy _
Before:=Workbooks("Classeur2").Sheets(1)
End Sub
'lsteph
"JacquesH" a écrit dans le message de
news:
Bonjour à toutes et tous,

Amateur en VBA, je tourne souvent autour du même problème. Je
consulte régulièrement les archives et les sites "pro", mais je n'arrive
pas à simplifier mes Macro :

J'ai 3 feuilles (Feuill1 - Feuill2 - Feuill3) dans un fichier
(Classeur1).

J'ai un second fichier (Classeur2) avec 3 feuilles qui n'ont pas
forcément les memes noms que dans le fichier précédent (Feuill4...).

Je souhaite copier chacune des feuilles du premier fichier dans
la feuille correspondante du second (par exemple Feuil1 de Classeur1en
Feuil4 de classeur 2...). Je souhaite récupérer les valeurs et le
format, mais je ne veux pas les formules.

Actuellement, je l'ai réalisé avec l'éditeur, mais j'ai 9 lignes
par feuille, soit 27 lignes au total :

Windows("Classeur1.xls").Activate
Sheets("Feuil1").Select
Range("A1:K1000").Select
Selection.Copy
Windows("Classeur2.xls").Activate
Sheets("Feuil4").Select
Range("A1").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues

Merci à ceux qui pourront m'aider.

Jacques



Avatar
leSteph
Bonjour,
J'ai bien testé ta petite macro
C'est un exemple en attendant précision

- Elle crée de nouvelles feuilles dans le fichier
non pas exactement:

je ne pouvais (faute de savoir quoi et où)
envisager que de copier toute une feuille vers l'autre
classeur, restait à toi de choisir feuil1,2,3 ou 4

Selon ces nouvelles précisions ;-)
...plage" selon les cas ... :
Feuill1 : Tableau de A1 à ? (plage variable).
(qui sont encore assez variables), voici à adapter

précisément à tes zones et feuilles l'exemple pour
Casseur1 Feuil1 vers classeur2 Feuil4 de a1:k1000:

Sub copimoissa()
'copie valeurs et formats
Workbooks("Classeur1").Activate
Worksheets("Feuil1").Range("a1:k1000").Copy
Workbooks("Classeur2").Activate
Worksheets("Feuil4").Range("a1").PasteSpecial xlValues
Worksheets("Feuil4").Range("a1").PasteSpecial xlFormats
End Sub

'Cela répond-il à ton besoin?
'amicalement
'lSteph

-----Message d'origine-----
Bonjour,

J'ai bien testé ta petite macro, mais elle ne répond
pas vraiment à mon

problème car :
- Elle crée de nouvelles feuilles dans le fichier
(Classeur2) alors que

je souhaite qu'elle copie la Feuil1 du Classeur1 dans une
feuille précise du

Classeur2 (par exemple la Feuill4). De même pour la
Feuil2 et 3.

- D'autre part, après les copies, j'ai toujours
les formules, alors que

je ne souhaite que les valeurs et le format.

En ce qui concerne les éléments à copier, il s'agit
de tableaux de valeurs

et j'utilise généralement "CurrentRegion" ou "UsedRange",
ou "définition d'une

plage" selon les cas ... :
Feuill1 : Tableau de A1 à ? (plage variable).
Feuil2 : Tableau de A1 à ? (plage variable).
Feuil3 : Tableau figée de A1 à G6.

Je les copie tous en A1 de la Feuille de réception
correspondante.


Merci d'avance

Jacques


Bonsoir,
Peux tu dire précisément ce que tu veux copier
d'où et où ce sera plus facile pour l'écrire sinon
tu irais peut être plus vite en copiant les feuilles

Sub copi2()
Sheets(Array("Feuil3", "Feuil5")).Copy _
Before:=Workbooks("Classeur2").Sheets(1)
End Sub
'lsteph
"JacquesH" a
écrit dans le message de


news:
Bonjour à toutes et tous,

Amateur en VBA, je tourne souvent autour du même
problème. Je



consulte régulièrement les archives et les
sites "pro", mais je n'arrive



pas à simplifier mes Macro :

J'ai 3 feuilles (Feuill1 - Feuill2 - Feuill3)
dans un fichier



(Classeur1).

J'ai un second fichier (Classeur2) avec 3
feuilles qui n'ont pas



forcément les memes noms que dans le fichier
précédent (Feuill4...).




Je souhaite copier chacune des feuilles du
premier fichier dans



la feuille correspondante du second (par exemple
Feuil1 de Classeur1en



Feuil4 de classeur 2...). Je souhaite récupérer les
valeurs et le



format, mais je ne veux pas les formules.

Actuellement, je l'ai réalisé avec l'éditeur,
mais j'ai 9 lignes



par feuille, soit 27 lignes au total :

Windows("Classeur1.xls").Activate
Sheets("Feuil1").Select
Range("A1:K1000").Select
Selection.Copy
Windows("Classeur2.xls").Activate
Sheets("Feuil4").Select
Range("A1").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues

Merci à ceux qui pourront m'aider.

Jacques




.





Avatar
leSteph
Bonjour,
J'ai bien testé ta petite macro
C'est un exemple en attendant précision

- Elle crée de nouvelles feuilles dans le fichier
non pas exactement:

je ne pouvais (faute de savoir quoi et où)
envisager que de copier toute une feuille vers l'autre
classeur, restait à toi de choisir feuil1,2,3 ou 4

Selon ces nouvelles précisions ;-)
...plage" selon les cas ... :
Feuill1 : Tableau de A1 à ? (plage variable).
(qui sont encore assez variables), voici à adapter

précisément à tes zones et feuilles l'exemple pour
Casseur1 Feuil1 vers classeur2 Feuil4 de a1:k1000:

Sub copimoissa()
'copie valeurs et formats
Workbooks("Classeur1").Activate
Worksheets("Feuil1").Range("a1:k1000").Copy
Workbooks("Classeur2").Activate
Worksheets("Feuil4").Range("a1").PasteSpecial xlValues
Worksheets("Feuil4").Range("a1").PasteSpecial xlFormats
End Sub

'Cela répond-il à ton besoin?
'amicalement
'lSteph

-----Message d'origine-----
Bonjour,

J'ai bien testé ta petite macro, mais elle ne répond
pas vraiment à mon

problème car :
- Elle crée de nouvelles feuilles dans le fichier
(Classeur2) alors que

je souhaite qu'elle copie la Feuil1 du Classeur1 dans une
feuille précise du

Classeur2 (par exemple la Feuill4). De même pour la
Feuil2 et 3.

- D'autre part, après les copies, j'ai toujours
les formules, alors que

je ne souhaite que les valeurs et le format.

En ce qui concerne les éléments à copier, il s'agit
de tableaux de valeurs

et j'utilise généralement "CurrentRegion" ou "UsedRange",
ou "définition d'une

plage" selon les cas ... :
Feuill1 : Tableau de A1 à ? (plage variable).
Feuil2 : Tableau de A1 à ? (plage variable).
Feuil3 : Tableau figée de A1 à G6.

Je les copie tous en A1 de la Feuille de réception
correspondante.


Merci d'avance

Jacques


Bonsoir,
Peux tu dire précisément ce que tu veux copier
d'où et où ce sera plus facile pour l'écrire sinon
tu irais peut être plus vite en copiant les feuilles

Sub copi2()
Sheets(Array("Feuil3", "Feuil5")).Copy _
Before:=Workbooks("Classeur2").Sheets(1)
End Sub
'lsteph
"JacquesH" a
écrit dans le message de


news:
Bonjour à toutes et tous,

Amateur en VBA, je tourne souvent autour du même
problème. Je



consulte régulièrement les archives et les
sites "pro", mais je n'arrive



pas à simplifier mes Macro :

J'ai 3 feuilles (Feuill1 - Feuill2 - Feuill3)
dans un fichier



(Classeur1).

J'ai un second fichier (Classeur2) avec 3
feuilles qui n'ont pas



forcément les memes noms que dans le fichier
précédent (Feuill4...).




Je souhaite copier chacune des feuilles du
premier fichier dans



la feuille correspondante du second (par exemple
Feuil1 de Classeur1en



Feuil4 de classeur 2...). Je souhaite récupérer les
valeurs et le



format, mais je ne veux pas les formules.

Actuellement, je l'ai réalisé avec l'éditeur,
mais j'ai 9 lignes



par feuille, soit 27 lignes au total :

Windows("Classeur1.xls").Activate
Sheets("Feuil1").Select
Range("A1:K1000").Select
Selection.Copy
Windows("Classeur2.xls").Activate
Sheets("Feuil4").Select
Range("A1").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues

Merci à ceux qui pourront m'aider.

Jacques




.





Avatar
JacquesH
Bonjour,

J'ai bien testé ta petite macro, mais elle ne répond pas vraiment à mon
problème car :
- Elle crée de nouvelles feuilles dans le fichier (Classeur2) alors que
je souhaite qu'elle copie la Feuil1 du Classeur1 dans une feuille précise du
Classeur2 (par exemple la Feuill4). De même pour la Feuil2 et 3.
- D'autre part, après les copies, j'ai toujours les formules, alors que
je ne souhaite que les valeurs et le format.

En ce qui concerne les éléments à copier, il s'agit de tableaux de valeurs
et j'utilise généralement "CurrentRegion" ou "UsedRange", ou "définition d'une
plage" selon les cas ... :
Feuill1 : Tableau de A1 à ? (plage variable).
Feuil2 : Tableau de A1 à ? (plage variable).
Feuil3 : Tableau figée de A1 à G6.

Je les copie tous en A1 de la Feuille de réception correspondante.

Merci d'avance

Jacques


Bonsoir,
Peux tu dire précisément ce que tu veux copier
d'où et où ce sera plus facile pour l'écrire sinon
tu irais peut être plus vite en copiant les feuilles

Sub copi2()
Sheets(Array("Feuil3", "Feuil5")).Copy _
Before:=Workbooks("Classeur2").Sheets(1)
End Sub
'lsteph
"JacquesH" a écrit dans le message de
news:
Bonjour à toutes et tous,

Amateur en VBA, je tourne souvent autour du même problème. Je
consulte régulièrement les archives et les sites "pro", mais je n'arrive
pas à simplifier mes Macro :

J'ai 3 feuilles (Feuill1 - Feuill2 - Feuill3) dans un fichier
(Classeur1).

J'ai un second fichier (Classeur2) avec 3 feuilles qui n'ont pas
forcément les memes noms que dans le fichier précédent (Feuill4...).

Je souhaite copier chacune des feuilles du premier fichier dans
la feuille correspondante du second (par exemple Feuil1 de Classeur1en
Feuil4 de classeur 2...). Je souhaite récupérer les valeurs et le
format, mais je ne veux pas les formules.

Actuellement, je l'ai réalisé avec l'éditeur, mais j'ai 9 lignes
par feuille, soit 27 lignes au total :

Windows("Classeur1.xls").Activate
Sheets("Feuil1").Select
Range("A1:K1000").Select
Selection.Copy
Windows("Classeur2.xls").Activate
Sheets("Feuil4").Select
Range("A1").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues

Merci à ceux qui pourront m'aider.

Jacques





Avatar
JacquesH
Re-bonjour et merci beaucoup,

Ta nouvelle Macro m'a permis de mieux comprendre comment
simplifier. En fait, il me manquait l'expression "Workbooks" et quelques
autres techniques.

J'ai simplifiié encore plus et en 3 lignes (au lieu de 27 au
départ), je réalise la même chose :
Workbooks("Classeur2").Sheets("Feuil3").Range("A1:M1000") =_
Workbooks("Classeur1").Sheets("Feuil3").Range("A1:M1000").Value


Mais le "Value" ne copie pas les formats. Connais-tu le code pour copier
Valeurs et format (sauf formules) ?

Merci d'avance pour tes conseils

Jacques



Bonjour,
J'ai bien testé ta petite macro
C'est un exemple en attendant précision

- Elle crée de nouvelles feuilles dans le fichier
non pas exactement:

je ne pouvais (faute de savoir quoi et où)
envisager que de copier toute une feuille vers l'autre
classeur, restait à toi de choisir feuil1,2,3 ou 4

Selon ces nouvelles précisions ;-)
...plage" selon les cas ... :
Feuill1 : Tableau de A1 à ? (plage variable).
(qui sont encore assez variables), voici à adapter

précisément à tes zones et feuilles l'exemple pour
Casseur1 Feuil1 vers classeur2 Feuil4 de a1:k1000:

Sub copimoissa()
'copie valeurs et formats
Workbooks("Classeur1").Activate
Worksheets("Feuil1").Range("a1:k1000").Copy
Workbooks("Classeur2").Activate
Worksheets("Feuil4").Range("a1").PasteSpecial xlValues
Worksheets("Feuil4").Range("a1").PasteSpecial xlFormats
End Sub

'Cela répond-il à ton besoin?
'amicalement
'lSteph

-----Message d'origine-----
Bonjour,

J'ai bien testé ta petite macro, mais elle ne répond
pas vraiment à mon

problème car :
- Elle crée de nouvelles feuilles dans le fichier
(Classeur2) alors que

je souhaite qu'elle copie la Feuil1 du Classeur1 dans une
feuille précise du

Classeur2 (par exemple la Feuill4). De même pour la
Feuil2 et 3.

- D'autre part, après les copies, j'ai toujours
les formules, alors que

je ne souhaite que les valeurs et le format.

En ce qui concerne les éléments à copier, il s'agit
de tableaux de valeurs

et j'utilise généralement "CurrentRegion" ou "UsedRange",
ou "définition d'une

plage" selon les cas ... :
Feuill1 : Tableau de A1 à ? (plage variable).
Feuil2 : Tableau de A1 à ? (plage variable).
Feuil3 : Tableau figée de A1 à G6.

Je les copie tous en A1 de la Feuille de réception
correspondante.


Merci d'avance

Jacques


Bonsoir,
Peux tu dire précisément ce que tu veux copier
d'où et où ce sera plus facile pour l'écrire sinon
tu irais peut être plus vite en copiant les feuilles

Sub copi2()
Sheets(Array("Feuil3", "Feuil5")).Copy _
Before:=Workbooks("Classeur2").Sheets(1)
End Sub
'lsteph
"JacquesH" a
écrit dans le message de


news:
Bonjour à toutes et tous,

Amateur en VBA, je tourne souvent autour du même
problème. Je



consulte régulièrement les archives et les
sites "pro", mais je n'arrive



pas à simplifier mes Macro :

J'ai 3 feuilles (Feuill1 - Feuill2 - Feuill3)
dans un fichier



(Classeur1).

J'ai un second fichier (Classeur2) avec 3
feuilles qui n'ont pas



forcément les memes noms que dans le fichier
précédent (Feuill4...).




Je souhaite copier chacune des feuilles du
premier fichier dans



la feuille correspondante du second (par exemple
Feuil1 de Classeur1en



Feuil4 de classeur 2...). Je souhaite récupérer les
valeurs et le



format, mais je ne veux pas les formules.

Actuellement, je l'ai réalisé avec l'éditeur,
mais j'ai 9 lignes



par feuille, soit 27 lignes au total :

Windows("Classeur1.xls").Activate
Sheets("Feuil1").Select
Range("A1:K1000").Select
Selection.Copy
Windows("Classeur2.xls").Activate
Sheets("Feuil4").Select
Range("A1").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlValues

Merci à ceux qui pourront m'aider.

Jacques




.