Bonjour.

Contexte :
Un fichier Classif et un fichier Histo (dans un sous-répertoire Sauvegarde qui se trouve dans le même répertoire que Classif).
Dans le fichier Classif un module qui crée un menu dans la barre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
35
 
 
...
 Call VerifHisto.EtatHisto
    oSh = "Histo.xls"
    i = VerifClasseur(ThisWorkbook.Path & "\Sauvegardes\" & oSh)
... 
' 3..... Histo
    Set cbSubMenu3 = cbMenu.Controls.Add(msoControlPopup, 1, , , True)
    With cbSubMenu3
        .Caption = "&Histo"
        .Tag = "Histo"
        .BeginGroup = True
    End With
 
    ' 3.1.....Ajouter "Ouvrir" au sous-menu Histo
    With cbSubMenu3.Controls.Add(msoControlButton, 1, , , True)
        .Caption = "&Ouvrir l'historique"
        .OnAction = ThisWorkbook.Name & "!AffHisto"
        .Style = msoButtonIconAndCaption
        .FaceId = 2937
        .State = msoButtonDown
        .Enabled = i = 0 
    End With
 
    ' 3.2.....Ajouter "Fermer" au sous-menu Histo
    With cbSubMenu3.Controls.Add(msoControlButton, 1, , , True)
        .Caption = "&Fermer l'historique"
        .OnAction = ThisWorkbook.Name & "!FermHisto"
        .Style = msoButtonIconAndCaption
        .FaceId = 4088
        .State = msoButtonDown
        .Enabled = i = 70 
    End With
...
et un module qui vérifie si Histo est ouvert :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
35
36
37
38
39
40
41
42
43
Option Explicit
Private Function VerifClasseur(Fichier As String) As Integer
'Sur Developpez.net
 
Dim x As Integer
 
On Error Resume Next
x = FreeFile()
 
Open Fichier For Input Lock Read As #x
Close x
 
VerifClasseur = Err.Number
 
On Error GoTo 0
End Function
 
Function WOuvert(sNom As String) As Boolean
    'Sur Developpez.net
 
    Dim Wkb As Workbook
 
    WOuvert = False
 
    For Each Wkb In Workbooks
        If Wkb.Name = sNom Then
            WOuvert = True
            Exit For
        End If
    Next Wkb
End Function
 
Sub EtatHisto()
    ' Déclarer les variables
    Dim oWb As Workbook
    Dim i As Integer
    Dim oSh As String
 
    oSh = "Histo.xls"
 
 i = VerifClasseur(ThisWorkbook.Path & "\Sauvegardes\" & oSh)
 
End Sub
Je ne parviens pas à mettre à jour mon menu (Activation de la commande Ouvrir ou fermer) selon l'état du fichier Histo.

Je vous remercie par avance pour les conseils que vous pourrez me donner.

Bien cordialement,

Edit : Il semble qu'en déclarant i en public en début de module, cela résout le problème.
Merci à ceux qui m'ont lu.