Copie une feuille d'un classeur vers un autre via Private Sub Workbook_Open

Bonjour,

J'ai un code qui copie/colle une feuille d'un classeur vers un autre quand j’exécute une macro manuellement (dans une Sub) ce code fonctionne très bien.

Je souhaiterai utiliser de ce même code dans une "Private Sub Workbook_Open" pour que ce copier/coller de feuille s'"exécute tout seul dès l'ouverture de mon classeur sans avoir besoin d'exécuter le code manuellement.
Ce que je ne comprends pas, c'est que je copie/colle ce même code dans ma "Private Sub Workbook_Open" et j'ai une erreur "Erreur d'exécution '9' : l'indice n'appartient pas à la sélection" uniquement si ce code est exécuté via ma "Private Sub Workbook_Open".

Sauriez vous pourquoi ce code génère cette erreur s'il est utilisé dans ma "Private Sub Workbook_Open" ? Savez-vous quelle est la solution pour que dans ma "Private Sub Workbook_Open" je puisse lui dire d'ouvrir un classeur et de copier/coller une feuille vers le classeur qui est en train de s'ouvrir ?

Merci d'avance pour votre aide et bonne journée à vous,

Voici le code en question :

Private Sub Workbook_Open()

'Activation automatique du Microsoft Visual Basic for Applications Extensibility 5.3

'Si le composant est déjà activé, une erreur se produira à l'activation, dans ce cas continuer la macro sans signaler l'erreur

On Error Resume Next

'Activer le composant Microsoft Visual Basic for Applications Extensibility 5.3 selon la version d'Excel installé sur le PC de l'utilisateur

If Val(Application.Version) > 8 Then

ThisWorkbook.VBProject.References.AddFromGuid _

"{0002E157-0000-0000-C000-000000000046}", 5, 3

Else

ThisWorkbook.VBProject.References.AddFromGuid _

"{0002E157-0000-0000-C000-000000000046}", 5, 3

'En remplaçant ces propriétés par celles d'excel 97

End If

On Error Resume Next

Workbooks("MON_FICHIER_A_OUVRIR.xlsx").Activate

' Si une erreur est renvoyée, fichier non ouvert

If Err.Number = 0 Then

MsgBox "Le fichier « MON_FICHIER_A_OUVRIR.xlsx » semble actuellement ouvert sur votre ordinateur." & Chr(10) & Chr(10) & "Merci de commencer par fermer ce fichier puis relancer la Macro."

End

ElseIf Err.Number <> 0 Then

On Error GoTo 0

' *************************************************

' Define Workbook and Worksheet Variables

' *************************************************

Dim wkbCibleMonFichier As Workbook

Dim wkbSourceMonFichier As Workbook

Dim wksSourceMonFichier As Worksheet

Set wkbCibleMonFichier = ActiveWorkbook

' *************************************************

' Open The Web Workbook

' *************************************************

'Remplacer [CHEMIN DE MON FICHIER] par le chemin du fichier à ouvrir
Workbooks.Open ("[CHEMIN DE MON FICHIER")

' *************************************************

' Set the Web Workbook and Worksheet Variables

' *************************************************

Set wkbSourceMonFichier = ActiveWorkbook

Set wksSourceMonFichier = Sheets("MON_FICHIER_A_OUVRIR")

' *************************************************

' Copy The Web Worksheet To My Workbook and Rename

' *************************************************

wksSourceMonFichier.Copy After:=wkbCibleMonFichier.Sheets(wkbCibleMonFichier.Sheets.Count)

wkbCibleMonFichier.Sheets(ActiveSheet.Name).Name = "COPIE_MON_FICHIER"

' *************************************************

' Close the Web Workbook

' *************************************************

wkbSourceMonFichier.Close

wkbCibleMonFichier.Activate

End If

MsgBox ("OK")

End Sub

Hello,

C'est cette ligne qui est en erreur ?

Workbooks.Open ("[CHEMIN DE MON FICHIER")

A force de recherches et de lecture de forum j'ai fini par comprendre, il m'a fallut travailler avec une variable Workbook :

Dim src As Workbook

Et ensuite avec "src" j'ai bien réussi à manipuler mes feuilles dans les classeurs souhaités.

Merci

Rechercher des sujets similaires à "copie feuille classeur via private sub workbook open"