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 :

VBA - Sauvegarder copie excel en CSV automatiquement lors d'un enregistrement


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut VBA - Sauvegarder copie excel en CSV automatiquement lors d'un enregistrement
    Bonjour à tous,

    J'aimerais créer une macro excel simple qui enregistre une copie de mon fichier excel au format CSV lorsque j'enregistre le fichier excel (.xlsm) avec un CTRL+S par exemple.

    J'ai réalisé une première macro comme suit :

    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 chemin_export As String
        Dim nom_csv As String
        Dim chemin_complet As String
     
     
        chemin_export = "C:\...\dossier"
        nom_feuille = ThisWorkbook.Sheets(1).Name
        chemin_complet = chemin_export & "\" & nom_feuille & ".csv"
     
        'MsgBox Dir(chemin_complet)
     
        'If Dir(chemin_complet) <> "" Then Kill (chemin_complet) Else End
     
        ActiveWorkbook.SaveAs Filename:=chemin_complet, FileFormat:=xlCSV, CreateBackup:=False, AccessMode:=xlExclusive, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges
     
        MsgBox chemin_complet & " sauvegardé en tant que CSV."
     
     
    End Sub
    Toutefois quand j'exécute ce script via un CTRL+S, le message s'affiche bien, toutefois il recommence "en boucle" jusqu'à ce qu'il crash. Le CSV est néanmoins créée.

    Lorsque je décommente les 2 lignes avec la fonction Dir(), le message avec le Dir() s'affiche bien mais le CSV n'est plus créée.

    Par ailleurs, j'ai placé le code dans "VBAProject/Microsoft Excel Objects/ThisWorkbook".

    Comment régler le problème svp ? Auriez-vous une macro tout aussi "simple" permettant de faire cette copie en CSV ?

    Merci d'avance.

    Bonne journée,

    Olscream

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenu sur ce Forum,

    En effet, il n'est pas très rigoureux d'utiliser la méthode SaveAs dans une procédure évènementielle de sauvegarde.
    Plutôt utiliser, à mon avis, l'évènement Close.
    Tout dépend du contexte.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    En effet, il n'est pas très rigoureux d'utiliser la méthode SaveAs dans une procédure évènementielle de sauvegarde.
    Plutôt utiliser, à mon avis, l'évènement Close.
    Tout dépend du contexte.
    Merci pour ton retour rapide MarcelG.

    En utilisant l'évènement close, je n'ai pas de soucis à sauvegarder mon CSV.
    Toutefois, saurais-tu comment le faire avec l'évènement save (sub Workbook_BeforeSave a priori) s'il te plaît ? Ou au moins comment expliquer le bug que j'ai eu avec ce fragment de code ?

  4. #4
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    (Tu peux m'interpeller par "Marcel", "G" étant l'initiale de mon nom)

    C'est le chien qui se mord la queue.

    Pour t'en rendre compte, place un point d'arrêt au début du code initial de l'évènement Save. Puis procède à une exécution en pas à pas.
    Tu instruis une sauvegarde avant la sauvegarde!

    Mieux vaut donc placer cette instruction dans
    - un autre évènement (classeur ou feuille)
    - une procédure incluse dans un module standard
    - le code d'un bouton de commande

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


Discussions similaires

  1. [XL-2007] Sauvegarde fichier Excel en CSV
    Par lilo_r dans le forum Excel
    Réponses: 0
    Dernier message: 21/02/2012, 10h58
  2. [XL-2003] Format CSV:problème lors de l'enregistrement
    Par Badour_ dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/01/2010, 16h12
  3. PHP Browser - Ouverture automatique lors d'un enregistrement
    Par elspliffo dans le forum Eclipse PHP
    Réponses: 1
    Dernier message: 31/05/2007, 09h57
  4. [VBA-E] Form Excel VB, remplissage automatique d'un tableau
    Par evema dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/04/2007, 14h37
  5. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23

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