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 :

Récupérer dossier courant avant l’exécution de la Macro [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut Récupérer dossier courant avant l’exécution de la Macro
    Bonjour à vous,

    Voilà, j'ai développé une Macro qui permet de remettre en forme un fichier Excel pour mes collègues.

    Pour le remettre en forme, la Macro utilise un modèle de Trame qui est stocké sur le réseau (disons T:\MODELES\)

    Une fois le résultat généré, l'utilisateur enregistre ce nouveau fichier dans le dossier qu'il désire.

    Or, lorsque la boîte de dialogue apparaît, c'est le dossier T:\MODELES\ qui s'affiche par défaut.

    Comment faire pour récupérer le dernier dossier utilisé par l'utilsateur avant de lancer la Macro, pour qu'il puisse s'afficher par défaut lorsqu'il voudra enregistrer le fichier s'il vous plaît ?

    Merci par avance.

    Cordialement.

  2. #2
    Expert éminent
    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
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Regarde du coté de "CurDir" (voir l'aide)

    Hervé.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Voilà, j'ai développé une Macro qui permet de remettre en forme un fichier Excel pour mes collègues.
    => Donc, sauf incompréhension, vous pouvez à ce moment là sauver le chemin du fichier de votre collègue, par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DestPath = ActiveWorkbook.path

  4. #4
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Moi je dirais plutot thisworkbook non? car il yaurais peut etre confusions justement car ce n'est pas le workbook actif , si tu utilise thisworkbook.path je pense que la confusion est impossible pour vba


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    save as thisworkbook.path & \" nom de fichier"

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Il faut toujours être prudents quand on veut utiliser ThisWorkbook et ActiveWorkbook. Il ne faut jamais oublier que toute macro d'un classeur ouvert peut agir sur n'importe quel autre classeur ouvert dans la même session d'Excel.

    ThisWorkbook désigne toujours le classeur qui contient la macro en cours.

    ActiveWorkbook désigne le classeur actif. Sauf si on utilise Activate pour le désigner explicitement, c'est plus souvent qu'autrement le dernier classeur ouvert. (C'est un des cas ou Activate devrait être utilisé, pour être sûr de viser à la bonne place.)

    Généralement, c'est plutôt recommandable d'utiliser le nom du classeur, ou un objet workbook spécifique, et c'est la même chose pour les objets sheet et Worksheet, dans les instructions VBA.

  6. #6
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Re,

    Alors je viens d'utiliser le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ' Début de la Macro
    sCurDir = CurDir
     
     
    ' Fin de la Macro
    ChDir (sCurDir)
    Mais lorsqu'on enregistre le fichier généré par la Macro, le dossier par défaut est celui du Modèle utilisé par le Macro, et non celui de l'utilisateur avant le lancement

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour

    Voir ci-dessous si ça peut vous aider ....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub SaveAs()
     
    Dim SavPath As String
    Dim FName As String
     
    SavPath = "C:\Users\bremondv\Documents\tmp\"
    FName = Application.GetSaveAsFilename(SavPath, "Excel files (*.xlsx), *.xlsx)", , "Sauvegarde ....")
     
     
        ActiveWorkbook.SaveAs Filename:=FName
     
    End Sub

  8. #8
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Bonjour,

    Merci pour ton aide.

    En fait la Macro ne doit pas effectuer l'enregistrement, c'est l'utilisateur qui enregistre le résultat où il le souhaite.

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Ben oui ..... d'où l'utilité du:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FName = Application.GetSaveAsFilename(SavPath, "Excel files (*.xlsx), *.xlsx)", , "Sauvegarde ...."
     
    End Sub
    ça positionne juste le path par défaut et laisse l'utilisateur en choisir un autre via l'interface graphique ....

  10. #10
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Bon j'ai fait comme tu m'as dit

    Pour ceux que ça intéresse, ChDir ne modifie que le dossier par défaut lors de l'ouverture d'un fichier, et non pour l'enregistrement.

    Voici le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ' Début de la Macro
    sCurDir = CurDir
    sCurDrive = Left(sCurDir, 2)
     
    .....
     
    ' Fin de la Macro
    ChDrive sCurDrive
    ChDir sCurDir
    sTemp = Application.GetSaveAsFilename(SavPath, "Excel files (*.xls), *.xls)", , "Sauvegarde ....")
    ActiveWorkbook.SaveAs Filename:=sTemp

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour
    Proposition d'amélioration (si l'utilisateur presse 'Esc'):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if sTemp <> "" Then
       ActiveWorkbook.SaveAs Filename:=sTemp
       Else: '...'
    End If

  12. #12
    Membre habitué
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Points : 197
    Points
    197
    Par défaut
    Merci

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

Discussions similaires

  1. Récupérer chemin dossier courant
    Par Kazumi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/04/2014, 21h37
  2. Récupérer le dossier courant d'un script VBS
    Par _xme_ dans le forum VBScript
    Réponses: 1
    Dernier message: 02/09/2009, 19h45
  3. récupérer le dossier courant de mon fichier ?
    Par Chikh001 dans le forum Langage
    Réponses: 2
    Dernier message: 09/09/2008, 13h27
  4. Récupérer le chemin du dossier courant
    Par root76 dans le forum Langage
    Réponses: 1
    Dernier message: 22/07/2007, 22h05
  5. [DOS] récupérer le chemin absolu du dossier courant
    Par seiryujay dans le forum Windows
    Réponses: 1
    Dernier message: 14/06/2006, 15h58

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