Copie feuilles multiples vers autres classeur

Bonjour à tous,

je suis bloqué.... le code ci apres fonctionne sauf une petite chose....

je cherche a copier tout les onglets sauf le "Home" le problème se situe dasn ma boucle qui ne me copie que mon premier onglets mais pas ceux qui suivent....

Workbooks.Open Filename:="G:\D - IT\extraction\Outils coupants\report.xls"
    Windows("Outils coupants.xlsm").Activate

    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Name <> "Home" Then
        Sheets(ws.Name).Select
        Sheets(ws.Name).Copy After:=Workbooks("report.xls").Sheets(1)
        End If
    Next

    Sheets("Feuil1").Select
    ActiveWindow.SelectedSheets.Visible = False
    ActiveWorkbook.Save
    ActiveWorkbook.SaveAs "G:\\D - IT\\extraction\\Outils coupants\\report.xlsx"
    ActiveWindow.Close
    Kill ("G:\\D - IT\\extraction\\Outils coupants\\report.xls")

Application.DisplayAlerts = True

Merci de votre aide si précieuse, ce forum est parfait !

bonjour

tu cherches à copier quoi dans quoi ?

1) toutes les feuilles (sauf "Home") de "outils coupants.xlsm" dans "report.xlsm" ?

2) toutes les feuilles (sauf "Home") de "outils coupants.xlsm" dans "Outils coupants.xlsm " ?

3) toutes les feuilles (sauf "Home") de "report.xlsm" dans "outils coupants.xlsm" ?

4) ou encore ?

Solution numéro 1

merci

Bonsoir,

une solution sur base de ce que j'ai compris.

je n'ai pas compris ce que tu voulais sauver ni comment sauver, j'ai donc mis ce qui me semblait le plus probable en commentaire

Sub copie()
' toutes les feuilles (sauf "Home") de "outils coupants.xlsm" dans "report.xlsm" ?

Set wbr = Workbooks.Open(Filename:="G:\D - IT\extraction\Outils coupants\report.xls")
Set wbo = Workbooks("Outils coupants.xlsm")

    For Each ws In wbo.Worksheets
        If UCase(ws.Name) <> "HOME" Then
            ws.Copy after:=wbr.Sheets(1)
        End If
    Next

'à partir d'ici j'ai pas compris ce que tu voulais faire avec tes sauvegardes.
'    wbr.Save ' sauver le fichier report
'    wbr.Close ' fermer le fichier report
    Set wbr = Nothing
    Set wbo = Nothing
End Sub

cela ne marche pas, c'est très bizarre, il ne me copie absolument rien dans report...

Cette macro fonctionne parfaitement chez moi. j'ai donc mal compris ce que tu voulais, ou mal compris le contenu du classeur outils coupants.

Peux-tu joindre ce fichier ?

alors je te joint le fichier

le mot de passe pour ouvrir le classeur byf2d3uj

a la moindre question n'hésite pas à me demander

27outils-coupants.xlsm (188.99 Ko)

Bonsoir,

j'ai vu que tu avais adapté le code en supprimant l'instruction Ucase. cela aurait dû avoir pour effet de copier toutes les feuilles y compris la feuille home, et c'est bien ce qui s'est passé quand j'ai lancé la macro de ton sur ton fichier chez moi.

le seul changement que j'ai eu à faire est d'adapter les noms de fichier pour que cela puisse fonctionner chez moi.

Je pense donc que le problème se situe à ce niveau-là, mais comme c'est propre à ton environnement, je ne peux pas t'aider (je n'ai d'ailleurs jamais vu de nom de fichier contenant des \\ à répétition (est-ce du mac ?)

en remettant le Ucase tu pense que ca devrait fonctionner?

le \\ dans les chemins c'est une vieille habitude du c++ qui défini les chemins

pense tu que le problème est le fait que je cherche a écrire dans un fichier qui est sur un réseau et non sur ma machine en local?


apedemak a écrit :

en remettant le Ucase tu pense que ca devrait fonctionner?

le \\ dans les chemins c'est une vieille habitude du c++ qui défini les chemins

pense tu que le problème est le fait que je cherche a écrire dans un fichier qui est sur un réseau et non sur ma machine en local?


si tu ne mets pas le Ucase tu devrais changer HOME en Home, mais comme expliqué dans mon message précédent, cela n'explique pas le problème que tu rencontres.

essaie avec ton fichier report en c:\report.xlsm

j'essai demain matin, de toute façon je doit terminer ce fichier demain et ya d'autres trucs qui buggent lol

mais je continuerai a demander de l'aide sur ce forum

merci pour ton aide je vais t'ajouter a mes favoris lol

même en mettant le fichier report dans C:\ cela ne fonctionne pas.....

J'ai réussi mon fichier report doit être au meme format que mon fichier de base....

mais juste une petite question mes onglets sont en ordre inverse.... possibilité de les copier dans le bon ordre directement

Bonjour,

essaie en changeant le code

Sheets(ws.Name).Copy After:=Workbooks("report.xls").Sheets(1)

par

Sheets(ws.Name).Copy After:=Workbooks("report.xls").Sheets(workbooks("report.xls").worksheets.count)

cela fonctionne merci

petite question : cela suppose que mon fichier soit déja existant ...

comment modifier le code pour créer le fichier report.xlsM à l'execution du code

et supprimer l'ancien si il existe.

Merci

Désolé d'être un newbie

Bonjour,

code adapté, à tester

Sub copie()
' toutes les feuilles (sauf "Home") de "outils coupants.xlsm" dans "report.xlsm" ?
    nomdureport = "E:\extraction\Outils coupants\report.xlsm"
    f = Dir(nomdureport)
    ' supprimer fichier report s'il existe déjà
    If f <> "" Then Kill nomdureport

    Set wbr = Workbooks.Add
    Set wbo = Workbooks("Outils coupants.xlsm")

    For Each ws In wbo.Worksheets
        If UCase(ws.Name) <> "HOME" Then
            ws.Copy after:=wbr.Worksheets(wbr.Worksheets.Count)
        End If
    Next
    wbr.SaveAs nomdureport, FileFormat:=52      ' sauver le fichier report au format macro enabled
    wbr.Close    ' fermer le fichier report
    Set wbr = Nothing
    Set wbo = Nothing
End Sub

Code adapté, fonctionnel PARFAIT

Rechercher des sujets similaires à "copie feuilles multiples classeur"