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 :
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.
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
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.
Partager