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 une copie d'un fichier dans le même répertoire


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2012
    Messages : 143
    Points : 93
    Points
    93
    Par défaut Enregistrer une copie d'un fichier dans le même répertoire
    Bonsoir à tous,
    J'ai le code suivant qui crée une copie de mon fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Nommer_Extraction(MyPath As String)
     
     
      Application.ScreenUpdating = False
     
     
      With ActiveWorkbook
        .SaveAs Filename:=ThisWorkbook.Sheets("Feuil1").Range("F1") & " " & Format(Now, "yyyy-mm-dd")
      End With
     
    ActiveWorkbook.Save
    Application.Quit
    End Sub
    Comme vous le voyez en ligne, la copie du fichier portera le nom inscrit dans la cellule F1 de la feuil1 + la date.
    Mon fichier de départ se trouve dans un sous répertoire de Mes Documents que j'ai appelé Enigmes.
    Lorsque j'execute mon code, la copie du fichier ne s'enregistre pas dans le sous répertoire Enigme mais dans Mes Documents.
    Et forcément, je ne comprend pas pourquoi -))

    Je ne veux pas définir un chemin précis d'enregistrement pour que le code fonctionne quelque soit l'endroit où est enregistré le fichier.
    J'ai donc déplacé le répertoire Enigmes directement sur C:/ partant du principe que chaque disque dur (normalement) porte ce nom.
    J'ai modifié le code de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Nommer_Extraction()
    Dim Chemin As String
     
      Application.ScreenUpdating = False
      Chemin = "C:\Enigmes/"
     
      With ActiveWorkbook
        .SaveAs Filename:=Chemin & ThisWorkbook.Sheets("Feuil1").Range("F1") & " " & Format(Now, "yyyy-mm-dd")
      End With
     
    ActiveWorkbook.Save
    Application.Quit
    End Sub
    Et cela enregistre bien la copie du fichier dans le répertoire Enigme placé sur C:/ , mais cela m'oblige du coup à définir un chemin d'accés ( Chemin = "C:\Enigmes/") et du coup d'autres utilisateurs à mettre le répertoire Enigme sur C:/ également.


    Quelqu'un pourrait-il m'aider ?
    Merci par avance à ceux qui se pencheront sur mon sujet.
    Laurent

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,

    essayes comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Nommer_Extraction()
    Dim Chemin As String, verif As String
    Chemin = "C:\Enigmes\"
    If Not verif = Dir(Chemin, vbDirectory) = vbEmpty Then 'On teste l'existence du répertoire chemin
        MkDir Chemin 'on le crée s'il n'existe pas
    End If
    With ActiveWorkbook
      .SaveAs Filename:=Chemin & ThisWorkbook.Sheets("Feuil1").Range("F1") & " " & Format(Now, "yyyy-mm-dd")
    End With
     Application.Quit
    End Sub

  3. #3
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonsoir,

    pour récupérer le dossier du classeur contenant le code : Chemin = ThisWorkbook.Path & "\"


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2012
    Messages : 143
    Points : 93
    Points
    93
    Par défaut oui mais...
    Merci Dom pour ta réponse et de t'être penché sur mon sujet.
    Mais cela ne règle pas mon problème.
    Je n'ai surement pas été très clair dans mes explications.

    Dans "Mes Documents" j'ai un répertoire qui se nomme "Enigmes".
    Dans le répertoire "Enigmes" j'ai un fichier que je duplique grâce au premier code.
    Sauf qu'au lieu de s'enregistrer dans "Enigmes" qui est un sous répertoire de "Mes Documents", il s'enregistre directement dans "Mes Documents".

    Le second code c'est une parade que j'ai trouvée en mettant le répertoire "Enigme" sur C:/ et en définissant le chemin d'enregistrement en toute lettres ( Chemin = "C:\Enigmes\").
    Si j'utilise cette seconde solution en ayant mis le répertoire "Enigmes" dans "Mes Documents" par exemple, je vais devoir adapter le chemin de la façon suivante (Chemin = "C:\Laurent\MesDocuments\Enigmes\").
    Et du coup, si je donne mon fichier à quelqu'un, le chemin d'accès ne sera plus bon puisque sont ordi à lui ne s'appele pas Laurent.

    Compliquer de bien décrire le problème qu'on racontre -))
    J'espère avoir été plus clair.
    Merci pour tout.
    Laurent

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    et comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Nommer_Extraction()
    Dim Chemin As String, verif As String
    Chemin = "C:\Users\" & Application.UserName & "\enigme\"
    If Not verif = Dir(Chemin, vbDirectory) = vbEmpty Then 'On teste l'existence du répertoire chemin
        MkDir Chemin 'on le crée s'il n'existe pas
    End If
    With ActiveWorkbook
      .SaveAs Filename:=Chemin & ThisWorkbook.Sheets("Feuil1").Range("F1") & " " & Format(Now, "yyyy-mm-dd")
    End With
     Application.Quit
    End Sub
    chez moi, on commence toujours par "c_Users_..."

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2012
    Messages : 143
    Points : 93
    Points
    93
    Par défaut hé ben voilà
    Avec ton code Dom, cela me crée un répertoire dans le répertoire utilisateur.
    Donc cela teste bien la présence d'un répertoire Enigmes et ne le trouvant pas le crée. Et la copie du fichier est dedans.

    La solution de Marc fonctionne à merveille. Il me manquait donc le petit plus.

    Grace à vous deux j'ai approfondis mes connaissances ce soir.

    Merci beaucoup pour votre aide.

    Bonne soirée
    Laurent

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

Discussions similaires

  1. Enregistrer une copie d'un onglet dans une interface multi-onglet
    Par odjapo dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 20/06/2014, 13h18
  2. [VBS] Executer un fichier dans le même répertoire
    Par TGV6773 dans le forum VBScript
    Réponses: 4
    Dernier message: 22/03/2010, 18h19
  3. copier un fichier dans le même répertoire
    Par leboy dans le forum Langage
    Réponses: 2
    Dernier message: 19/11/2008, 05h36
  4. créer plusieurs fichiers dans le même répertoire
    Par mstic dans le forum Windows Forms
    Réponses: 5
    Dernier message: 16/04/2007, 17h45
  5. enregistrer le chelin d'un fichier dans une table
    Par piscine dans le forum Bases de données
    Réponses: 3
    Dernier message: 08/09/2004, 15h13

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