copie de plages d'un classeur vers un autre

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #21518022
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
michdenis
Le #21517992
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é"
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
Circé
Le #21518992
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é"
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
Daniel.C
Le #21519092
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é"
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
michdenis
Le #21519082
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"
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é"
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
Circé
Le #21519282
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" 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é"
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
FFO
Le #21519262
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 !!!!!
Daniel.C
Le #21519392
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" 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é"
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
michdenis
Le #21520252
| 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" #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" 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é"
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
Publicité
Poster une réponse
Anonyme