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 :

Msgbox dans un workbook_beforeSave, réponse automatique [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut Msgbox dans un workbook_beforeSave, réponse automatique
    Bonjour,

    Ayant eu des soucis avec le mode read-only, j'ai rajouté le code suivant pour demander aux utilisateurs confirmation avant de sauvergarder.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     
        Select Case MsgBox("Voulez-vous vraiment sauvegarder ce fichier?", vbYesNo, "Sauvegarde")
        Case vbYes
     
        Case vbNo
            Cancel = True
    End Select
     
    End Sub
    Aucun problème de ce coté là.

    Par contre j'essaye de faire une macro pour mettre à jour tous les fichiers mensuels et j'aimerais que cette msgbox ne s'affiche pas, ou pouvoir répondre oui automatiquement, mais je n'y arrive pas.
    J'ai essayé displayalerts = false, et un sendkeys "enter" mais sans succès.
    Quelqu'un aurait une idée?

    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Mise_a_jour()
    With ThisWorkbook.Sheets("liste")
    dl = .Range("A" & Rows.Count).End(xlUp).Row
    For i = 8 To 8
    nom = .Cells(i, 1) & "\" & .Cells(i, 2)
    Workbooks.Open (nom)
    Application.Run (ActiveWorkbook.Name & "!" & .Cells(i, 3))
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Next i
    End With
    End Sub
    info complémentaires: la sheet "liste" a en colonne A le chemin du fichier, en B son nom, et en C le nom de la macro a lancer
    Oui ma boucle est ridicule mais c'est pour testé sur un fichier pas trop gros.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    peut-être en définissant une variable publique de type booléen en début d'un module standard,
    au début de ta procédure de mise à jour définir cette variable à True (la basculer à False à la fin)
    puis dans le code de l'évènement tester si cette variable est à True alors Exit Sub


    En plus simple, désactiver les évènements au début de la mise à jour (EnableEvents)
    et ne pas oublier de les réactiver à la fin !

    _________________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Si je l'ai bien réalisée, la solution barrée ne fonctionne pas, code:
    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
    Public maj_globale As Boolean
     
    Sub Mise_a_jour()
    maj_globale = True
    With ThisWorkbook.Sheets("liste")
    dl = .Range("A" & Rows.Count).End(xlUp).Row
    For i = 8 To 8
    nom = .Cells(i, 1) & "\" & .Cells(i, 2)
    Workbooks.Open (nom)
    Application.Run (ActiveWorkbook.Name & "!" & .Cells(i, 3))
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Next i
    End With
    End Sub
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If maj_globale = False Then
        Select Case MsgBox("Voulez-vous vraiment sauvegarder ce fichier?", vbYesNo, "Sauvegarde")
        Case vbYes
     
        Case vbNo
            Cancel = True
    End Select
    End if
    End Sub
    Je teste l'autre solution.

    Edit: c'est la bonne.
    Merci encore une fois Marc-L

    code:
    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
    Sub Mise_a_jour()
     
    With ThisWorkbook.Sheets("liste")
    dl = .Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To dl
    nom = .Cells(i, 1) & "\" & .Cells(i, 2)
    Workbooks.Open (nom)
    Application.Run (ActiveWorkbook.Name & "!" & .Cells(i, 3))
    Application.EnableEvents = False
    ActiveWorkbook.Save
    Application.EnableEvents = True
    ActiveWorkbook.Close
    Next i
    End With
    End Sub

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

Discussions similaires

  1. réponse à MsgBox dans une macro
    Par diami dans le forum VBA Word
    Réponses: 1
    Dernier message: 19/06/2012, 08h50
  2. [Batch] Réponse automatique à un programme dans un batch
    Par phileo75 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 30/03/2012, 13h37
  3. Réponses: 0
    Dernier message: 20/01/2011, 10h08
  4. Réponse automatique à une MsgBox
    Par fifoux dans le forum Access
    Réponses: 2
    Dernier message: 19/02/2007, 15h48

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