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 avec un nom et un répertoire variable suivant le contenu de la feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut Enregistrer avec un nom et un répertoire variable suivant le contenu de la feuille
    Bonjour,
    Je m'explique :

    Je souhaite enregistrer une feuille
    1- dans un répertoire variable ( partie fixe + partie variable suivant le contenu de ma feuille )
    2- le nom est également une variable suivant la même feuille
    3- si la feuille a le même nom celui est écraser car déja ouverte
    4- sinon il créer la feuille avec le nouveau nom

    Le code actuelle est :

    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
    Sub Macrosauvegarde()
    Dim chemin As String, NomFichier As String, nom As String, var1 As String, var2 As String, var3 As Integer, variablenom As String
    var1 = Cells(1, 1)
    var2 = Cells(1, 17)
    var3 = Cells(9, 4)
    variablenom = Cells(1, 1)                         
    chemin = "D:\Users\HOME\Documents\variablenom\"
    'D:\Users\HOME\Documents\STE1
    NomFichier = var1 & " " & "R3 DU T" & var2 & " " & var3 & ".xlsm"
    'STE1 R3 DU T2 2014
    nom = chemin & MonFichier
    If dir(nom) <> "" Then
    Kill (nom)
    Else
    ActiveWorkbook.SaveAs Filename:=nom
    End If
    End Sub
    En le lancant j'ai ce message d'erreur :
    Erreur d'exécution 1004
    fichier inaccessible.

    Pouvez vous m'aider ?

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Peut-être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = "D:\Users\HOME\Documents\" & variablenom & "\"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom = chemin & NomFichier

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    => Merci d'utiliser les balises CODE pour mettre ton code

    Quand tu écris ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = "D:\Users\HOME\Documents\variablenom\"
    Le dossier "D:\Users\HOME\Documents\variablenom\" existe ou pas ?

    D'ailleurs ça ne serait pas plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = "D:\Users\HOME\Documents\" & variablenom& \"
    ?

    Si le dossier n'existe pas, il faudrait peut-être vérifier, au préalable qu'il existe et s'il n'existe pas le créer, avec par exemple cette petite fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Function Rep_exists(ByRef Repertoire As String) As Boolean
        On Error Resume Next
        Rep_exists = CBool(GetAttr(Repertoire) And vbDirectory)
    End Function
    qui s'utilise comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Rep_exists(chemin) Then MkDir (chemin)
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    désolé pour la balise
    Le dossier "D:\Users\HOME\Documents\variablenom\" n'est pas à créer, il existe déjà
    En revanche, j'ai un autre message d'erreur :
    erreur exécution 70
    permission refusée
    le blocage ce fait sur :

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Le dossier "D:\Users\HOME\Documents\variablenom\" n'est pas à créer, il existe déjà
    Etonnant, puisque tu crées une variable "variablenom". Si tu utilises bien cette variable dans ton chemin, la syntaxe est incorrecte.

    Quant à l'erreur sur le Kill, le disque D: ne serait-il pas un DVD ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 36
    Par défaut
    La variable "variablenom" permet de le déposer dans le bon répertoire suivant le fichier et plus précisément dans Cells(1, 1)
    Peux être je mis prend mal
    Quant à l'erreur sur le Kill, le disque D: ce n'est pas pas un DVD
    D'ou vient l'erreur ?

  7. #7
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Si tu écris ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "D:\Users\HOME\Documents\variablenom\"
    Si ta variable variablenom vaut toto, Excel va essayer de se connecter sur le dossier suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "D:\Users\HOME\Documents\variablenom\"
    Si tu veux qu'il se connecte sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "D:\Users\HOME\Documents\toto\"
    Il faut l'écrire (comme je l'ai dit plus haut) comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "D:\Users\HOME\Documents\" & variablenom & "\"
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

Discussions similaires

  1. [Débutant] Enregistrement automatique avec un nom variable
    Par Attila54 dans le forum VB.NET
    Réponses: 10
    Dernier message: 14/05/2012, 14h42
  2. [WD-2003] Publispostage - Enregistrer avec un nom variable
    Par volesk dans le forum Word
    Réponses: 2
    Dernier message: 10/08/2011, 11h57
  3. "enregistrer.sous" avec un nom de fichier récupéré dans une variable
    Par mauriceguillier dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/10/2010, 14h49
  4. Réponses: 2
    Dernier message: 06/03/2010, 23h36
  5. Réponses: 3
    Dernier message: 19/01/2007, 17h30

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