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