Bonjour a tous,
Ce petit bout de code me permet de controler que l'utilisateur utilise la bonne version d'un programme.
Voici le code pour se mettre dans le bain :

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
44
45
46
47
48
49
50
51
52
Sub verif()
'*** Déclaration des variables
Dim Version As Double, Dossier As String, Fichier As String
Dim Mauvaise As String, PasTrouve As String, Trouve As Boolean, y As Integer
Dim Wbk As Workbook
'***
 
 
Version = 1 '<-- A changer a chaque modification meme mineur du programme
 
'With ThisWorkbook '<-- Récupération du chemin et du nom du programme
    'Dossier = .Path
    'Fichier = .Name
'End With
 
Dossier = "J:\P09-Gestion des systemes d'information\BAO" '<-- Dossier fixé a la racine de la BAO
Fichier = "XXX" '<-- Nom du programme initial
 
Application.StatusBar = "Vérification de la version en cours"
Mauvaise = "Votre version n'est plus d'actualité ! Veuillez recopier la dernière version du programme qui se trouve dans le répertoire suivant : " & Dossier
PasTrouve = "Programme non réferencé ! Veuillez en informer le service informatique."
Trouve = False
y = 3
 
'Masquer l'ouverture du classeur "Liste PG Info"
Application.ScreenUpdating = False
 
'Ouverture du classeur "Liste PG Info" et affectation de ce classeur à la variable Wbk
Set Wbk = Workbooks.Open("J:\P09-Gestion des systemes d'information\BAO\Liste PG Info.xls")
 
With Wbk.Sheets(1)
    Do While .Cells(y, 1) <> ""
        If .Cells(y, 1).Value = Fichier Then
            If .Cells(y, 2) = Version Then
                Trouve = True
                Exit Do
            ElseIf .Cells(y, 2) > Version Then
                MsgBox Mauvaise, vbCritical
                Application.Quit
            End If
        End If
        y = y + 1
    Loop
    If Trouve = False Then MsgBox PasTrouve, vbExclamation
    Wbk.Close False
End With
 
Set Wbk = Nothing '<-- libération de la mémoire
Application.StatusBar = False
Application.ScreenUpdating = True '<-- réactivation de l'écran
 
End Sub
Maintenant place au problème lorsque je lance le programme, en sachant que la version est inférieure a la version actuelle, le message enregistré dans la variable mauvaise devrait alors s'afficher en vb critical et excel devrait se fermer, sauf que le c'est pas du tout ce qui se passe... le message mauvaise apparait puis le message PasTrouvé puis l'input box de la suite du programme, d'ailleurs peu importe ce qu'on l'on renseigne on a une erreur et enfin en fesant soit fin ou débogage a la suite de cette erreur le programme se ferme...
Par contre quand on lance le programme en pas a pas, il fonctionne parfaitement bien comme si le programme allait trop vite et zappait le application.quit pour l’exécuter plus tard.

L'un de vous aurait-il une solution ? :/
Merci d'avance