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 :

Sauvegarder avec confirmation [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut Sauvegarder avec confirmation
    Bonjour a toutes et tous, Forum bonjour

    Ce petit code ci-dessous permet de sauvegarder un fichier en incrémentant la version de 1 a chaque fois que l'on appui sur la croix rouge.

    ça fonctionne très bien, et je remercie encore au passage les gens pour l'aide apporter a ce propos.

    Je souhaiterai svp le modifier afin d'avoir la possibilité de confirmer d'enregistrer ou pas.

    But: j'appuie sur la croix, message "sauvegarder le fichier Oui ou Non"

    Si OUI on sauvegarde normalement en incrémentant de 1 la version.

    Si NON on sort sans sauvegarde.

    Merci d'avance pour votre temps et votre savoir, une bonne journée a tous.

    Cordialement Ray

    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
     
    '### ENREGISTREMENT AUTOMATIQUE DE VERSION DE FICHIER
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
      ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & strnameNew(ThisWorkbook.Name, 1), AddToMRU:=True
    End Sub
     
    Function strnameNew(NomClasseur As String, increm As Integer) As String
      Dim FichierVersion, S_Ext As String, S_nom As String, StrName As String, PositionPoint As Long
     
      FichierVersion = ""
      On Error Resume Next
      S_Ext = Right(NomClasseur, Len(NomClasseur) - InStrRev(NomClasseur, ".") + 1)
      S_nom = Left(NomClasseur, InStrRev(NomClasseur, ".") - 1)
      StrName = StrReverse(S_nom)
      PositionPoint = InStr(1, StrName, ".")
      If PositionPoint Then
        FichierVersion = StrReverse(Left(StrName, PositionPoint - 1))
    verif_version_numeric:
        If Not IsNumeric(FichierVersion) Then
          FichierVersion = InputBox("Veuillez corriger la version ACTUELLE" & vbCr & "en ne gardant que des nombres", "Texte non supporté", FichierVersion)
     
          GoTo verif_version_numeric
        End If
        strnameNew = StrReverse(Mid(StrName, PositionPoint, Len(StrName) - PositionPoint + 1)) & FichierVersion + 1 & S_Ext
     
      Else
        FichierVersion = "v0.1"
        strnameNew = S_nom & FichierVersion & S_Ext
      End If
    End Function

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Bonjour,

    Un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
             If MsgBox("sauvegarder le fichier ?", vbYesNo, "ENREGISTREMENT") = vbYes Then
                      ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & strnameNew(ThisWorkbook.Name, 1), AddToMRU:=True
            Else
                      ThisWorkbook.Close False
            End If
     
    End Sub

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Salut Goldstar

    Merci beaucoup pour ta réponse, c'est sympa.

    ça fonctionne bien, quand je réponds OUI le fichier se sauvegarde, Excel se ferme de suite, fichier Ok incrémenter de 1.

    Par contre quand je réponds, NON, il me faut le faire en 3 clic avant qu'Excel se ferme.

    (1) 1 Clic pour répondre NON >> là il se passe rien.

    (2) 1 Clic pour répondre de nouveau NON >> Excel reste ouvert, apparament le fichier n'ai pas enregistrer.

    (3) 1 dernier Clic sur croix Excel qui est rester ouvert afin de le fermer.

    Je ne sais pas pourquoi ça ne se ferme rapidement

    Merci de ton aide, a plus tard

    Cdlt Ray

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
             If MsgBox("sauvegarder le fichier ?", vbYesNo, "ENREGISTREMENT") = vbYes Then
                      ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & strnameNew(ThisWorkbook.Name, 1), AddToMRU:=True
            Else
                      ThisWorkbook.Close False
     
            End If
     
    End Sub
    il faut rajouter le sous la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Close False
    afin de sortir de la procédure


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     
             If MsgBox("sauvegarder le fichier ?", vbYesNo, "ENREGISTREMENT") = vbYes Then
                      ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & strnameNew(ThisWorkbook.Name, 1), AddToMRU:=True
            Else
                      ThisWorkbook.Close False
                      exit sub
            End If
     
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Salut Golstar

    Merci de ta réponse, je viens d'essayer par 4 fois, ça fait toujours pareil.

    Dès que j’appuie sur OUI ça sort immédiatement, c'est bon.

    Après avoir modifier le code comme tu me le conseille, toujours pareil quand je réponds NON, ça ferme mais en 3 Clics.

    Bonne app, a plus tard et merci

    Cdlt Ray

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    A la place du exit sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.EnableEvents = False

  7. #7
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Après avoir repris des forces, j'ai essayer ton dernier code, désolé toujours pareil

    je clic sur NON obliger 3 fois, sinon je ne sors pas d'Excel 2007.

    Par contre le fichier n'ai pas sauvegarder normal, j'ai cliquer sur NON

    maintenant je vois pas pourquoi ça sort pas instantanément.

    Merci bonne après midi

    Ray

  8. #8
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Merci j'ai essayer la dernière cartouche, mais sniff sniff toujours même soucis

    j'ai fait fonctionner sans la modification demandée , ça marche toujours très bien comme avant ma demande

    j'ai remis code et idem soucis pareil,

    marche toujours bien si clic sur oui

    Voila bon avoir essayer, avoir pas pu.

    Merci de ton aide, tant pis, c'est pas grave.

    Cordialement Ray

    Bonsoir a tous, forum

    Après de nouveau lu sur le site la lecture ci-dessous, j'ai refait des essais et ça marche toujours pas, si vous avez un peu de temps, une petite aide svp m'arrangerai bien, je sèche.

    Les évènements du module objet ThisWorkbook, dans Excel

    Voila merci a vous pour votre temps

    Cordialement Ray

  9. #9
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut
    va déclencherez de nouveau l'événement c'est visuel

    la solution serait de virer cette ligne de code

  10. #10
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour a vous tous
    voici ce que j'ai mis dans les contributions Pascal

  11. #11
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Bonjour a toutes et tous, forum bonjour

    Merci a vous Montor et Grisan29 pour les solutions proposées, résultat j'ai virer

    le code comme conseillé et ça marche comme souhaité.


    Encore merci a vous pour votre temps et de votre savoir, je vous souhaitent

    de passer une agréable journée.

    Cordialement Bye bye et Ray

  12. #12
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Salut Ray,
    quand on te donne un code c'est bien de conserver les informations de création :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    '---------------------------------------------------------------------------------------
    ' Procedure : strnameNew
    ' Author    : Oliv-
    ' Date      : 20/11/2012
    ' Purpose   : Incrémente un numéro de version
    ' exemple   : strnameNew("toto-v1.0.xls",1) devient "toto-v1.1.xls"
    '---------------------------------------------------------------------------------------
    '
    Ensuite pour éviter que des événements se déclenchent tu peux utiliser un flag


    a mettre dans un module
    dans ton événement ou code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
               verrouEvent = 1
               ThisWorkbook.Save
               verrouEvent = 0
    dans ton évènement BEFORESave
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        If verrouEvent <> 1 Then
            ' ton code
        End If
    End Sub
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

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

Discussions similaires

  1. Sauvegarde avec confirmation par mail?
    Par pcsystemd dans le forum Windows XP
    Réponses: 5
    Dernier message: 18/08/2008, 11h08
  2. Sauvegarder avec IBBackup sous FireBird
    Par tipiweb dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/04/2006, 19h28
  3. automatiser les sauvegardes avec mysql administrator
    Par beckham07 dans le forum Outils
    Réponses: 1
    Dernier message: 09/03/2006, 13h58
  4. comment faire un espace privé....avec confirmation par mail
    Par brisso dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 30/11/2005, 10h24
  5. Journal de sauvegarde avec crontab
    Par prefna dans le forum Administration système
    Réponses: 3
    Dernier message: 29/11/2005, 15h29

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