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 dans un répertoire tout juste créé


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Bonjour à tous et bravo pour ce forum très riche qui me permet de progresser en vba.

    Je suis débutant donc ma question est peut être très simple!


    Je travaille sur une macro qui me permet d'extraire des fichiers .imr.
    J'ai quasiment terminé mais il me reste une petite coquille que je vous explique.


    Une des étapes est de sauvegarder dans un nouveau fichier excel le fruit de l'extraction via la macro.
    J'arrive à enregistrer le fichier comme je le souhaite mais pas à l'endroit où je le souhaite.

    Dans mon programme, je fais créer le répertoire par l'utilisateur via une saisie sous msgbox. Le dossier se crée bien pas de problème.

    Quand je souhaite enregistrer le fichier excel dans ce nouveau répertoire, je bloque. En fait , le problème ets que je ne connais pas le chemin allant au nouveau répertoire puisqu'il vient d'etre créé.

    En terme de code j'ai cela

    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
    ' Création ou non du répertoire
    
    ' a est le nom donné par l'utilisateur
    
    Dim fs1 As Scripting.FileSystemObject
    Set fs1 = New Scripting.FileSystemObject
    ' teste si le repertoire existe
    If Not fs1.FolderExists("M:\Production Laminoirs\ati planning\SRP\" & a) Then
    ' création du repertoire si besoin
    fs1.CreateFolder ("M:\Production Laminoirs\ati planning\SRP\" & a)
    'tentative de récupération du chemin
    Dim repertoire_courant As String
    repertoire_courant = ("M:\Production Laminoirs\ati planning\SRP\" & a)
    
    End If
    Set fs1 = Nothing
    Dim date_sauv As String
    et pour la sauvegarde du fichier (c'est là qu'ol me manque un truc je pense)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim date_sauv As String
        date_sauv = InputBox("veuillez indiquer la date de sauvegarde: " & vbCrLf & "exemple: (AAAA-MM-JJ)")
     
        ActiveWorkbook.SaveAs ("Carnet " & date_sauv & ".xls"), FileFormat:= _
       xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ou dois je préciser le chemin, tout en sachant que c'est plus ou moins une variable?

    j'espère être assez clair

    merci à vous

    j'ai oublié de préciser

    j'ai lu les sujets sur les boites de dialogue pour sélectionner le répertoire, mais cette solution ne me convient pas (si je peux me permettre d'être exigeant )

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 23
    Points
    23
    Par défaut definir le chemin
    j'y connais pas encore grand chose. Moi j'aurais essayer ainsi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    repertoire_courant = ("M:\Production Laminoirs\ati planning\SRP\" & a)
     
    routedestination= repertoire_courant & "Carnet " & date_sauv & ".xls" 
     
    ActiveWorkbook.SaveAs Filename:=routedestination, FileFormat:= _
       xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    bonne journée

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Je te suggère d'oublier complètement FSO et d'aller voir ma réponse" 8 ici :
    http://www.developpez.net/forums/sho...d.php?t=512556
    en te precisant que rien ne t'empêche de mettre dans une variable générale le chemin du dossier créé, ce qui te permet ensuite d'utiliser ce chemin quand tu le souhaites.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Pour créer un répertoire, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Chdrive "d" 's 'il est à créer dans le volume D:\ par exemple
    Mkdir "D:\LeRep" 'pour créer le répertoire
         'ou si "LeRep" existe
    Mkdir "D:\LeRep\Le nouveau rep"
    Chdir "D:\LeRep\Le nouveau rep"  'pour se placer dans le répertoire créé (facultatif)
    ActiveWorkbook.SaveAs "D:\LeRep\Le nouveau rep" & "\" & "Carnet " & _
         date_sauv & ".xls", FileFormat:=xlNormal

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    merci de ces réponses rapides!

    je vais tester tout cela et je vous informe de mes progrès.

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par devvba Voir le message
    j'y connais pas encore grand chose. Moi j'aurais essayer ainsi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    repertoire_courant = ("M:\Production Laminoirs\ati planning\SRP\" & a)
     
    routedestination= repertoire_courant & "Carnet " & date_sauv & ".xls" 
     
    ActiveWorkbook.SaveAs Filename:=routedestination, FileFormat:= _
       xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    bonne journée

    alors cette solution ne fonctionne hélas pas
    en fait il me retourne le répertoire courant dans le nom du fichier au lieu de me placer le fichier dans le répertoire.

    merci quand même , je teste la suite

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Pour créer un répertoire, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Chdrive "d" 's 'il est à créer dans le volume D:\ par exemple
    Mkdir "D:\LeRep" 'pour créer le répertoire
         'ou si "LeRep" existe
    Mkdir "D:\LeRep\Le nouveau rep"
    Chdir "D:\LeRep\Le nouveau rep"  'pour se placer dans le répertoire créé (facultatif)
    ActiveWorkbook.SaveAs "D:\LeRep\Le nouveau rep" & "\" & "Carnet " & _
         date_sauv & ".xls", FileFormat:=xlNormal


    celle ci ne fonctionne pas non plus, en fait ça déclenche le deboggage et je n'ai pas encore trouvé la faute

    peux tu m'explique à quoi sert le & "\" & ?

    merci beaucoup

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonsoir,

    essaye directement ceci qui ne te créera que ce qui est nécessaire (et en silence) :

    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
    Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
     (ByVal hwnd As Long, ByVal pszPath As String, ByVal lngsec As Long) As Long
     
    Private Sub Command1_Click()
      Dim a As String, repertoire As String, date_sauv As String
      a = "toto"
      erreur_saisie = True
      While erreur_saisie
        date_sauv = InputBox("veuillez indiquer la date de sauvegarde: " & vbCrLf & "exemple: (AAAA-MM-JJ)")
        If IsDate(date_sauv) And date_sauv Like ("####-##-##") Then
          erreur_saisie = False
        End If
      Wend
      repertoire = "E:\Production Laminoirs\ati planning\SRP\" & a
      SHCreateDirectoryEx 0&, repertoire, 0&
      ActiveWorkbook.SaveAs repertoire & "\Carnet " & date_sauv & ".xls", FileFormat:= _
       xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    End Sub

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    je planche sur ta solution justement, merci de ce complément

  10. #10
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    cette solution revient à la situation initiale que j'avais

    c'est à dire que dans mon répertoire SRP le répertoire que tu appelles "toto" est créé et que mon fichier Excel est enregistré à côté et non dedans.

    au lieu d'avoir SRP\toto\carnet 2008-03-26.xls

    j'ai SRP\toto et SRP\carnet 2008-03-26.xls

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Que me racontes-tu là ?

    On va vite le savoir :

    Mets un

    juste avant ta ligne de saveas...

    et dis-nous ce que cela affiche !

    Edit et montre-nous (par copier-coller) ce que tu as écrit dans ta ligne de saveas !

  12. #12
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    ah suis je bête, mettre un msgbox est super comme indicateur (je suis confus d'être assisté à ce point)

    et il met le bon répertoire! c'est fou ça, j'ai donc une erreur ensuite

    je pense que ça vient de l'ajout du Carnet

    je teste et t'informe

    merci beaucoup

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    bon j' ai trouvé deux erreurs,

    la première (merci msgbox) était dans l'ordre des " & et autres fourberies!
    (un classique je suppose)

    la deuxième , beaucoup plus drôle est que je n'avais pas vu que je modifiais le code du fichier créé au lieu de modifier celui du fichier source!

    le gros bleu que je suis est tombé dans le panneau!


    Cette fois ça marche d'enfer!
    merci beaucoup de votre présence et de votre aide et surement à très bientôt pour d'autres questions

    c'est à moi d'indiquer mom problème comme résolu?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/04/2013, 15h17
  2. [XL-2003] Enregistrer un fichier dans le répertoire temporaire de windows
    Par peofofo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/01/2010, 07h05
  3. enregistrer deux fichier dans un seul fichier
    Par Bourak dans le forum Langage
    Réponses: 9
    Dernier message: 05/11/2005, 10h48
  4. rechercher d'un nom de fichier dans un répertoire
    Par yerome dans le forum Langage
    Réponses: 7
    Dernier message: 21/07/2005, 12h54
  5. Réponses: 4
    Dernier message: 22/12/2003, 12h12

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