Bonjour à tous
Je suis en rade depuis quelques temps pour sauvegarder un classeur Excel avec une instruction VBA enregistrée dans "This WorkBook" !
Je désire sauvegarder mon classeur avec la valeur de deux cellules ainsi que la date du jour (voir code plus bas).
Avant que l'enregistrement se fasse, j'ai créé une instruction qui teste si les cellules sont remplies par l'utilisateur.
L'instruction est la suivante :
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 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Sheets("Remplacement").Range("B2") & (D5) = "" Then MsgBox "Saisir CASS ou Unité", vbExclamation, " - ERREUR DE SAISIE - " End If If Sheets("Remplacement").Range("D3") = "" Then MsgBox "Saisir : Nom et Prénom ", vbExclamation, " - ERREUR DE SAISIE - " End If If Sheets("Remplacement").Range("C5") = "" Then MsgBox "Saisir : Taux d'activité ", vbExclamation, " - ERREUR DE SAISIE - " End If If Sheets("Remplacement").Range("G6") = "" Then MsgBox "Saisir : Bureau ", vbExclamation, " - ERREUR DE SAISIE - " End If If Sheets("Remplacement").Range("B9") = "" Then MsgBox "Saisir : Motif ", vbExclamation, " - ERREUR DE SAISIE - " End If If Sheets("Remplacement").Range("B19") = "" Then MsgBox "Saisir : Remplaçant(e) ", vbExclamation, " - ERREUR DE SAISIE - " End If If Sheets("Remplacement").Range("C20") = "" Then MsgBox "Saisir : Mission Début ", vbExclamation, " - ERREUR DE SAISIE - " End If If Sheets("Remplacement").Range("G20") = "" Then MsgBox "Saisir : Mission Fin ", vbExclamation, " - ERREUR DE SAISIE - " End If If Sheets("Remplacement").Range("D21") = "" Then MsgBox "Saisir : Responsable d'Unité", vbExclamation, " - ERREUR DE SAISIE - " End If If Sheets("Remplacement").Range("I21") = "" Then MsgBox "Saisir : Date Demande ", vbExclamation, " - ERREUR DE SAISIE - " Cancel = True End If End Sub
Ce test fonctionne sans aucun problème mais voilà lorsque que je veux enregistrer le fichier Excel l'instruction suivante (mon problème) n'est pas prise en compte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub SaveChoisir(ByVal SaveAsUI As Boolean, Cancel As Boolean) ThisWorkbook.SaveAs Sheets("Remplacement").Range("B2") & Format(Date, "yy\-mm\-dd").Value End Sub
J'ai beau la mettre comme instruction séparée ou incluse dans le teste de validation après un "Else" compris entre "Cancel = True" et "End If"
J'ai fait de nombreuses recherches sur les divers forum et autres sites "spécialisés" dans Excel mais je n'ai rien trouvé d'efficace.
Les solutions trouvées approchaient celles que je mentionne mais sont soit pas prises en compte (comme la mienne) soit "plante" Excel au moment ou je procède à l'enregistrement.
Merci de votre aide.
Merci également d'être précis dans vos réponse car je débute en VBA.
Partager