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

  1. #1
    Membre à l'essai
    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
    Points : 20
    Points
    20
    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 éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    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
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    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 à l'essai
    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
    Points : 20
    Points
    20
    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 éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    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 ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  6. #6
    Membre à l'essai
    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
    Points : 20
    Points
    20
    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 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    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 !

  8. #8
    Membre à l'essai
    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
    Points : 20
    Points
    20
    Par défaut
    la macro fonctionne uniquement lorsque le fichier enregistré n'a pas le même nom.
    comment je dois procéder lorsque celui ci à le même nom ?

  9. #9
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    la macro fonctionne uniquement lorsque le fichier enregistré n'a pas le même nom.
    Le même nom QUE QUOI ? Tu n'as pas répondu au message d'illight de 14h57 pas plus qu'à ma demande de savoir s'il est possible d'enregistrer sur le lecteur D.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  10. #10
    Membre à l'essai
    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
    Points : 20
    Points
    20
    Par défaut
    je vous ai répondu mais sans faire référence à vos questions , mille pardons

    Le même nom QUE QUOI ?
    l'exécution de la macro doit
    1er - soit enregistrer le fichier avec son nouveau nom car les variables sont différentes
    2e - soit la macro enregistre avec le même nom car les variables n'ont pas changé
    dans le 2e cas la macro bloque avec le message suivant
    erreur exécution 70
    permission refusée
    Tu n'as pas répondu au message d'illight de 14h57
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "D:\Users\HOME\Documents\" & variablenom & "\"
    réponse 15h11
    la macro fonctionne uniquement lorsque le fichier enregistré n'a pas le même nom.
    pas plus qu'à ma demande de savoir s'il est possible d'enregistrer sur le lecteur D.
    reponse à 13h21
    le disque D: ce n'est pas pas un DVD
    merci pour votre aide

  11. #11
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Citation Envoyé par liner77 Voir le message
    je vous ai répondu mais sans faire référence à vos questions , mille pardons


    l'exécution de la macro doit
    1er - soit enregistrer le fichier avec son nouveau nom car les variables sont différentes
    2e - soit la macro enregistre avec le même nom car les variables n'ont pas changé
    dans le 2e cas la macro bloque avec le message suivant



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "D:\Users\HOME\Documents\" & variablenom & "\"
    réponse 15h11



    reponse à 13h21


    merci pour votre aide
    Ce à quoi tu n'as pas répondu, c'est de savoir si "variablenom" est un dossier ou une variable. Si le nom n'a pas changé et que tu as ce message au Kill, c'est que tu n'a pas les droits nécessaires pour la suppression.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  12. #12
    Membre à l'essai
    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
    Points : 20
    Points
    20
    Par défaut
    Ce à quoi tu n'as pas répondu, c'est de savoir si "variablenom" est un dossier ou une variable. Si le nom n'a pas changé et que tu as ce message au Kill, c'est que tu n'a pas les droits nécessaires pour la suppression.
    La "variablenom" est un dossier variable suivant une cellule du classeur
    Si le nom n'a pas changé et que tu as ce message au Kill, c'est que tu n'a pas les droits nécessaires pour la suppression.
    J'effectue les tests sur mon réseau personnel, donc je n'ai pas de restriction de droit.
    Peux t'on enregistrer en vba sans utiliser "kill" un classeur avec le même nom ?

  13. #13
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    La "variablenom" est un dossier variable suivant une cellule du classeur
    donc, tu dois écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    chemin = "D:\Users\HOME\Documents\" & variablenom& \"
    Peux t'on enregistrer en vba sans utiliser "kill" un classeur avec le même nom ?
    Tu peux renommer l'ancien classeur si tu en as les droits (l'instruction "Name").
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  14. #14
    Membre à l'essai
    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
    Points : 20
    Points
    20
    Par défaut
    Je vais tester, je te tiendrai au courant demain

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