Bonsoir le Forum, Bonsoir Pierre,
Voilà qui est constructif et dont je te remercie.
J'ai suivi ta démarche. (ou du moins essayé de la suivre)
Si je place cette déclaration dans l'évènement Open, l'évènement n'est pas effectif.
Après recherches, j'ai tenté l'instanciation d'un module de classe.
Dans ce cas, le processus est bien effectif
(Dans cette phase de tests, et d'apprentissage, je me suis contenté d'une cellule test
Je déploierai ensuite la gestion de tous les applicatifs à partir d'un tableau structuré)
Dans le classeur xlam
1 - Module de classe Lappli_Excel
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
| Option Explicit
Public WithEvents App As Excel.Application
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
With Wb
If InStr(.Name, "lemachin") > 0 Then
If Sht_Collaborateurs.Range("test_navig").Value = "KO" Then
MsgBox _
Prompt:="Veuillez utiliser le navigateur.", _
Buttons:=vbCritical, _
Title:="Utilisation erronée"
Application.EnableEvents = False
.Close Savechanges:=False
Application.EnableEvents = True
End If
End If
End With
End Sub
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Sht_Collaborateurs.Range("test_navig").Value = "KO"
Call affichage_normal
End Sub |
2 - Evènement Open
1 2 3 4 5 6 7
| Option Explicit
Dim myexcel As New Lappli_Excel
Private Sub Workbook_Open()
Set myexcel.App = Excel.Application
End Sub |
Et dans le navigateur
1 2 3 4 5 6
| Private Sub Btn_Lemachin_Click()
'nom_long_xlam = fonction
Workbooks(nom_long_xlam).Worksheets("Collaborateurs").Range("test_navig").Value = "OK"
'procédure argumentée
Call Ouvrir_logiciel("lerép\lemachin_V13.xlsm")
End Sub |
Si le fichier est ouvert par le navigateur: OK
Dans le cas contraire, KO avec message "Utiliser le navigateur" et fermeture du fichier.
J'ai procédé à plusieurs test qui se sont révélés, à priori, positifs.
Maintenant, en ce qui concerne la mise à jour du fichier xlam.
(En effet, les versions d'applicatifs peuvent évoluer, les collaborateurs peuvent partir, arriver, changer de fonction)
Voici le processus que j'envisagerais, peut-être à partir du navigateur
- Fermeture du fichier xlam
- Destruction
- Copie
depuis une ressource commune à tous (J'en ai trouvée une)
dans le répertoire
XLSTART = "C:\Users\" & Environ("Username") & "\AppData\Roaming\Microsoft\Excel\XLSTART
Au préalable, j'aurais enregistré mon utilitaire de base .xlsm en .xlam sur cette ressource commune
(propriété IsAddin = True et FileFormat:=xlOpenXMLAddIn)
C'est ce que je pense et te soumets.
Partager