Plus de boite de dialogue lors d'enregistrement vba

matthieu2701

XLDnaute Occasionnel
Bonjour,

J'ai créé une macro qui s'appelle Enregistrer_Classeur. Cette macro permet d'enregistrer le fichier excel dans un dossier définit du réseau.

J'ai ajouté à chaque macro, la fonction Call Enregistrer_Classeur. Comme ca à chaque fois que l'on fais une action, le fichier s'enregistre.

J'aurais besoin de vous sur deux points :

- J'aimerais, aussi, qu'il s'enregistre à la fermeture du fichier.

- Comment éviter l'apparition de la boite de dialogue suivant : "Le fichier existe déjà, voulez vous le remplacer ?".

Merci de votre aide.
 

Pièces jointes

  • Calcul.xls
    457.5 KB · Affichages: 59
  • Calcul.xls
    457.5 KB · Affichages: 58
  • Calcul.xls
    457.5 KB · Affichages: 58
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Plus de boite de dialogue lors d'enregistrement vba

Bonjour matthieu

codes:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Enregistrer_Classeur
End Sub





Code:
Sub Enregistrer_Classeur()
Application.DisplayAlerts = False
........
 

pierrejean

XLDnaute Barbatruc
Re : Plus de boite de dialogue lors d'enregistrement vba

Re

A tester:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Enregistrer_Classeur
ThisWorkbook.Close SaveChanges:=True
End Sub

Code:
Sub Enregistrer_Classeur()
Application.DisplayAlerts = False
.....
Application.DisplayAlerts =true
End sub

NB: Savechange a mettre à False si tu ne veux pas enregistrer les modifications
Ne pas oublier de remettre DispayAlerts à true en fin de macro
 

matthieu2701

XLDnaute Occasionnel
Re : Plus de boite de dialogue lors d'enregistrement vba

Je n'y arrive pas. Qu'est ce qui ne va pas ?

Voici mon code

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Application.DisplayAlerts = False 

With Sheets("Echéancier") 
    Nom = .Range("B2") 
    PCE = .Range("G6") 
End With 

'NNI des agents 
'Marignane 
Matthieu = "b90570" 
Yacine = "J03455" 
Sophie = "d41254" 
Maxence = "J33056" 
Remi = "f02756" 
Camille = "c60772" 
Cindy = "cm0d924n" 
Sarah = "ss0c0can" 
Priscilla = "d91472" 
Zoe = "F90572" 
Elodie = "d04673" 
Virginie = "VR023B1N" 
Daniel = "h86540" 
Nathalie = "b22929" 
Alexandre = "i62338" 
Stephane = "a06745" 
Florent = "C65470" 

'Nimes 
Fabienne = "f74844" 
Claudia = "j88653" 
Magali = "J37249" 

'Recherche de l'utilisateur qui a ouvert la session 
utilisateur = Environ("username") 
Select Case utilisateur 

Case Matthieu, Yacine, Sophie, Maxence, Remi, Camille, Cindy, Sarah, Priscilla, Zoe, Elodie, Virginie, Daniel, Nathalie, Alexandre, Stephane, Florent 
    chemin = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours" & "\" & Nom & " " & PCE 
    fichier = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours" & "\" & Nom & " " & PCE & "\" & Nom & " " & "Gaz-Perd.xlsm" 
Case Fabienne, Claudia, Magali 
   chemin = "Q:\AAG\DOSSIERS NUMERIQUES PDD" & "\" & Nom & " " & PCE 
   fichier = "Q:\AAG\DOSSIERS NUMERIQUES PDD" & "\" & Nom & " " & PCE & "\" & Nom & " " & "Gaz-Perd.xlsm" 

End Select 

If Nom = "" Or PCE = "" Then 
'MsgBox "Pour enregistrer le classeur d'un client, veuillez remplir les champs Nom Prénom et PCE et créer le dossier client.", vbInformation, "Information" 
Exit Sub 
End If 

If Dir(chemin, vbDirectory) = "" Then 
MsgBox "Le dossier numérique de " & Nom & " " & PCE & " n'a pas été créé. Veuillez le créer puis recommencer.", vbCritical, "Attention" 
Exit Sub 
End If 

 If Dir(fichier, vbNormal) <> "" Then 
      Reponse = MsgBox("Le classeur de " & Nom & " existe déjà." & vbLf & vbLf & _ 
                       "Confirmez-vous son remplacement ?", vbYesNo, "Attention") 
      If Reponse = vbNo Then End 
   End If 
    ChDir chemin 
    ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False 
Sheets("Echéancier").Range("K4").Value = Format(Now, "dddd dd mmmm yyyy / h:mm") 

ThisWorkbook.Close Savechanges:=True 
End sub
 

matthieu2701

XLDnaute Occasionnel
Re : Plus de boite de dialogue lors d'enregistrement vba

@pierrejean Voici mon fichier complet
 

Pièces jointes

  • Gaz-Perd v1.8 - Copie.xlsm
    205.7 KB · Affichages: 35
  • Gaz-Perd v1.8 - Copie.xlsm
    205.7 KB · Affichages: 43
  • Gaz-Perd v1.8 - Copie.xlsm
    205.7 KB · Affichages: 37

matthieu2701

XLDnaute Occasionnel
Re : Plus de boite de dialogue lors d'enregistrement vba


La date ne s'actualise pas quand je ferme le classeur. Les données que je rentre s'enregistre mais la date et l'heure non.
Capture.JPG

Lorsque je ferme le classeur, j'ai deux fois la confirmation pour remplacer le classeur déjà éxistant.
Capture2.JPG

De plus, si je fais aucune modification sur le fichier, il me demande quand même si je veux l'enregistrer. Est-il possible de supprimer cette fenêtre ?

Merci de ton aide.
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    12.2 KB · Affichages: 61
  • Capture.JPG
    Capture.JPG
    12.2 KB · Affichages: 69
  • Capture2.JPG
    Capture2.JPG
    17.2 KB · Affichages: 67
  • Capture2.JPG
    Capture2.JPG
    17.2 KB · Affichages: 55
Dernière édition:

matthieu2701

XLDnaute Occasionnel
Re : Plus de boite de dialogue lors d'enregistrement vba


Ma date et mon heure se mettent à jour.

Par contre, j'ai toujours le message qui me demande d'enregistrer alors que j'ai rien modifier et toujours la double confirmation à la fermuture du fichier.
Capture2.JPG

Je clique une fois sur "Oui" ou "Non" et la fenêtre s'affcihe à nouveau. Je re-clique et c'est bon.

Comment faire pour que cela s'affiche qu'une seule fois ?
 

Pièces jointes

  • Capture2.JPG
    Capture2.JPG
    17.2 KB · Affichages: 59
  • Capture2.JPG
    Capture2.JPG
    17.2 KB · Affichages: 55
Dernière édition:

matthieu2701

XLDnaute Occasionnel
Re : Plus de boite de dialogue lors d'enregistrement vba

JE comprends pas pourquoi je dois confirmer, deux fois, l'enregistrement ou le nom enregistrement du fichier lorsque je le ferme.

Je souhaite qu'une seule confirmation.

Capture2.JPG

Quelqu'un peut m'aider svp. ;)

Voici mon code :

Code:
'Option Explicit
Private Sub Workbook_Open()
Feuil1.ScrollArea = "A1:N32"
Feuil5.ScrollArea = "A1:H15"
Feuil6.ScrollArea = "A1:Q29"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

With Sheets("Echéancier")
    Nom = .Range("B2")
    PCE = .Range("G6")
End With

'NNI des agents
'Marignane
Matthieu = "b90570"
Yacine = "J03455"
Sophie = "d41254"
Maxence = "J33056"
Remi = "f02756"
Camille = "c60772"
Cindy = "cm0d924n"
Sarah = "ss0c0can"
Priscilla = "d91472"
Zoe = "F90572"
Elodie = "d04673"
Virginie = "VR023B1N"
Daniel = "h86540"
Nathalie = "b22929"
Alexandre = "i62338"
Stephane = "a06745"
Florent = "C65470"

'Nimes
Fabienne = "f74844"
Claudia = "j88653"
Magali = "J37249"

'Recherche de l'utilisateur qui a ouvert la session
utilisateur = Environ("username")
Select Case utilisateur

Case Matthieu, Yacine, Sophie, Maxence, Remi, Camille, Cindy, Sarah, Priscilla, Zoe, Elodie, Virginie, Daniel, Nathalie, Alexandre, Stephane, Florent
    chemin = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours" & "\" & Nom & " " & PCE
    fichier = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours" & "\" & Nom & " " & PCE & "\" & Nom & " " & "Gaz-Perd.xlsm"
Case Fabienne, Claudia, Magali
   chemin = "Q:\AAG\DOSSIERS NUMERIQUES PDD" & "\" & Nom & " " & PCE
   fichier = "Q:\AAG\DOSSIERS NUMERIQUES PDD" & "\" & Nom & " " & PCE & "\" & Nom & " " & "Gaz-Perd.xlsm"

End Select

If Nom = "" Or PCE = "" Then
'MsgBox "Pour enregistrer le classeur d'un client, veuillez remplir les champs Nom Prénom et PCE et créer le dossier client.", vbInformation, "Information"
Exit Sub
End If

If Dir(chemin, vbDirectory) = "" Then
MsgBox "Le dossier numérique de " & Nom & " " & PCE & " n'a pas été créé. Veuillez le créer puis recommencer.", vbCritical, "Attention"
Exit Sub
End If

 If Dir(fichier, vbNormal) <> "" Then
      Reponse = MsgBox("Le classeur de " & Nom & " existe déjà." & vbLf & vbLf & _
                       "Confirmez-vous son remplacement ?", vbYesNoCancel, "Attention")
      If Reponse = vbNo Then
       ThisWorkbook.Close Savechanges:=False
       Exit Sub
       End If
       If Reponse = vbCancel Then
       Cancel = True
       Else
       Sheets("Echéancier").Range("K4").Value = Format(Now, "dddd dd mmmm yyyy / h:mm")
       ThisWorkbook.Close Savechanges:=True
       Exit Sub
      End If
 End If
 
    'ChDir chemin
    'ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
'Sheets("Echéancier").Range("K4").Value = Format(Now, "dddd dd mmmm yyyy / h:mm")
End Sub
 

Pièces jointes

  • Capture2.JPG
    Capture2.JPG
    17.2 KB · Affichages: 60
  • Capture2.JPG
    Capture2.JPG
    17.2 KB · Affichages: 60

matthieu2701

XLDnaute Occasionnel
Re : Plus de boite de dialogue lors d'enregistrement vba

Re

Peut-être parce que tu as exactement la même chose dans la macro destinée à l'enregistrement !!!!

Dans la macro, d'enregistrement à la fermeture du fichier, je ne fait pourtant pas appel à la macro Enregistrer_classeur".

Voici ma macro d'enregistrement

Code:
Sub Enregistrer_Classeur()

Application.DisplayAlerts = False

With Sheets("Echéancier")
    Nom = .Range("B2")
    PCE = .Range("G6")
End With

'NNI des agents
'Marignane
Matthieu = "b90570"
Yacine = "J03455"
Sophie = "d41254"
Maxence = "J33056"
Remi = "f02756"
Camille = "c60772"
Cindy = "cm0d924n"
Sarah = "ss0c0can"
Priscilla = "d91472"
Zoe = "F90572"
Elodie = "d04673"
Virginie = "VR023B1N"
Daniel = "h86540"
Nathalie = "b22929"
Alexandre = "i62338"
Stephane = "a06745"
Florent = "C65470"

'Nimes
Fabienne = "f74844"
Claudia = "j88653"
Magali = "J37249"

'Recherche de l'utilisateur qui a ouvert la session
utilisateur = Environ("username")
Select Case utilisateur

Case Matthieu, Yacine, Sophie, Maxence, Remi, Camille, Cindy, Sarah, Priscilla, Zoe, Elodie, Virginie, Daniel, Nathalie, Alexandre, Stephane, Florent
    chemin = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours" & "\" & Nom & " " & PCE
    fichier = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours" & "\" & Nom & " " & PCE & "\" & Nom & " " & "Gaz-Perd.xlsm"
Case Fabienne, Claudia, Magali
   chemin = "Q:\AAG\DOSSIERS NUMERIQUES PDD" & "\" & Nom & " " & PCE
   fichier = "Q:\AAG\DOSSIERS NUMERIQUES PDD" & "\" & Nom & " " & PCE & "\" & Nom & " " & "Gaz-Perd.xlsm"

End Select

If Nom = "" Or PCE = "" Then
'MsgBox "Pour enregistrer le classeur d'un client, veuillez remplir les champs Nom Prénom et PCE et créer le dossier client.", vbInformation, "Information"
Exit Sub
End If

If Dir(chemin, vbDirectory) = "" Then
MsgBox "Le dossier numérique de " & Nom & " " & PCE & " n'a pas été créé. Veuillez le créer puis recommencer.", vbCritical, "Attention"
Exit Sub
End If

 'If Dir(fichier, vbNormal) <> "" Then
      'Reponse = MsgBox("Le classeur de " & Nom & " existe déjà." & vbLf & vbLf & _
                       "Confirmez-vous son remplacement ?", vbYesNo, "Attention")
      'If Reponse = vbNo Then
       'ThisWorkbook.Close Savechanges:=False
       'Exit Sub
      'Else
       'ThisWorkbook.Close Savechanges:=True
       'Exit Sub
      'End If
 'End If

    ChDir chemin
    ActiveWorkbook.SaveAs Filename:=fichier, FileFormat:=xlOpenXMLWorkbookMacroEnabled, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Sheets("Echéancier").Range("K4").Value = Format(Now, "dddd dd mmmm yyyy / h:mm")
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 183
Messages
2 086 005
Membres
103 087
dernier inscrit
sarah.caneri