Bonjour,
J'ai eu une désagréable surprise. J'explique la situation :
1) J'ai géré l'événement d'activation d'une des feuilles de mon classeur actif (la n°5) :
1 2 3 4 5 6 7 8 9 10 11 12 13
|
Private Sub Worksheet_Activate()
Dim Current_File As String
Current_File = ActiveWorkbook.Name
Dim file As String
file = ThisWorkbook.GetStatusFile()
If ThisWorkbook.IsFileOpen(file) Then
Else
Workbooks.Open (file)
Workbooks(Current_File).Activate
End If
End Sub |
Où IsFileOpen() retourne vrai si le fichier passé en paramètre est déjà ouvert.
Indépendamment ça marche très bien : ouverture du fichier s'il n'est pas déjà ouvert puis retour sur le classeur initial.
2) J'ai créé une macro qui insère une ligne dans plusieurs feuilles de mon classeur actif :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
Sub InsererLigne()
Dim NumRow As Long, LastNumRow As Long
Dim InitSheet As String
NumRow = ActiveCell.Row ' line number
InitSheet = ActiveSheet.Name ' Name of sheet were we are on beginning
'***** Feuille 1
Sheets("Feuil1").Activate
'On insère la ligne sélectionnée
Rows(NumRow).Select
Selection.Insert Shift:=xlDown
[...]
'***** Feuille 5
Sheets("Feuil5").Activate
'On insère la ligne sélectionnée
Rows(NumRow).Select
Selection.Copy
Selection.Insert Shift:=xlDown
'***** On revient sur la feuille initiale
Sheets(InitSheet).Activate
End Sub |
Le problème intervient quand on arrive sur la ligne
Sheets("Feuil5").Activate
et que le fichier n'est pas déjà ouvert :
ThisWorkbook.IsFileOpen(file) = false
On rentre alors dans le code de la méthode Worksheet_Activate placée plus haut et en fait, celle-ci s'arrête au niveau du Quelqu'un peut-il me dire pourquoi et comment contourner ce problème, s'il vous plaît? Je ne comprends pas ce qui bloque...
Merci d'avance.
Partager