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

Recupérer les donnees de chaque feuille d'un classeur vers un nouveau classeur

7 réponses
Avatar
J
Bonjour à tous (XL2000)
Cette macro fonctionne bien, mais oblige à préciser le nom du classeur
d'origine, et chaque feuille l'une après l'autre à la main.
Puis de nommer chaque feuille de destination.
C'est bine lourd.
Comment automatiser cela, svp.

Sub RecupDonnees()
Dim Rg As Range, Rg1 As Range
Set Rg = Workbooks("Suivi.xls").Worksheets("Juin").Range("A1:J44")
Set Rg1 = Workbooks("Classeur1.xls").Worksheets("Feuil1").Range("a1")
Application.EnableEvents = False
Rg.Copy Rg1
Application.EnableEvents = True
End Sub

Merci
@+
J@@

7 réponses

Avatar
JB
Bonjour,

Set
rg=Workbooks(ActiveWorkbook.Name).Worksheets("Juin").Range("A1:J44")

Si Juin représente le mois en cours:

Set rg=Workbooks(ActiveWorkbook.Name).Worksheets(Format(Date,
"mmmm")).Range("A1:J44")

Cordialement JB


Bonjour à tous (XL2000)
Cette macro fonctionne bien, mais oblige à préciser le nom du classeur
d'origine, et chaque feuille l'une après l'autre à la main.
Puis de nommer chaque feuille de destination.
C'est bine lourd.
Comment automatiser cela, svp.

Sub RecupDonnees()
Dim Rg As Range, Rg1 As Range
Set Rg = Workbooks("Suivi.xls").Worksheets("Juin").Range("A1:J44")
Set Rg1 = Workbooks("Classeur1.xls").Worksheets("Feuil1").Range("a1")
Application.EnableEvents = False
Rg.Copy Rg1
Application.EnableEvents = True
End Sub

Merci
@+
J@@


Avatar
JLuc
*Bonjour J@@*,
Pour la feuille, peut etre :
Set Rg = Workbooks("Suivi.xls").Worksheets(Format(Month(Now)-1, _
"mmmm")).Range("A1:J44")

Set Rg = Workbooks("Suivi.xls").Worksheets("Juin").Range("A1:J44")


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
J
Bonjour
merci pour la réponse JB

Set Rg =
Workbooks(ActiveWorkbook.Name).Worksheets("Nom_variable").Range("A1:J44")
Set Rg1 = Workbooks("Classeur1.xls").Worksheets("Feuil2").Range("a1")

c'est mieux, en effet, mais le nom de la feuille d'origine est variable
et pas nécessairement un mois.
Comment dire "For each feuille du classeur Origine, copier le range dans
le classeur destination" et puis en plus copie aussi le format ;-)

merci pour l'aide
cordialement
J@@



Set
rg=Workbooks(ActiveWorkbook.Name).Worksheets("Juin").Range("A1:J44")

Si Juin représente le mois en cours:

Set rg=Workbooks(ActiveWorkbook.Name).Worksheets(Format(Date,
"mmmm")).Range("A1:J44")


Cette macro fonctionne bien, mais oblige à préciser le nom du classeur
d'origine, et chaque feuille l'une après l'autre à la main.
Puis de nommer chaque feuille de destination.
C'est bine lourd.
Comment automatiser cela, svp.

Sub RecupDonnees()
Dim Rg As Range, Rg1 As Range
Set Rg = Workbooks("Suivi.xls").Worksheets("Juin").Range("A1:J44")
Set Rg1 = Workbooks("Classeur1.xls").Worksheets("Feuil1").Range("a1")
Application.EnableEvents = False
Rg.Copy Rg1
Application.EnableEvents = True
End Sub




Avatar
J
Bonjour JLuc
et merci
j'ai erreur 9 au test. Kézako?
Par ailleurs, le nom de la feuille est variable, pas tjrs une date.
merci pour ton aide
à+
J@@

*Bonjour J@@*,
Pour la feuille, peut etre :
Set Rg = Workbooks("Suivi.xls").Worksheets(Format(Month(Now)-1, _
"mmmm")).Range("A1:J44")

Set Rg = Workbooks("Suivi.xls").Worksheets("Juin").Range("A1:J44")




Avatar
JLuc
Bonjour JLuc
et merci
j'ai erreur 9 au test. Kézako?
Par ailleurs, le nom de la feuille est variable, pas tjrs une date.
merci pour ton aide
à+
J@@

*Bonjour J@@*,
Pour la feuille, peut etre :
Set Rg = Workbooks("Suivi.xls").Worksheets(Format(Month(Now)-1, _
"mmmm")).Range("A1:J44")

Set Rg = Workbooks("Suivi.xls").Worksheets("Juin").Range("A1:J44")




Alors peut etre :
For Each feuille In Worksheets
Set Rg = feuille.Range("A1:J44")
...
...
Next

--
JLuc



Avatar
J
Bonjour JLuc
après moult essais, voici quelque chose qui fonctionne.

Sub RecupDonnées1()
Dim Origine As Workbook
Dim FeuilleOrigine As Worksheet
Set Origine = ActiveWorkbook

For Each FeuilleOrigine In Origine.Worksheets
ThisWorkbook.Sheets(FeuilleOrigine.Name).Activate
Range("A1").Select

FeuilleOrigine.Range("A1:J44").Copy
Selection.PasteSpecial Paste:=xlAll
Next FeuilleOrigine

Application.CutCopyMode = False
End Sub

JLuc wrote:

Alors peut etre :
For Each feuille In Worksheets
Set Rg = feuille.Range("A1:J44")
...
...
Next



Avatar
J
Bonjour JLuc
après moult essais, voici quelque chose qui fonctionne.

Sub RecupDonnées1()
Dim Origine As Workbook
Dim FeuilleOrigine As Worksheet
Set Origine = ActiveWorkbook

For Each FeuilleOrigine In Origine.Worksheets
ThisWorkbook.Sheets(FeuilleOrigine.Name).Activate
Range("A1").Select

FeuilleOrigine.Range("A1:J44").Copy
Selection.PasteSpecial Paste:=xlAll
Next FeuilleOrigine

Application.CutCopyMode = False
End Sub

Mais il faut que les classeurs aient des feuilles de même nom.
encore merci
@+
J@@

JLuc wrote:

Bonjour JLuc
et merci
j'ai erreur 9 au test. Kézako?
Par ailleurs, le nom de la feuille est variable, pas tjrs une date.
merci pour ton aide
à+
J@@


*Bonjour J@@*,
Pour la feuille, peut etre :
Set Rg = Workbooks("Suivi.xls").Worksheets(Format(Month(Now)-1, _
"mmmm")).Range("A1:J44")

Set Rg = Workbooks("Suivi.xls").Worksheets("Juin").Range("A1:J44")





Alors peut etre :
For Each feuille In Worksheets
Set Rg = feuille.Range("A1:J44")
...
...
Next