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 :

Sauvegarde multiple dans un autre répertoire


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut Sauvegarde multiple dans un autre répertoire
    Bonsoir à la communauté.

    J'ai un code pour sauvegarder un fichier Excel partagé, à chaque fois qu'un utilisateur utilise (et enregistre) le fichier.

    Code dans le module :
    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
    Public Sub SaveCopy()
        Dim strDate As String
        Dim Count   As Integer
        Dim PosSep As Integer
     
     
     
        Count = Len(ActiveWorkbook.Name)
        PosSep = InStrRev(ActiveWorkbook.Name, ".")
        '--- Extension xls ou xlsm (3 ou 4 car.)
        If PosSep = 0 Then
     
            NameA = ActiveWorkbook.Name
        Else
            NameA = Left(ActiveWorkbook.Name, PosSep - 1)
        End If
        '--- Ajout séparateur si besoin
        If Right(ActiveWorkbook.Path, 1) <> "\" Then
            NameA = ActiveWorkbook.Path & "\" & NameA
        Else
            NameA = ActiveWorkbook.Path & NameA
        End If
        '---
        strDate = Format(Date, "dd-mm-yy") & "_" & Format(Time, "hh-mm-ss")
        ThisWorkbook.SaveCopyAs Filename:=NameA & "_" & Environ$("username") & "_" & strDate & Right(ActiveWorkbook.Name, Count - PosSep + 1)
    End Sub
    Code dans ThisWorkbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        '--- Sauve le fichier avec le nom et ajout de Date_Heure
        Call SaveCopy
    End Sub
    Je souhaiterais que les sauvegardes puissent être réalisées sous un autre répertoire que celui du fichier.
    Quelqu'un peut-il m'aider à trouver la bonne syntaxe à rajouter à mon code.
    Merci par avance.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Remplace "ActiveWorkbook.Path" par le chemin du dossier désiré :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Public Sub SaveCopy()
     
        Dim strDate As String
        Dim Count As Integer
        Dim PosSep As Integer
        Dim NameA As String
        Dim Chemin As String
     
        Count = Len(ActiveWorkbook.Name)
     
        PosSep = InStrRev(ActiveWorkbook.Name, ".")
     
        '--- Extension xls ou xlsm (3 ou 4 car.)
        If PosSep = 0 Then
     
            NameA = ActiveWorkbook.Name
     
        Else
     
            NameA = Left(ActiveWorkbook.Name, PosSep - 1)
     
        End If
     
        Chemin = "D:\Mon Dossier\"
     
        NameA = Chemin & NameA
     
    '''''    '--- Ajout séparateur si besoin
    '''''    If Right(ActiveWorkbook.Path, 1) <> "\" Then
    '''''
    '''''        NameA = ActiveWorkbook.Path & "\" & NameA
    '''''
    '''''    Else
    '''''
    '''''        NameA = ActiveWorkbook.Path & NameA
    '''''
    '''''    End If
     
        '---
        strDate = Format(Date, "dd-mm-yy") & "_" & Format(Time, "hh-mm-ss")
     
        ThisWorkbook.SaveCopyAs Filename:=NameA & "_" & Environ$("username") & "_" & strDate & Right(ActiveWorkbook.Name, Count - PosSep + 1)
     
    End Sub
    Hervé.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable Commercial
    Inscrit en
    Mars 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Responsable Commercial
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 51
    Par défaut
    Merci Hervé. C'est exactement ce que je voulais. J'avais essayé en vain avec ChDir...
    Si vous souhaitez prolonger votre aide, j'ai créé une nouvelle discussion pour l'exécution d'une macro par lien hypertexte :
    => http://www.developpez.net/forums/d14...en-hypertexte/

    Encore merci.
    Janigrel

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

Discussions similaires

  1. Générer les fichiers .o dans un autre répertoire ?
    Par tintin72 dans le forum Autres éditeurs
    Réponses: 12
    Dernier message: 30/12/2007, 15h56
  2. Réponses: 4
    Dernier message: 24/06/2007, 21h06
  3. vérifier un fichier présent dans un autre répertoire
    Par palcoquoz dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 18/06/2007, 10h02
  4. Réponses: 3
    Dernier message: 12/04/2006, 20h44
  5. Déplacer un fichier dans un autre répertoire
    Par t_om84 dans le forum Général Python
    Réponses: 2
    Dernier message: 16/05/2005, 09h36

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