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 :

Deux evenements Before_save dans un Workbook.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Par défaut Deux evenements Before_save dans un Workbook.
    Bonjour à tous et d'avance merci de votre aide,
    j'ai trouvé ces deux paragraphes de codes sur le net, que j'aimerais mixer afin d'en faire un seul (sinon Excel renvoie un message d'erreur).

    Code 1: par lequel j'oblige l'utilisateur à saisir dans la cellule C6 avant de pouvoir sauvegarder

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Dim msg As String
     
        If Worksheets("Formulaire ZIMP-ZFHG").Range("C6").Value = "" Then
            msg = "Merci de saisir un type de demande!"
            Cancel = True
        End If
     
        If Cancel Then
            MsgBox msg
        End If
    End Sub
    Code 2:par lequel j'oblige l'utilisateur à sauvegarder uniquement sous format .xls

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Application.EnableEvents = False
               fileSaveName = Application.GetSaveAsFilename(fileFilter:="Excel 2003 Files (*.xls), *.xls")
                If fileSaveName <> "False" And Right(fileSaveName, 4) <> ".xls" Then
                   MsgBox ("Merci d'enregistrer uniquement en .xls!")
                End If
            If fileSaveName <> "False" Then
               ThisWorkbook.SaveAs Filename:=fileSaveName
            End If
     
            Cancel = True
       Application.EnableEvents = True
    End Sub

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Mets les instructions des 2 sub dans une seule.
    Les unes à la suite des autres.
    Et dans ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        If Cancel Then
            MsgBox msg
        End If
    insère un Exit Sub, comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        If Cancel Then
            MsgBox msg
            Exit Sub
        End If
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Peut être
    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
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim FileSaveName As Variant
     
    Cancel = True
    If Worksheets("Formulaire ZIMP-ZFHG").Range("C6").Value = "" Then
        MsgBox "Merci de saisir un type de demande!"
    Else
        FileSaveName = Application.GetSaveAsFilename(fileFilter:="Excel 2003 Files (*.xls), *.xls")
        If FileSaveName <> False Then
            If Right(FileSaveName, 4) <> ".xls" Then
                MsgBox "Merci d'enregistrer uniquement en .xls!"
            Else
                Application.EnableEvents = False
                Application.DisplayAlerts = False
                ThisWorkbook.SaveAs Filename:=FileSaveName
                Application.DisplayAlerts = True
                Application.EnableEvents = True
            End If
        End If
    End If
    End Sub

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 8
    Par défaut
    Merci infiniment...ca a marché du premier coup...exactement comme je le voulais.

    Bravo pour la réactivité.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/05/2011, 21h44
  2. Copier deux worksheets interreliées dans un nouveau Workbook
    Par martincactus dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/06/2008, 13h52
  3. Réponses: 12
    Dernier message: 08/11/2007, 20h38
  4. enregistrer deux variable différente dans un seul champs
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 7
    Dernier message: 07/03/2004, 23h18
  5. Eviter deux nombres identiques dans un tirage aléatoire
    Par moon tiger dans le forum Pascal
    Réponses: 5
    Dernier message: 25/11/2002, 09h57

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