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

copie de plages d'un classeur vers un autre

9 réponses
Avatar
Circé
Salut tout le monde ! ;)

Voilà le problème :

Soit 2 classeurs, le A et le B

Le classeur A à un certain nombre de feuilles (environ 70/80) qui
existent toutes sous le même nom dans le classeur B.

Je veux copier une plage de chacune des feuilles du classeur A et la
coller dans la feuille correspondante (du même nom) dans le classeur B.

J'ai fait un truc comme ça qui ne fonctionne pas (trop simpliste :D)) :

Sub copie()
Dim RO, RD, f, nom
For Each f In ThisWorkbook.Sheets
nom = f.Name
Set RO = ThisWorkbook.Sheets(nom).Range("B2:G100")
Set RD = Workbooks("classeur B").Sheets(nom).Range("K2")

RO.Copy Destination:=RD
Next
End Sub

Merci à celle/celui qui voudra bien m'aider !

Circé
http://faqword.com

9 réponses

Avatar
Daniel.C
Bonjour Circé.
Ca fonctionne ici. Peut-être as-tu oublié l'extension du fichier
(classeur B.xls) ?
Sinon, donne-nous le message et la ligne d'erreur.
Cordialement.
Daniel

Salut tout le monde ! ;)

Voilà le problème :

Soit 2 classeurs, le A et le B

Le classeur A à un certain nombre de feuilles (environ 70/80) qui existent
toutes sous le même nom dans le classeur B.

Je veux copier une plage de chacune des feuilles du classeur A et la coller
dans la feuille correspondante (du même nom) dans le classeur B.

J'ai fait un truc comme ça qui ne fonctionne pas (trop simpliste :D)) :

Sub copie()
Dim RO, RD, f, nom
For Each f In ThisWorkbook.Sheets
nom = f.Name
Set RO = ThisWorkbook.Sheets(nom).Range("B2:G100")
Set RD = Workbooks("classeur B").Sheets(nom).Range("K2")

RO.Copy Destination:=RD
Next
End Sub

Merci à celle/celui qui voudra bien m'aider !

Circé
http://faqword.com
Avatar
michdenis
Bonjour,

Comme disait Daniel, ton code devrait fonctionner.


On peut le simplifier....
'--------------------------------
Sub copie()
Dim F As Worksheet
With ThisWorkbook
For Each F In .Worksheets
F.Range("B2:G100").Copy _
Workbooks("classeur B.xls").Sheets(F.Name).Range("K2")
Next
End With
End Sub
'--------------------------------



"Circé" a écrit dans le message de groupe de discussion :

Salut tout le monde ! ;)

Voilà le problème :

Soit 2 classeurs, le A et le B

Le classeur A à un certain nombre de feuilles (environ 70/80) qui
existent toutes sous le même nom dans le classeur B.

Je veux copier une plage de chacune des feuilles du classeur A et la
coller dans la feuille correspondante (du même nom) dans le classeur B.

J'ai fait un truc comme ça qui ne fonctionne pas (trop simpliste :D)) :

Sub copie()
Dim RO, RD, f, nom
For Each f In ThisWorkbook.Sheets
nom = f.Name
Set RO = ThisWorkbook.Sheets(nom).Range("B2:G100")
Set RD = Workbooks("classeur B").Sheets(nom).Range("K2")

RO.Copy Destination:=RD
Next
End Sub

Merci à celle/celui qui voudra bien m'aider !

Circé
http://faqword.com
Avatar
Circé
Bonjour

Merci à tous les deux...

Effectivement, ça marche.
Et l'erreur venait (et vient toujours) du fait que je n'avais pas vu
que les noms n'étaient pas totalement identiques... Pfffuiittt ! :(

Dans un classeur, on m'a mis des noms avec des espaces, et dans l'autre
les espaces sont remplacés par des underscores.

Auriez vous une macro qui me permet de remplacer tous les espaces par
des underscores dans les noms des feuilles ?

Circé
http://faqword.com


michdenis a exprimé avec précision :
Bonjour,

Comme disait Daniel, ton code devrait fonctionner.


On peut le simplifier....
'--------------------------------
Sub copie()
Dim F As Worksheet
With ThisWorkbook
For Each F In .Worksheets
F.Range("B2:G100").Copy _
Workbooks("classeur B.xls").Sheets(F.Name).Range("K2")
Next
End With
End Sub
'--------------------------------



"Circé" a écrit dans le message de groupe de discussion :

Salut tout le monde ! ;)

Voilà le problème :

Soit 2 classeurs, le A et le B

Le classeur A à un certain nombre de feuilles (environ 70/80) qui
existent toutes sous le même nom dans le classeur B.

Je veux copier une plage de chacune des feuilles du classeur A et la
coller dans la feuille correspondante (du même nom) dans le classeur B.

J'ai fait un truc comme ça qui ne fonctionne pas (trop simpliste :D)) :

Sub copie()
Dim RO, RD, f, nom
For Each f In ThisWorkbook.Sheets
nom = f.Name
Set RO = ThisWorkbook.Sheets(nom).Range("B2:G100")
Set RD = Workbooks("classeur B").Sheets(nom).Range("K2")

RO.Copy Destination:=RD
Next
End Sub

Merci à celle/celui qui voudra bien m'aider !

Circé
http://faqword.com
Avatar
Daniel.C
Sub test()
Dim sh
For Each sh In Sheets
sh.Name = Application.Substitute(sh.Name, " ", "_")
Next sh
End Sub

Daniel

Bonjour

Merci à tous les deux...

Effectivement, ça marche.
Et l'erreur venait (et vient toujours) du fait que je n'avais pas vu que les
noms n'étaient pas totalement identiques... Pfffuiittt ! :(

Dans un classeur, on m'a mis des noms avec des espaces, et dans l'autre les
espaces sont remplacés par des underscores.

Auriez vous une macro qui me permet de remplacer tous les espaces par des
underscores dans les noms des feuilles ?

Circé
http://faqword.com


michdenis a exprimé avec précision :
Bonjour,

Comme disait Daniel, ton code devrait fonctionner.


On peut le simplifier....
'--------------------------------
Sub copie()
Dim F As Worksheet
With ThisWorkbook
For Each F In .Worksheets
F.Range("B2:G100").Copy _
Workbooks("classeur B.xls").Sheets(F.Name).Range("K2")
Next
End With
End Sub
'--------------------------------



"Circé" a écrit dans le message de groupe de discussion :

Salut tout le monde ! ;)

Voilà le problème :

Soit 2 classeurs, le A et le B

Le classeur A à un certain nombre de feuilles (environ 70/80) qui
existent toutes sous le même nom dans le classeur B.

Je veux copier une plage de chacune des feuilles du classeur A et la
coller dans la feuille correspondante (du même nom) dans le classeur B.

J'ai fait un truc comme ça qui ne fonctionne pas (trop simpliste :D)) :

Sub copie()
Dim RO, RD, f, nom
For Each f In ThisWorkbook.Sheets
nom = f.Name
Set RO = ThisWorkbook.Sheets(nom).Range("B2:G100")
Set RD = Workbooks("classeur B").Sheets(nom).Range("K2")

RO.Copy Destination:=RD
Next
End Sub

Merci à celle/celui qui voudra bien m'aider !

Circé
http://faqword.com
Avatar
michdenis
Et celle là est bien meilleure....!

Sub test()
dim F as object
For Each F In ThisWorkbook.Sheets
F.Name = Replace(F.Name, "_", " ")
Next
End Sub

;-)))



"Daniel.C" a écrit dans le message de groupe de discussion :

Sub test()
Dim sh
For Each sh In Sheets
sh.Name = Application.Substitute(sh.Name, " ", "_")
Next sh
End Sub

Daniel

Bonjour

Merci à tous les deux...

Effectivement, ça marche.
Et l'erreur venait (et vient toujours) du fait que je n'avais pas vu que les
noms n'étaient pas totalement identiques... Pfffuiittt ! :(

Dans un classeur, on m'a mis des noms avec des espaces, et dans l'autre les
espaces sont remplacés par des underscores.

Auriez vous une macro qui me permet de remplacer tous les espaces par des
underscores dans les noms des feuilles ?

Circé
http://faqword.com


michdenis a exprimé avec précision :
Bonjour,

Comme disait Daniel, ton code devrait fonctionner.


On peut le simplifier....
'--------------------------------
Sub copie()
Dim F As Worksheet
With ThisWorkbook
For Each F In .Worksheets
F.Range("B2:G100").Copy _
Workbooks("classeur B.xls").Sheets(F.Name).Range("K2")
Next
End With
End Sub
'--------------------------------



"Circé" a écrit dans le message de groupe de discussion :

Salut tout le monde ! ;)

Voilà le problème :

Soit 2 classeurs, le A et le B

Le classeur A à un certain nombre de feuilles (environ 70/80) qui
existent toutes sous le même nom dans le classeur B.

Je veux copier une plage de chacune des feuilles du classeur A et la
coller dans la feuille correspondante (du même nom) dans le classeur B.

J'ai fait un truc comme ça qui ne fonctionne pas (trop simpliste :D)) :

Sub copie()
Dim RO, RD, f, nom
For Each f In ThisWorkbook.Sheets
nom = f.Name
Set RO = ThisWorkbook.Sheets(nom).Range("B2:G100")
Set RD = Workbooks("classeur B").Sheets(nom).Range("K2")

RO.Copy Destination:=RD
Next
End Sub

Merci à celle/celui qui voudra bien m'aider !

Circé
http://faqword.com
Avatar
Circé
hello !!

michdenis avait énoncé :
Et celle là est bien meilleure....!



Je voulais pas lancer une compétition !!! :D

Allez, exaequo !! Les 2 fonctionnent...

Génial, j'ai gagné mon après midi !!! ;)))

Circé

Sub test()
dim F as object
For Each F In ThisWorkbook.Sheets
F.Name = Replace(F.Name, "_", " ")
Next
End Sub

;-)))



"Daniel.C" a écrit dans le message de groupe de
discussion :
Sub test()
Dim sh
For Each sh In Sheets
sh.Name = Application.Substitute(sh.Name, " ", "_")
Next sh
End Sub

Daniel

Bonjour

Merci à tous les deux...

Effectivement, ça marche.
Et l'erreur venait (et vient toujours) du fait que je n'avais pas vu que les
noms n'étaient pas totalement identiques... Pfffuiittt ! :(

Dans un classeur, on m'a mis des noms avec des espaces, et dans l'autre les
espaces sont remplacés par des underscores.

Auriez vous une macro qui me permet de remplacer tous les espaces par des
underscores dans les noms des feuilles ?

Circé
http://faqword.com


michdenis a exprimé avec précision :
Bonjour,

Comme disait Daniel, ton code devrait fonctionner.


On peut le simplifier....
'--------------------------------
Sub copie()
Dim F As Worksheet
With ThisWorkbook
For Each F In .Worksheets
F.Range("B2:G100").Copy _
Workbooks("classeur B.xls").Sheets(F.Name).Range("K2")
Next
End With
End Sub
'--------------------------------



"Circé" a écrit dans le message de groupe de discussion :

Salut tout le monde ! ;)

Voilà le problème :

Soit 2 classeurs, le A et le B

Le classeur A à un certain nombre de feuilles (environ 70/80) qui
existent toutes sous le même nom dans le classeur B.

Je veux copier une plage de chacune des feuilles du classeur A et la
coller dans la feuille correspondante (du même nom) dans le classeur B.

J'ai fait un truc comme ça qui ne fonctionne pas (trop simpliste :D)) :

Sub copie()
Dim RO, RD, f, nom
For Each f In ThisWorkbook.Sheets
nom = f.Name
Set RO = ThisWorkbook.Sheets(nom).Range("B2:G100")
Set RD = Workbooks("classeur B").Sheets(nom).Range("K2")

RO.Copy Destination:=RD
Next
End Sub

Merci à celle/celui qui voudra bien m'aider !

Circé
http://faqword.com
Avatar
FFO
Salut à toi

Utilises ces lignes de code :

For i = 1 To Sheets.Count
Sheets(i).Name = Replace(Sheets(i).Name, " ", "_")
Next

Le classeur avec les noms d'onglet à modifier doit au préalable être actif

Celà devrait convenir
Dis moi !!!!!
Avatar
Daniel.C
Et c'eût été encore meilleur avec :
F.Name = Replace(F.Name, " ", "_")
;-)))
Daniel

Et celle là est bien meilleure....!

Sub test()
dim F as object
For Each F In ThisWorkbook.Sheets
F.Name = Replace(F.Name, "_", " ")
Next
End Sub

;-)))



"Daniel.C" a écrit dans le message de groupe de
discussion :
Sub test()
Dim sh
For Each sh In Sheets
sh.Name = Application.Substitute(sh.Name, " ", "_")
Next sh
End Sub

Daniel

Bonjour

Merci à tous les deux...

Effectivement, ça marche.
Et l'erreur venait (et vient toujours) du fait que je n'avais pas vu que les
noms n'étaient pas totalement identiques... Pfffuiittt ! :(

Dans un classeur, on m'a mis des noms avec des espaces, et dans l'autre les
espaces sont remplacés par des underscores.

Auriez vous une macro qui me permet de remplacer tous les espaces par des
underscores dans les noms des feuilles ?

Circé
http://faqword.com


michdenis a exprimé avec précision :
Bonjour,

Comme disait Daniel, ton code devrait fonctionner.


On peut le simplifier....
'--------------------------------
Sub copie()
Dim F As Worksheet
With ThisWorkbook
For Each F In .Worksheets
F.Range("B2:G100").Copy _
Workbooks("classeur B.xls").Sheets(F.Name).Range("K2")
Next
End With
End Sub
'--------------------------------



"Circé" a écrit dans le message de groupe de discussion :

Salut tout le monde ! ;)

Voilà le problème :

Soit 2 classeurs, le A et le B

Le classeur A à un certain nombre de feuilles (environ 70/80) qui
existent toutes sous le même nom dans le classeur B.

Je veux copier une plage de chacune des feuilles du classeur A et la
coller dans la feuille correspondante (du même nom) dans le classeur B.

J'ai fait un truc comme ça qui ne fonctionne pas (trop simpliste :D)) :

Sub copie()
Dim RO, RD, f, nom
For Each f In ThisWorkbook.Sheets
nom = f.Name
Set RO = ThisWorkbook.Sheets(nom).Range("B2:G100")
Set RD = Workbooks("classeur B").Sheets(nom).Range("K2")

RO.Copy Destination:=RD
Next
End Sub

Merci à celle/celui qui voudra bien m'aider !

Circé
http://faqword.com
Avatar
michdenis
| F.Name = Replace(F.Name, " ", "_")

Oui oui c'était la demande...
Tu sais ces noms avec des espaces où l'on doit utiliser
les apostrophes simples en plus des guillemets pour les
cerner dans certaines circonstances... C'était simplement
pour éviter les surprises !
;-))




"Daniel.C" a écrit dans le message de groupe de discussion :
#fpY$
Et c'eût été encore meilleur avec :
F.Name = Replace(F.Name, " ", "_")
;-)))
Daniel

Et celle là est bien meilleure....!

Sub test()
dim F as object
For Each F In ThisWorkbook.Sheets
F.Name = Replace(F.Name, "_", " ")
Next
End Sub

;-)))



"Daniel.C" a écrit dans le message de groupe de
discussion :
Sub test()
Dim sh
For Each sh In Sheets
sh.Name = Application.Substitute(sh.Name, " ", "_")
Next sh
End Sub

Daniel

Bonjour

Merci à tous les deux...

Effectivement, ça marche.
Et l'erreur venait (et vient toujours) du fait que je n'avais pas vu que les
noms n'étaient pas totalement identiques... Pfffuiittt ! :(

Dans un classeur, on m'a mis des noms avec des espaces, et dans l'autre les
espaces sont remplacés par des underscores.

Auriez vous une macro qui me permet de remplacer tous les espaces par des
underscores dans les noms des feuilles ?

Circé
http://faqword.com


michdenis a exprimé avec précision :
Bonjour,

Comme disait Daniel, ton code devrait fonctionner.


On peut le simplifier....
'--------------------------------
Sub copie()
Dim F As Worksheet
With ThisWorkbook
For Each F In .Worksheets
F.Range("B2:G100").Copy _
Workbooks("classeur B.xls").Sheets(F.Name).Range("K2")
Next
End With
End Sub
'--------------------------------



"Circé" a écrit dans le message de groupe de discussion :

Salut tout le monde ! ;)

Voilà le problème :

Soit 2 classeurs, le A et le B

Le classeur A à un certain nombre de feuilles (environ 70/80) qui
existent toutes sous le même nom dans le classeur B.

Je veux copier une plage de chacune des feuilles du classeur A et la
coller dans la feuille correspondante (du même nom) dans le classeur B.

J'ai fait un truc comme ça qui ne fonctionne pas (trop simpliste :D)) :

Sub copie()
Dim RO, RD, f, nom
For Each f In ThisWorkbook.Sheets
nom = f.Name
Set RO = ThisWorkbook.Sheets(nom).Range("B2:G100")
Set RD = Workbooks("classeur B").Sheets(nom).Range("K2")

RO.Copy Destination:=RD
Next
End Sub

Merci à celle/celui qui voudra bien m'aider !

Circé
http://faqword.com