Copie feuilles classeur

poipoi59

XLDnaute Junior
Bonjour à tous,

J'aimerais copier toutes les feuilles d'un classeur actif (dont le nom est variable) vers un classeur (dont le nom est fixe) en copiant également le nom des feuilles.

Auriez-vous une solution ?

Merci à vous

poipoi59
 

camarchepas

XLDnaute Barbatruc
Re : Copie feuilles classeur

Bonjour ,

une premiere solution où les 2 classeurs doivent être ouverts .

Le classeur à copier est déclaré dans classeur1

Code:
Sub copie()
Dim Classeur1 As String
Dim Onglet As Worksheet
Classeur1 = "Semaine.xlsm"
For Each Onglet In Workbooks(Classeur1).Worksheets
Onglet.Copy before:=Feuil1
Next
End Sub
 

poipoi59

XLDnaute Junior
Re : Copie feuilles classeur

Bonjour,

Merci beaucoup pour la réponse,

Si je peux me permettre, il me semble dans le code ci-dessus que le classeur1 a un nom fixe et connu et c'est de là qu'on copie les données.

Or, je souhaite copier les feuilles d'un classeur dont le nom commence par "agenc" vers un classeur dont le nom est connu.

Merci à vous

poipoi59
 

camarchepas

XLDnaute Barbatruc
Re : Copie feuilles classeur

Bonjour ,

Toujours avec les 2 classeurs ouvert dans la même instance Excel

Code:
Sub copie()
Dim Onglet As Worksheet
Dim Classeur As Workbook
For Each Classeur In Application.Workbooks
 If InStr(1, Classeur.Name, "agen") > 0 Then
  For Each Onglet In Classeur.Worksheets
   Onglet.Copy before:=ThisWorkbook.Sheets("Feuil1")
  Next Onglet
 End If
Next Classeur
End Sub
 

poipoi59

XLDnaute Junior
Re : Copie feuilles classeur

Bonjour,

Merci pour vos réponses,

J'ai désormais un autre souci,

J'ai écrit ce début de code :

Sub test()

Application.ScreenUpdating = False

Dim Wbk As Workbook

For Each Wbk In Application.Workbooks
If Left(Wbk.Name, 5) = "agenc" Then
Wbk.Activate
Exit For
End If
Next Wbk

If Left(ActiveWorkbook.Name, 5) <> "agenc" Then
MsgBox ("Le fichier n'a pas été trouvé")
Else

Sheets.Select
Sheets.Move Before:= _
Workbooks("Module.xls").Sheets(1)



Pour moi le code fonctionne, par contre, pour une autre personne, le code plante à la dernière ligne : "L'indice n'appartient pas à la sélection". Dans tous les cas, le fichier dont le nom commence par "agenc" est bien ouvert ainsi que le fichier "Module"

Auriez-vous une idée ? une option excel, un module complémentaire ou autre chose...

Merci d'avance

poipoi59
 

Staple1600

XLDnaute Barbatruc
Re : Copie feuilles classeur

Bonsoir à tous


Une proposition testée (à partir de ta macro test)
Code:
Sub testBIS()
Application.ScreenUpdating = False
Dim Wbk As Workbook, ws As Worksheet
For Each Wbk In Application.Workbooks
If Wbk.Name Like "agenc*" Then
For Each ws In Wbk.Worksheets
ws.Copy after:=Workbooks("Module.xls").Sheets(Workbooks("Module.xls").Sheets.Count)
Next ws
End If
Next Wbk
End Sub
 

poipoi59

XLDnaute Junior
Re : Copie feuilles classeur

Bonsoir à tous


Une proposition testée (à partir de ta macro test)
Code:
Sub testBIS()
Application.ScreenUpdating = False
Dim Wbk As Workbook, ws As Worksheet
For Each Wbk In Application.Workbooks
If Wbk.Name Like "agenc*" Then
For Each ws In Wbk.Worksheets
ws.Copy after:=Workbooks("Module.xls").Sheets(Workbooks("Module.xls").Sheets.Count)
Next ws
End If
Next Wbk
End Sub

Bonjour Staple 1600,

Merci pour ta réponse et désolé pour l'impair...

Ton code fonctionne...

Par contre, à quel endroit puis-je ajouter ?

If Left(ActiveWorkbook.Name, 5) <> "agenc" Then
MsgBox ("Le fichier n'a pas été trouvé")
Else

qui permet de vérifier que le fichier est ouvert

Merci,

poipoi59
 

Staple1600

XLDnaute Barbatruc
Re : Copie feuilles classeur

Bonsoir à tous

poipoi59
Il semblerait que ceci fonctionne, non ?
(code VBA à mettre dans Module.xls)
Code:
Sub testTER()
Dim wbk As Workbook, tWbk As Workbook, ws As Worksheet, flag As Boolean
Set tWbk = ThisWorkbook
For Each wbk In Workbooks
If wbk.Name Like "agenc*" Then flag = True: Exit For
Next wbk
If flag = False Then
MsgBox "Le fichier n'a pas été trouvé!", vbCritical, "Fichier non ouvert"
Exit Sub
Else
For Each ws In wbk.Worksheets
ws.Copy after:=tWbk.Sheets(tWbk.Sheets.Count)
Next ws
End If
End Sub
 

poipoi59

XLDnaute Junior
Re : Copie feuilles classeur

Bonjour à tous,

Le code Sub TestTER() ne permet l'extraction que d'un seul fichier dont le nom commence par "agenc".

J'aimerais utiliser le code testBIS() de Staple1600 avec une alerte si aucun classeur dont le nom commence par "agenc" est ouvert.

J'ai essayé avec un "Else" dans le code sub testBIS mais sans succès.

Auriez-vous une solution ?

Merci à vous,

poipoi59
 

poipoi59

XLDnaute Junior
Re : Copie feuilles classeur

Bonjour à tous,

Si j'enlève le exit for :

Dim wbk As Workbook, tWbk As Workbook, ws As Worksheet, flag As Boolean
Set tWbk = ThisWorkbook
For Each wbk In Workbooks
If wbk.Name Like "agenc*" Then flag = True:
Next wbk
If flag = False Then
MsgBox "Le fichier n'a pas été trouvé!", vbCritical, "Fichier non ouvert"
Exit Sub
Else
For Each ws In wbk.Worksheets

ws.Copy after:=tWbk.Sheets(tWbk.Sheets.Count)
Next ws
End If

J'ai une erreur 91 : Variable objet ou variable de bloc With non définie à "For Each ws in wbk.Worksheets"

Merci,

poipoi59
 

Pierrot93

XLDnaute Barbatruc
Re : Copie feuilles classeur

Re,

essaie comme ceci :
Code:
Option Explicit
Sub test()
Dim wbk As Workbook, tWbk As Workbook, ws As Worksheet, flag As Boolean
Set tWbk = ThisWorkbook
For Each wbk In Workbooks
    If wbk.Name Like "agenc*" Then
        For Each ws In wbk.Worksheets
            ws.Copy after:=tWbk.Sheets(tWbk.Sheets.Count)
        Next ws
        flag = True
    End If
Next wbk
If flag = False Then MsgBox "Le fichier n'a pas été trouvé!", vbCritical, "Fichier non ouvert"
End Sub
 

poipoi59

XLDnaute Junior
Re : Copie feuilles classeur

Bonjour,

En fait j'ai du code après

If flag = False Then MsgBox "Le fichier n'a pas été trouvé!", vbCritical, "Fichier non ouvert"
...
...
..
end sub

J'aimerais que le code s'arrête tout de suite si le fichier n'est pas trouvé.

Auriez-vous une solution ?

Merci,

poipoi59
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 249
Membres
103 498
dernier inscrit
FAHDE