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 :

Enregistrer un fichier sous en VBA [XL-2010]


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
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 163
    Par défaut Enregistrer un fichier sous en VBA
    Bonjour,

    J'utilise ce code pour créer un dossier , et ensuite je souhaite enregistrer mon fichier Excel dans ce nouveau dossier.
    La création du dossier fonctionne très bien mais j'ai une erreur au moment de l'enregistrement. Il me dise : erreur d exécution 1004, excel n'arrive pas à accéder au fichier. Ensuite je debug je rappui sur le bouton lecture de la console VBA et le fichier s'enregistre. Pourquoi la première fois le fichier n'arrive pas à s'enregistrer.

    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
    Private Sub dossier_enregistrement(ledir_archive, transporteur_nom, chemin_tmp)
     
        Dim chemin As String, Commande As String
     
        timestamp = Format(Now, "dd-mm-yyyy-hhnnss")
     
        transporteur_nom = Replace(transporteur_nom, " ", "_")
     
        'Crée d'un seul coup tous les répertoires
        'et sous-répertoires s'ils sont absents et
        'ne touche à rien s'ils sont présents
        chemin = ("" & ledir_archive & transporteur_nom & "_" & timestamp & "\")
        chemin_tmp = chemin
     
        'S'assurer d'être sur le bon lecteur où les répertoires
        'doivent être créé
        ChDrive "D"
     
        Commande = Environ("comspec") & " /c mkdir " & chemin
        Shell Commande, 0
     
        timestamps = Format(Now, "dd-mm-yyyy-hhnnss")
     
        nomFichier = "" & transporteur_nom & "_" & timestamps & ".xlsm"
     
        ActiveWorkbook.SaveAs chemin_tmp & nomFichier
     
    End Sub
    Merci

  2. #2
    Membre chevronné Avatar de jackborogar
    Homme Profil pro
    Etudiant Ingénierie Financière
    Inscrit en
    Avril 2012
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant Ingénierie Financière
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 290
    Par défaut
    Bonjour,

    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
    Private Function CreationDossier(sDossier) As Long 'Fonction pour créer Dossier de Sauvergarde
     
        Rep = SHCreateDirectoryEx(0&, sDossier, 0&)
     
    End Function
     
    Sub UserF10() 'Affiche la fenêtre de sauvergarde
     
        If MsgBox("Etes-vous certain de vouloir sauvegarder ?", vbYesNo + vbQuestion, "Demande de confirmation") = vbYes Then
     
            Sauvegarde 'Si bouton Oui est préssé alors on appelle la fct sauvergarde
     
        End If
     
    End Sub
     
    Sub Sauvegarde()
     
        On Error GoTo CreerDossier 'Si il y a une erreur alors directement à la ligne CreerDossier
     
        Dim sDossier As String
     
        sDossier = "C:\Documents and Settings\TON PROFIL\Mes documents\Enregistrer\" & Format(Date, "yyyy") & "\" & Format(Date, "mmmm")
        Fichier = "LE NOM DE TON FICHIER" & Format(Date, "dd-mm-yyyy")
     
    CreerDossier:
     
        If Err.Number = 1004 Then 'Si dossier pas créer
     
            CreationDossier sDossier 'On le créer en appelant la fct "CreationDossier"
     
        End If
     
        Application.DisplayAlerts = False
        ThisWorkbook.SaveAs sDossier & "\" & Fichier & ".xls " 'Sauvergarde du dossier
        Application.DisplayAlerts = True
        MsgBox ("Votre fichier a bien été enregistré") 'Fenêtre d'information
     
        Exit Sub
     
    End Sub
    Cdt

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 163
    Par défaut
    Parfait j'ai réadapter tes fonctions à mon cas et ça fonctionne nickel.
    Merci de ton aide.

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

Discussions similaires

  1. [XL-2003] Enregistrer un fichier sous vba excel
    Par facteur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2013, 09h00
  2. [AC-2003] Enregistrer un fichier xls depuis vba access2003
    Par leonor dans le forum VBA Access
    Réponses: 1
    Dernier message: 10/06/2010, 20h06
  3. Enregistrer des fichiers sous VPN
    Par FredericB dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/07/2007, 14h45
  4. code pour enregistré un fichier sous different nom
    Par france38 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/10/2006, 13h31
  5. enregistrer lignes fichier sous condition
    Par makohsarah dans le forum Langage
    Réponses: 1
    Dernier message: 21/08/2006, 15h46

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