[RESOLU]Modifier message d'avertissement à l'enregistrement

hypo78

XLDnaute Impliqué
Bonjour,
J'ai une macro qui va chercher un fichier modèle pour "l'enregistrer sous" en fonction d'une date saisie.
Une fenêtre d'avertissement Excel s'ouvre en disant : "un fichier nommé XXX existe déjà à cet emplacement. Voulez vous le remplacer?"

Si l'utilisateur choisi oui : pas de problème
Si il choisit Non ou Annuler, le classeur modèle reste actif et du coup il peut travailler dessus.

Je souhaiterai que lorsque qu'il choisit Non ou annuler, le classeur modèle se ferme.

Ci après le code qui m'ouvre mon classeur modèle, mais je pense qu'il faut plutôt travailler sur le vba Workbook du classeur modèle non?

Code:
Sub Creation_classeur_nommé()

DateDeSaisie = InputBox("Saisir la date de la garde que vous voulez préparer sous la forme jj/mm/aaaa")
 If DateDeSaisie = "" Then Exit Sub
    On Error Resume Next
Workbooks.Open Filename:="C:\Users\Thierry\Desktop\Versaillesbis\modèle_VRS.xls"
ActiveWorkbook.Sheets("01").Select
Range("AK1") = Format(DateDeSaisie, "mm/dd/yyyy")
If Dir(ActiveWorkbook.Path & "\" & Format(DateDeSaisie, "yyyy"), vbDirectory) = "" Then MkDir ActiveWorkbook.Path & "\" & Format(DateDeSaisie, "yyyy")
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & Format(DateDeSaisie, "yyyy") & "\" & Format(DateDeSaisie, "mmmmyyyy") & "\" & Format(DateDeSaisie, "ddmmmmyyyy") & ".xls", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub

Merci d'avance
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Modifier message d'avertissement à l'enregistrement

Bonjour hypo78,
Si l'utilisateur choisi oui : pas de problème
Si il choisit Non ou Annuler, le classeur modèle reste actif et du coup il peut travailler dessus.
Je souhaiterai que lorsque qu'il choisit Non ou annuler, le classeur modèle se ferme.
C'est pour ce problème que je gérai l'erreur dans ce fil :rolleyes: , fil au quel tu n'a pas donné suite....
Cordialement
 

hypo78

XLDnaute Impliqué
Re : Modifier message d'avertissement à l'enregistrement

Bonjour,
J'étais persuadé d'avoir répondu, désolé.
J'utilise ta macro pour créer des classeurs nommés mais vierge de manière à pouvoir entrer à l'avance des formules avec liaisons.
Donc un grand merci çà fonctionne.
C'est justement parce que je prépare ces classeurs à l'avance que j'ai l'avertissement dont je parle ci dessus.
Soit, il faut supprimer cet avertissement, soit quand on répond Non ou Annuler fermer le classeur modèle.
J'ai bien pensé à ton code justement mais je ne vois pas trop comment l'adapter à l'autre macro.
Encore merci en tout cas pour l'autre macro de l'autre fil.
 

Efgé

XLDnaute Barbatruc
Re : Modifier message d'avertissement à l'enregistrement

Re
Alors il faut commencer par :
Application.DisplayAlerts = False
inclure fans ton code:
If Dir(sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls") = "" Then
.SaveAs sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls"
Else
rep = MsgBox("Le classeur " & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls" & " existe déja" _
& vbLf & "Voulez vous le remplacer ?", _
vbYesNo + vbExclamation + vbDefaultButton1, "Avertissement")
If rep = vbNo Then
.Close False
Exit Sub
Else
.SaveAs sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls"
End If
Et finir par :
Application.DisplayAlerts = True

Cordialement
 

hypo78

XLDnaute Impliqué
Re : Modifier message d'avertissement à l'enregistrement

Bonjour,
après avoir réfléchi à mon problème, je me rend compte que si l'utilisateur utilise l'InputBox à ce moment c'est qu'il va forcement écraser le fichier déjà existant (car pour simplement le consulter il a un autre accès).
Donc, je pense que l'on peut simplifier le code à : enregistrer le modèle sous.
Mais là aussi je bloque.
Code:
Sub Creation_classeur_nommé()

Application.DisplayAlerts = False

DateDeSaisie = InputBox("Saisir la date de la garde que vous voulez préparer sous la forme jj/mm/aaaa")
    On Error Resume Next
Workbooks.Open Filename:="C:\Users\Thierry\Desktop\Versaillesbis\modèle_VRS.xls"
ActiveWorkbook.Sheets("01").Select
Range("AK1") = Format(DateDeSaisie, "mm/dd/yyyy")

ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & Format(DateDeSaisie, "yyyy") & "\" & Format(DateDeSaisie, "mmmmyyyy") & "\" & Format(DateDeSaisie, "ddmmmmyyyy") & ".xls", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Application.DisplayAlerts = True

End Sub

J'ai le message méthode ou propriété non géré par cet objet au niveau de la ligne ActiveWorbook.SaveAs Filename

Merci d'avance
 

Efgé

XLDnaute Barbatruc
Re : Modifier message d'avertissement à l'enregistrement

Bonjour hypo78, Pierrot, le fil, le forum,
Pour ouvrir ton modèle tu utilise:
VB:
Workbooks.Open Filename:="C:\Users\Thierry\Desktop\Versaillesbis\modèle_VRS.xls"
Pour enregistrer ton nouveau classeur le chemin est :
VB:
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & Format(DateDeSaisie, "yyyy") & "\" & Format(DateDeSaisie, "mmmmyyyy") & "\" & Format(DateDeSaisie, "ddmmmmyyyy") & ".xls"
Donc pour enregistrer ton nouveau classeur le chemin complet est
VB:
"C:\Users\Thierry\Desktop\Versaillesbis\"& Format(DateDeSaisie, "yyyy") & "\" & Format(DateDeSaisie, "mmmmyyyy") & "\" & Format(DateDeSaisie, "ddmmmmyyyy") & ".xls"

Es tu sûr que ce chemin d'accès existe ?
Si non essai
VB:
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & Format(DateDeSaisie, "yyyy") & "\" & Format(DateDeSaisie, "mmmmyyyy") & "\" & Format(DateDeSaisie, "ddmmmmyyyy") & ".xls",
Cordialement
 
Dernière édition:

hypo78

XLDnaute Impliqué
Re : Modifier message d'avertissement à l'enregistrement

Bonjour Efgé,
comme je tourne en rond pour arriver à adapter mon code, j'ai repris celui que tu m'avais proposé.
J'ai juste une erreur à la fin sur la ligne .close True
Une petite idée?
Code:
Sub Creation_classeur_nommé()
Application.ScreenUpdating = False: Application.DisplayAlerts = False
DateDeSaisie = InputBox("Saisir la date de la garde que vous voulez préparer sous la forme jj/mm/aaaa")
    On Error Resume Next
Const modele As String = _
"C:\Users\Thierry\Desktop\Versaillesbis\modèle_VRS.xls"
Liste = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
Workbooks.Open modele
With ActiveWorkbook
    .Sheets("01").Range("AK1") = DateDeSaisie
    sDossier1 = .Path & "\" & Year(DateDeSaisie)
    If Dir(sDossier1, vbDirectory) = "" Then MkDir sDossier1
    sDossier2 = sDossier1 & "\" & Liste(Month(DateDeSaisie)) & Year(DateDeSaisie)
    If Dir(sDossier2, vbDirectory) = "" Then MkDir sDossier2
    If Dir(sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls") = "" Then
     ActiveWorbook.SaveAs sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls"
    Else
        rep = MsgBox("Le classeur " & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls" & " existe déja" _
            & vbLf & "Voulez vous le remplacer ?", _
            vbYesNo + vbExclamation + vbDefaultButton1, "Avertissement")
        If rep = vbNo Then
            .Close False
            Exit Sub
        Else
            ActiveWorbook.SaveAs sDossier2 & "\" & Format(DateDeSaisie, "dd_mmmm_yyyy") & ".xls"
        End If
    End If
    .Close True
End With
Application.ScreenUpdating = True: Application.DisplayAlerts = True
End Sub
Cordialement
 

hypo78

XLDnaute Impliqué
Re : Modifier message d'avertissement à l'enregistrement

Re,
pour différentes raisons je ne voulais pas utiliser le .xlt, mais bon j'ai quand même essayé avec la fin .Close False et là je n'ai même plus de classeur qui s'ouvre...
C'est quoi le problème dans le code précédent avec .close true ??
Merci
 

Efgé

XLDnaute Barbatruc
Re : Modifier message d'avertissement à l'enregistrement

Re
Il ne me semble pas possible qu'une fermeture de fichier empêche son ouverture dans le code que je t'ai proposé... ... Je dois avouer que je désespère un peu...
Peut être il y a t-il confusion entre "ActiveWorkBook" ( le classeur actif, donc le modèle ouvert et tant qu'il est ouvert) et "ThisWorkBook" (le classeur qui contient la macro)...
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 122
Membres
103 479
dernier inscrit
Compta