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 :

Message d'erreur après enregistrement automatique sous un autre nom en VBA [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Par défaut Message d'erreur après enregistrement automatique sous un autre nom en VBA
    Bonjour à tous,

    Je débute un peu en VBA et j'ai un soucis de programmation.
    Voilà, je souhaite que mon fichier soit enregistré automatiquement sous un autre nom (avec la date et l'heure) dès le premier enregistrement afin de conserver une copie du fichier d'origine. Par contre à partir du second enregistrement, je souhaite que le nouveau fichier écrase le fichier précédent sans le renommer.

    Voilà le code que j'ai généré jusqu'à maintenant en utilisant une variable booléenne dont la valeur est initialisée à "True" dès l'ouverture du fichier :

    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)
    'définition du nom du fichier
        Dim nom As String
        nom = "Tableau Industriel_MACRO" & "_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hhmmss") & ".xls"
     
    'vérification de la variable d'enregistrement
    If var = True Then
    'modification de la valeur de la variable d'enregistrement
        var = False
    ' Sauvegarde du fichier incluant la date et l'heure pour le premier enregistrement
        'sauvegarde dans le répertoire en cours sous un nouveau nom
        ActiveWorkbook.SaveAs ActiveWorkbook.Path & "\" & nom
     
        'message de validation de l'enregistrement
        rep = MsgBox("Votre fichier a été sauvegardé sous le nom : " & nom, vbYes + vbInformation, "Sauvegarde classeur")
     
    Else
    ' Sauvegarde du fichier sans modification du nom dès le second enregistrement
    ActiveWorkbook.Save
    End If
    End Sub
    Mon soucis c'est que dès le premier enregistrement, après le message de confirmation, un message d'erreur apparaît et Excel ferme le fichier (en me proposant de récupérer mes données)...
    Le message qui s'affiche avant la fermeture de mon fichier est disponible en pièce jointe.

    Quelqu'un peut-il m'aider à résoudre mon problème...???

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    J'ai voulu tester ton code mais je travaille sur excel 2007 donc déjà un message me demande si je veux enregistrer avec les macros, c'est logique, quand tu précises dans ton titre "pour toute version", ce n'est pas exact, sur exc. 2007, cette ligne doit s'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom = "Tableau Industriel_MACRO" & "_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hhmmss") & ".xlsm"
    a cette condition, je n'ai pas eu de problème, encore faut'il que l'ancien fichier fut en ".xlsm"

    Bonne soirée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Je serais tenté de penser qu'il y a un problème qui vient de ce que tu demandes à sauvegarder dans une procédure évènementielle déclenchée par chaque sauvegarde. Je t'aurais bien proposé de modifier ta procédure ainsi
    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)
     
    Application.EnableEvents = False
     
    'définition du nom du fichier
    Dim nom As String
    nom = "Tableau Industriel_MACRO" & "_" & Format(Date, "yyyy-mm-dd") & "_" & Format(Time, "hhmmss") & ".xls"
     
    'vérification de la variable d'enregistrement
    If Var = True Then
        'modification de la valeur de la variable d'enregistrement
        Var = False
        ' Sauvegarde du fichier incluant la date et l'heure pour le premier enregistrement
        'sauvegarde dans le répertoire en cours sous un nouveau nom
        ActiveWorkbook.SaveAs ActiveWorkbook.Path & "\" & nom
     
        'message de validation de l'enregistrement
        MsgBox "Votre fichier a été sauvegardé sous le nom : " & nom, vbYes + vbInformation, "Sauvegarde classeur"
     
    Else
        ' Sauvegarde du fichier sans modification du nom dès le second enregistrement
        ActiveWorkbook.Save
        MsgBox "enregistré sans changement de nom"
    End If
     
    Application.EnableEvents = True
    Cancel = True
     
    End Sub
    Mais Casefayere dit qu'il n'y a pas de pb et, du coup, je ne sais pas.

    Cordialement,

    PGZ

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 8
    Par défaut
    Bonjour,

    Je viens de tester la solution de pgz et ça marche !!!

    Pour répondre à Casefayere, après vérification, ma version Excel est de 2003, par conséquent la solution proposée ne marche pas dans mon cas. (Je me suis un peu précipité en renseignant l'intitulé...)

    L'avantage c'est que vos propositions permettent de résoudre mon problème pour toutes les versions Excel!

    En tous cas merci pour votre aide et la rapidité de vos réponses.

    Bonne journée.
    Cdlt.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/03/2007, 15h19
  2. Réponses: 2
    Dernier message: 12/10/2006, 23h36
  3. Help - plein de messages d'erreur après avoir installé Free
    Par fute dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 18/12/2005, 14h33
  4. Messages d'erreurs après exit
    Par kafifi dans le forum Langage
    Réponses: 8
    Dernier message: 06/11/2005, 00h03
  5. Surcharger le message d'erreur après un OnException
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/04/2003, 11h42

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