IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ouverture menu enregistrer sous [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 28
    Par défaut Ouverture menu enregistrer sous
    Salut a tous

    j'ai une macro qui empêche de sauvegarder un fichier si celui correspond au mon chemin cible, le but était d’éviter d'utiliser la lecture seule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     If ThisWorkbook.FullName = "chemin cible" Then Cancel = True
    End Sub
    hors avec ceci j’obtiens parfaitement ce que je veux c'est à dire qu'il est impossible de sauvegarder des modifications sur se fichier, je voudrais juste ajouter lorsque que l'on quitte le fichier une ouverture du menu enregistrer sous afin que des utilisateurs maladroits qui ont fait des modifications sur le fichier sans faire attention puisse tout de meme sauver leurs travail en faisant une copie.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    comme ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_Deactivate()
    Application.Dialogs(xlDialogSaveAs).Show
     
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 28
    Par défaut
    merci pour ton code, ca marche tres bien sur un fichier test sans aucune autre macro.

    Cependant placé dans le code avec le fichier sur lequel il est impossible de faire une sauvegarde ça ne marche pas. La boite de dialogue ne s'ouvre pas

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,

    rajoute une variable autoriseEnregistrement mis à true lors de ton Desactivate...
    et conditionne ensuite le "Cancel" avec cette variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Dim AutoriseEnregistrement as boolean 
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     If ThisWorkbook.FullName = "chemin cible" Then Cancel = Not AutoriseEnregistrement 
     
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 28
    Par défaut
    Ce code me permet de créer une sauvegarde via enregistrer sous mais je n'arrive pas a modifier le chemin d'enregistrement pour qu'il propose mes documents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Private BeforeClosing As Boolean
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        If Not BeforeClosing Then
     If ThisWorkbook.FullName = "chemin cible.xlsm" Then Cancel = True
        End If
        BeforeClosing = False
    End Sub
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        BeforeClosing = True
        ChDrive ("C")
    ChDir ("\chemin d'enregistrement")
        Application.Dialogs(xlDialogSaveAs).Show
    End Sub
    Citation Envoyé par bbil Voir le message
    Bonsoir,

    rajoute une variable autoriseEnregistrement mis à true lors de ton Desactivate...
    et conditionne ensuite le "Cancel" avec cette variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Dim AutoriseEnregistrement as boolean 
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     If ThisWorkbook.FullName = "chemin cible" Then Cancel = Not AutoriseEnregistrement 
     
    End Sub
    c'est à dire? je suis pas un pro de vba donc

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Bonjour,

    et comme ceci?

    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
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     If ThisWorkbook.FullName = "C:\Documents and Settings\---------------\Mes documents\Classeur1.xlsm" Then
     
     MsgBox "Vous ne pouvez pas enregistrer sur le fichier de base: " & ThisWorkbook.Name
     
    End If
    End Sub
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        If ThisWorkbook.FullName = "C:\Documents and Settings\---------------\Mes documents\Classeur1.xlsm" Then
        Application.DisplayAlerts = False
        MsgBox "blabla.." 'facultatif
        Application.Dialogs(xlDialogSaveAs).Show
        Application.Quit
        End If
    End Sub
    Après réflexion :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Option Explicit
     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     
      If IndicateurFermeture = False Then
     
        IndicateurFermeture = True
     
    Dim Msg, style, Title, Help, Ctxt, Response, MyString, Mystre
        Msg = "Vous ne pouvez pas enregistrer sur le fichier de base!" & vbCrLf & vbCrLf & _
        "Par contre vous pouvez l'enregitrer dans le dossier et avec le nom de votre choix " & vbCrLf & _
        "Le souhaitez-vous ?" ' Définit le message.
        style = vbYesNo + vbCritical + vbDefaultButton3 ' Définit les boutons.
        Title = "Sélectionner le bouton correspondant "  ' Définit le titre.
        Help = "DEMO.HLP"   ' Définit le fichier d’aide.
        Ctxt = 1000 ' Définit le contexte de la rubrique.
              ' Affiche le message.
        Response = MsgBox(Msg, style, Title, Help, Ctxt)
     
     
        If Response = vbYes Then
        Application.DisplayAlerts = False
        Application.Dialogs(xlDialogSaveAs).Show
        End If
     If ThisWorkbook.FullName = "C:\Documents and Settings\---------------\Mes documents\Classeur1.xlsm" Then IndicateurFermeture = False
     If ThisWorkbook.FullName <> "C:\Documents and Settings\---------------\Mes documents\Classeur1.xlsm" Then IndicateurFermeture = True
    End If
    End Sub
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        If ThisWorkbook.FullName = "C:\Documents and Settings\---------------\Mes documents\Classeur1.xlsm" Then
        'Application.DisplayAlerts = False
        Cancel = True
        IndicateurFermeture = True
        Application.Dialogs(xlDialogSaveAs).Show
        Application.Quit
        End If
    End Sub
     
    Private Sub Workbook_Open()
     If ThisWorkbook.FullName = "C:\Documents and Settings\---------------\Mes documents\Classeur1.xlsm" Then IndicateurFermeture = False
     If ThisWorkbook.FullName <> "C:\Documents and Settings\---------------\Mes documents\Classeur1.xlsm" Then IndicateurFermeture = True
     
    End Sub
    et dans un module du colle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public IndicateurFermeture As Boolean

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier menu Enregistrer sous
    Par Vishnou dans le forum Windows 7
    Réponses: 1
    Dernier message: 19/11/2013, 19h50
  2. Insérer un menu enregistrer sous
    Par Marie_7 dans le forum Interfaces Graphiques
    Réponses: 7
    Dernier message: 24/03/2012, 22h53
  3. Ouverture de la fenetre enregistrer sous
    Par CélineM dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/10/2009, 18h24
  4. ajout d'un ouverture de classeur apres un code d'enregistrer-sous ?
    Par lebeniste dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 05/04/2008, 16h10
  5. Word: désactiver le menu enregistrer sous
    Par p'tite Sandrine dans le forum VBA Word
    Réponses: 21
    Dernier message: 08/08/2007, 09h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo