VBA -Windows Activate dans une procédure BeforeSave
Bonjour à tous,
J'ai créé une macro qui fonctionne très bien et qui vise à copier une partie de mon classeur dans une autre classeur au moment de la sauvegarde. Lorsque j'essaie d'activer cette macro dans l'event BeforeSave (donc dans ThisWorkbook), je reçois un message d'erreur Run-Time error '0': Subscript out if range et le Debug coince sur la ligne en rouge ci-dessous.
Cette macro fonctione cependant très bien dans un module standard.
Y-a-t'il des restrictions dans l'event BeforeSave ?
Merci d'avance.
CODE BEGIN-----------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'déclaration des variables :
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
Dim PlageCopy As Range, LastColumn As String
Dim Feuille As String, i As Integer
'Ouverture des classeurs
Workbooks.Open Filename:="F:\Planning Mgt.xlsx"
'Début de la boucle des tabs "Mois"
For i = 1 To 12
Select Case i
Case Is = 1
Feuille = "Jan"
LastColumn = "BK"
Case Is = 2
Feuille = "Feb"
LastColumn = "BE"
Case Is = 3
Feuille = "Mar"
LastColumn = "BK"
Case Is = 4
Feuille = "Apr"
LastColumn = "BI"
Case Is = 5
Feuille = "May"
LastColumn = "BK"
Case Is = 6
Feuille = "Jun"
LastColumn = "BI"
Case Is = 7
Feuille = "Jul"
LastColumn = "BK"
Case Is = 8
Feuille = "Aug"
LastColumn = "BK"
Case Is = 9
Feuille = "Sep"
LastColumn = "BI"
Case Is = 10
Feuille = "Oct"
LastColumn = "BK"
Case Is = 11
Feuille = "Nov"
LastColumn = "BI"
Case Is = 12
Feuille = "Dec"
LastColumn = "BK"
Case Else
Feuille = ""
End Select
'Activation du classeur et de la sheet active
Windows("Planning Transversal team.xlsm").Activate
Sheets(Feuille).Activate
'affectation de valeurs aux variables
Valeur_Cherchee = "*Mon_Texte*"
'Recherche dans la première colonne de la feuille active
Set PlageDeRecherche = ActiveSheet.Columns(1)
'Recherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
'Traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
'ici, traitement pour le cas où la valeur n'est pas trouvée
AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
Else
'ici, traitement pour le cas où la valeur est trouvée
AdresseTrouvee = Trouve.Address
End If
'Définition de la plage à copier et copie
Set PlageCopy = Range("$B$" & Trouve.Row & ":$" & LastColumn & "$" & Trouve.Row)
PlageCopy.Select
Selection.Copy
'Activation du classeur de destination
Windows("Planning Mgt.xlsx").Activate
Sheets(Feuille).Activate
Range("C13").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A2").Select
Next
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
Set PlageCopy = Nothing
'Retourne au Menu, sauve et ferme le classeur de destination
Windows("Planning Mgt.xlsx").Activate
Sheets("Menu").Select
Range("A3").Select
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
CODE END -----------------------------
- Messages
- 4'092
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Cette instruction n'existe pas. Ca serait plutôt :
Workbooks("Planning Transversal team.xlsm").Windows(1).Activate
Merci. Ca fonctionne très bien.