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 :

Empêcher quitter la feuille avant de l’enregistrer [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2019
    Messages : 17
    Par défaut Empêcher quitter la feuille avant de l’enregistrer
    Bonjour toutes et tous

    Je suis nouveau avec vous & débutant VBA

    je souhaiterais rectifier le macro suivante pour Empêcher de quitter la feuille active si je n'ai pas encore enregistré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Worksheet_Deactivate()
    If ThisWorkbook.Saved = False Then
     
        MsgBox "Impossible de quitter avant d'enregistrer", vbCritical
        ThisWorkbook.Sheets(1).Activate
     End If
    End Sub

    TEST D9.xlsm

    merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Forcez l'enregistrement au moment de quitter.
    Avec l'aide de l'enregistreur de macro, enregistrez votre fichier à l'emplacement désiré, puis arrêtez l'enregistrement.
    Récupérez le texte de cette macro et collez-le dans le module "thisworkbook" dans Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Pièce jointe 514677

    Cdlt

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Je n'ouvre jamais un classeur tiers et n'ai donc pas ouvert ta pièce jointe.

    J'ignore pour quelle raison tu veux éviter de quitter la feuille active (et non nécessairement le classeur, ARTURO) si le classeur n'a pas été sauvegardé et ne peux donc que considérer que cette raison existe.

    Le code que tu nous montres fonctionne (il affiche le message), mais à la double condition :
    1) de figurer dans le module de code de la feuille considérée
    2) qu'il s'agisse d'un classeur figurant déjà sur ton disque dur (et non en cours de création)

    je l'aurais écrit ainsi (exemple pour la Feuille "Feuil1") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Deactivate()
      If Not ThisWorkbook.Saved Then Worksheets("Feuil1").Activate
    End Sub
    Maintenant :
    1) tu ne nous dis pas si tu te contentes de ce message ou si tu veux tout simplement en profiter pour sauvegarder (bien évidemment possible par VBA)

    2) si seule ta feuille sheets(1) doit subir ce traitement ou plusieurs autres feuilles également (et cela a une importance pour le choix du module de code à utiliser).

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2019
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2019
    Messages : 17
    Par défaut Empêcher de quitter la feuil avant de cliquer sur le bouton
    bonjour ;
    merci infiniment
    vous pouvez me faire une rectification sur le code
    je veux empêcher de quitter la feuil avant de cliquer sur le bouton
    Avec un message d'alerte
    merci

  5. #5
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour,
    le code ci-dessous, vous permet lorsque vous quittez la feuille1 pour une autre de vérifier l'enregistrement du dossier et vous propose si celui ci n'est pas enregistré de le faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_Deactivate()
    If ThisWorkbook.Saved = False Then
       x = MsgBox("Feuille non enregistrée, voulez vous l'enregistrer?", vbOKCancel)
            If x = 1 Then
                ThisWorkbook.Save
            End If
    End If
    End Sub
    Attention de respecter les conditions énoncées ci-dessus par @Unparia ()

    Cordialement

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Dans l'aide VBA, le code est quasiment écrit : https://docs.microsoft.com/fr-FR/off...ok.beforeclose

    Perso, j'écrierais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_BeforeClose(Cancel as Boolean) 
        Cancel = Not Me.Saved
        If Cancel Then MsgBox("Sauvegarder avant de quitter.")
    End Sub
    Je préfère laisser la main à l'utilisateur plutôt que de forcer la sauvegarde, au cas où l'utilisateur ait fait une modification qu'il ne souhaite pas sauvegarder.

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Menhir

    Attention toutefois : je crois avoir compris que dreamsodfa souhaite agir en quittant la feuille (et non nécessairement le classeur)

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Dans ce cas, :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Deactivate()
       If Not ThisWorkbook.Saved Then
          MsgBox ("Sauvegarder avant de quitter.")
          Me.Activate
       End If
    End Sub

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/10/2023, 17h14
  2. Réponses: 6
    Dernier message: 04/06/2006, 19h02
  3. fermer toutes fenetres active de l'application avant quitter
    Par iam dans le forum Bases de données
    Réponses: 0
    Dernier message: 03/06/2006, 11h42
  4. [VBA-E] evenement avant quitter application
    Par fisherman dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/05/2006, 13h11
  5. valider avant de quitter
    Par stefano dans le forum Bases de données
    Réponses: 9
    Dernier message: 21/04/2006, 08h00

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