Exporter une feuille d'un classeur vers un autre classeur

Bonjour au forum,

Pour la gestion des horaires à mon travail, j'utilise 2 fichiers Excel, le 1er (horaire projet) qui comporte 52 feuilles (correspondant au nombre de semaine et sur lesquelles je fais plusieurs modifications à l'avance), et le 2ième (horaire) que je partage sur tous les postes de mon taf et qui est effectif, c'est à dire que lorsque je suis sûr des horaires que j'ai rentré sur mon 1er fichier, je copie et colle la feuille sur le 2ieme fichier pour que tous les collaborateurs puissent visualiser leurs horaires.

J'aimerais automatiser ce copier coller via un bouton VBA dont voici le code que j'ai fais :

Dim sh As Worksheet, sh2 As Worksheet
     Dim NomFeuilleDestination As String
     Set sh = Sheets("Semaine 1")                        'Feuille à copier

     NomFeuilleDestination = "Semaine 1"

     'Ouvrir le classeur destination
     Workbooks.Open Filename:=ThisWorkbook.Path & "\Horaire.xlsm"

     ' Empêcher les avertissements
     Application.DisplayAlerts = False

     ' Eviter le message d'erreur si la feuille de destination n'existe pas
     On Error Resume Next

     ' Tester si la feuille Destination existe
     Set sh2 = ActiveWorkbook.Sheets(NomFeuilleDestination)

     ' Si elle existe on l'a supprime
     If Not sh2 Is Nothing Then sh2.Delete

     'Rétablir la gestion normale des erreurs
     On Error GoTo 0

     ' Rétablir les avertissements
     Application.DisplayAlerts = True

     'Coller la feuille d'origine dans le classeur destination
     sh.Copy After:=Workbooks("Horaire.xlsm").Sheets(1)
     With ActiveSheet
         .UsedRange.Copy
         .UsedRange.Range("A1").PasteSpecial xlPasteValues
         .Name = NomFeuilleDestination
         .Protect Password:="mdp", DrawingObjects:=False, Contents:=True, Scenarios:=False
     End With
     Application.CutCopyMode = False

Je répète donc ce code sur chacune de mes 52 feuilles du fichier "horaire projet" en modifiant le nom de la feuille à exporter à chaque fois (Semaine 1, Semaine 2,...etc).

L'exportation fonctionne pour la "Semaine 1", mais lorsque j'exécute le bouton pour exporter la "Semaine 2", la feuille "Semaine 1" se fait écraser, et je n'arrive pas à saisir pourquoi...

Quelqu'un aurait-il une idée...?

Un tout grand merci d'avance

Bonjour

Nrev74 a écrit :

Quelqu'un aurait-il une idée...?

En joignant les 2 fichiers

Tu y indiques les opérations à faire pour arriver au plantage

Bonjour au forum,

Tout d'abord, veuillez excuser mon absence de ces derniers jours concernant le sujet, je planchais dessus

J'ai trouvé d'ou venait le problème, c'était simplement que je ne sauvegardais pas le fichier de destination à chaque fin de transfert...

Mais j'ai du coup une autre question :

Ce code fonctionne très bien pour un classeur de destination non partagé :

Private Sub CommandButton1_Click()

Dim sh As Worksheet, sh2 As Worksheet
     Dim NomFeuilleDestination As String
     Set sh = Sheets("Semaine 2")                        'Feuille à copier

     NomFeuilleDestination = "Semaine 2"

     'Ouvrir le classeur destination
     Workbooks.Open Filename:=ThisWorkbook.Path & "\Horaire_fof.xlsm"

     ' Empêcher les avertissements excel
     Application.DisplayAlerts = False

     ' Eviter le message d'erreur si la feuille destination n'existe pas
     On Error Resume Next

     ' Tester si la feuille Destination existe
     Set sh2 = ActiveWorkbook.Sheets(NomFeuilleDestination)

     ' Si elle existe on l'a supprime
     If Not sh2 Is Nothing Then sh2.Delete

     'Rétablir la gestion normale des erreurs
     On Error GoTo 0

     ' Rétablir les avertissements
     Application.DisplayAlerts = True

     'Coller la feuille Origine dans le classeur destination
     sh.Copy After:=Workbooks("Horaire_fof.xlsm").Sheets(Sheets.Count)
     With ActiveSheet
         .UsedRange.Copy
         .UsedRange.Range("A1").PasteSpecial xlPasteValues
         .Name = NomFeuilleDestination
         .Protect Password:="mdp", DrawingObjects:=False, Contents:=True, Scenarios:=False
         .Range("D9").Select
     End With
     Application.CutCopyMode = False
     ActiveWorkbook.Save

End Sub

Mais il ne fonctionne pas pour un classeur de destination qui est partagé...

J'aimerais donc savoir s'il est possible de départager le classeur pour permettre la copie puis de le repartager une fois la feuille copiée (le partage est protégé par mot de passe pour info).

Un tout grand merci pour ceux qui pourront/voudront bien m'aider

Nico.

Auriez-vous une idée ?


Bonjour Banzai64,

Je joins 2 fichiers exemple ici

Le fichier Horaire_projet_fof est le fichier "source" et le fichier Horaire_fof est le fichier de destination qui est partagé (mot de passe pour le partage : mdp)

Nico.

117horaire-fof.xlsm (46.00 Ko)

Je crée un nouveau post concernant ce problème car c'est un sujet complètement différent

Nico.

Rechercher des sujets similaires à "exporter feuille classeur"