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.