Bonjour à tous,

Je me présente, je m'appelle Alicia et travaille dans un hôpital en tant que contrôleur de gestion.
J'ai déjà eu quelques cours de VBA dans mes années de fac mais malheureusement malgré mon grand intérêt pour l'informatique, je n'ai jamais réussi à écrire VBA... A le lire, ça passe à peu près et encore !

Du coup là j'ai une base de données pour laquelle j'ai écrit un code :
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
 Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
 
Dim cell As Range
 
If Environ("username") = "TRANSPORTEUR" Then
 
For Each cell In Sheets("Suivi").Range("O3:O100")
 
If cell.Value = "assis" And IsEmpty(cell.Offset(0, 1).Value) Then
 
        MsgBox "Veuillez compléter toutes les demandes de transport"
        Cancel = True
        Exit Sub
    Else
        ThisWorkbook.Save
    End If
Next cell
End If
 
End Sub
La macro fait ce que je lui dis et me permet bien d'obtenir le résultat escompté, c'est à dire que si la personne désignée ne remplit pas la case qui lui correspond, elle ne peut pas fermer le classeur.
Cependant c'est beaucoup trop long, rien qu'en mettant "assis" en cellule O100, excel calcule pendant environ 15 secondes. A la fin de l'année mon fichier fait environ 2000 lignes donc vous imaginez.

Je ne vois pas comment réécrire mon code de manière à ce qu'il aille plus vite ?

Merci beaucoup d'avance pour votre aide.