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 :

Ordre d'execution avec boite de dialogue enregistrer sous


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut Ordre d'execution avec boite de dialogue enregistrer sous
    Bonjour,

    Je souhaiterais effectuer des modifications (effacement du contenu de l'une des feuilles) sur un classeur lorsque l'utilisateur fait "enregistrer sous".

    J'aimerais donc
    - dans un premier temps que l'utilisateur enregistre son fichier
    - PUIS supprimer (en VBA) le contenu de la feuille concernée (et pas l'inverse : si je supprime le contenu de la feuille et que l'utilisateur annule lors de l'enregistrement sous je perds des informations...)

    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
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Dim ok As Boolean
        Dim rep As String
        ok = False
        Application.EnableEvents = False
     
        If SaveAsUI Then ' variable SaveAsUI = vrai correspond ou cas ou l'utilisateur à choisi ENREGISTRER SOUS
            Do
                rep = InputBox("Que voulez-vous faire ?" & Chr(10) & Chr(10) & "Pour enregistrer une sauvegarde de la MEME OPERATION, tapez 1." & Chr(10) & Chr(10) & "Pour utiliser ce document comme base pour une NOUVELLE OPERATION, tapez 2.", Default:=nveaunom)
                If rep = "" Then 'Si l'utilisateur clique sur le bouton Annuler la fonction renvoie une chaîne de longueur nulle ("").
                    Cancel = True
                    Application.EnableEvents = True
                    Exit Sub
                End If
                If rep = "1" Or rep = "2" Then ok = True
            Loop While ok = False
            If rep = "1" Then ' cas MEME OPERATION : on ouvre simplement la fenêtre enregistrer sous et on laisse l'utilisateur se débrouiller
                Cancel = False
            ElseIf rep = "2" Then ' cas NOUVELLE OPERATION : il faut supprimer le contenu de la feuille stats
                Cancel = False
    '            DoEvents
                MsgBox (2)
            End If
        Else ' variable SaveAsUI = faux correspond ou cas ou l'utilisateur a choisi ENREGISTRER
            Cancel = False
            ThisWorkbook.Save
        End If
        Application.EnableEvents = True
    End Sub
    Avec ma tentative ci-dessus, le message 2 s'affiche avant l'ouverture de la boite de dialogue "enregistrer sous", pourquoi ?!
    Je voudrais ensuite mettre mon code de nettoyage à la place de cette msgbox ligne 22.

    Auriez-vous des idées pour réussir à afficher le message après l'enregistrement du nouveau fichier depuis la boite de dialogue ?

    En espérant avoir été assez clair, merci d'avance pour votre aide !

  2. #2
    Membre confirmé
    Homme Profil pro
    Gestion comptable - Spécialiste Excel, Vba, - Débutant MySql, Javascript, Python, Php
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Gestion comptable - Spécialiste Excel, Vba, - Débutant MySql, Javascript, Python, Php

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Par défaut
    Bonjour,

    Peut-être ceci fonctionne?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
    ThisWorkbook.Save
     
     
    End Sub
    Sinon utiliser la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = False
    en début de votre script pour éviter l'interruption

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = True

    Cordialement

    Pascal

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur acousticien
    Inscrit en
    Septembre 2015
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur acousticien
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Septembre 2015
    Messages : 122
    Par défaut
    Bonjour et merci pour l’intérêt porté à ma question.

    J'ai finalement résolu mon problème en ne laissant pas la boite de dialogue s'ouvrir seule à la fin de la procédure mais en la forçant pour pouvoir ensuite exécuter du code avant l'enregistrement.

    Encore merci toutefois, bonne journée

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/07/2015, 10h54
  2. [C#] Boîte de dialogue "Enregistrer sous"
    Par TmDsbsBs dans le forum ASP.NET
    Réponses: 22
    Dernier message: 31/10/2013, 18h55
  3. Problème avec boite de dialogue enregistrer sous
    Par biddal dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/08/2011, 11h58
  4. Réponses: 1
    Dernier message: 15/06/2007, 18h37
  5. Pb Boite de dialogue "enregistrer sous"
    Par tangueros dans le forum Access
    Réponses: 2
    Dernier message: 31/07/2006, 12h25

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