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 :

Créer dossier pour chaque fichier généré


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2012
    Messages : 48
    Par défaut Créer dossier pour chaque fichier généré
    Bonjour,

    Je dispose d'une macro qui génère un fichier par ligne dans une base de données.

    En l'état actuel des choses, je crée un dossier "général" dans lequel tous les fichiers sont stockés dedans.
    Seulement, j'aimerais que chaque fichier soit stockés dans un dossier propre afin d'y mettre d'autres fichiers par la suite:

    Structure actuelle : Dossier principal/(Fichier1, Fichier2, ....)
    Structure désirée: Dossier principal/
    Dossier Fichier 1 / Fichier 1
    Dossier Fichier 2 / Fichier 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Voici la partie du code s'occupant de la sauvegarde:
             If Dir(Path & "\Output" & "\Main_Folder" & "\rID_fichier.value", vbDirectory) <> "" Then
     
                wkbTemp.SaveAs Filename:=Path & "\Output" & "\Main_Folder\" & "rID_fichier.value\" & rNomFichier.Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
                wkbTemp.Close SaveChanges:=False
            Else
                FSO.CreateFolder (Path & "\Output" & "\Main_Folder" & "\rID_fichier.value")
                wkbTemp.SaveAs Filename:=Path & "\Output" & "\Main_Folder\" & "rID_fichier.value\" & rNomFichier.Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
                wkbTemp.Close SaveChanges:=False
            End If
    J'obtiens l'erreur "Path not found". Sauriez-vous me dire ce qui est faux?
    Merci beaucoup pour votre aide

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    ne confondrais tu pas des variable representant un string et un code ecrit en dur ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Dir(Path & "\Output" & "\Main_Folder" & "\rID_fichier.value", vbDirectory) <> "" Then
    n'aurais tu pas voulu ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Dir(Path & "\" & Output & "\" & Main_Folder & "\" & rID_fichier.value, vbDirectory) <> "" Then
    et pareil pour les lignes qui suivent ???????

    perso je le ferais en debut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    dossier=Path & "\" & Output & "\" & Main_Folder & "\" & rID_fichier.value
    if dir(dossier,vbdirectpory)="" then 
     
    'sauvegarde avec dossier et"\" & nom.extention
    else
    'creation dossier
    mkdir dossier
    'sauvegarde avec dossier et"\" & nom.extention
    end if
    encore faut il que les variables path,outpout,Main_folder, soient renseignées
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2012
    Messages : 48
    Par défaut
    Bonjour Patrick,

    Merci pour ta réponse.

    Alors j'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Dir(Path & "\" & Output & "\" & Main_Folder & "\" & rID_fichier.value, vbDirectory) <> "" Then
    Mais j'obtiens la même erreur.
    Pardon, j'aurais du préciser:

    Output est un dossier existant et "Main_Folder" just un dossier unique à créer alors que "rID_fichier.value" est le contenu d'un range, déclaré au début du code.
    J'ai également essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Dir(Path & "\Output" & "\Main_Folder" & rID_fichier.value, vbDirectory) <> "" Then
    Et j'obtiens toujours la même erreur.
    As-tu une idée? Je deviens fou !

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    tu n'a qua fair un affichage dans debug et tu vois si le chemin est bon c'est tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print Path & "\Output & "\Main_Folder & "\" & rID_fichier.value
    et modifie selon le resultat
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2012
    Messages : 48
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    tu n'a qua fair un affichage dans debug et tu vois si le chemin est bon c'est tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debug.print Path & "\Output & "\Main_Folder & "\" & rID_fichier.value
    et modifie selon le resultat

    Bonjour Patrick,

    Alors j'ai fais ça et cela fonctionne jusqu'a la création du sous-dossier mais ensuite, sauver le fichier ne fonctionne pas.
    (A savoir que : Output et Main folder sont des dossiers déjà existants et rID_fichier.value & rNomFichier.Value sont des range déclarés qui contiennent des valeurs dans une feuille excel !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    sFoldername = (Path & "\Output" & "\Main Folder")
                If Dir(sFoldername & "\" & rID_fichier.value, vbDirectory) <> "" Then
     
                wkbTemp.SaveAs Filename:=sFoldername & "\" & rID_fichier.value & "\" & rNomFichier.Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
                wkbTemp.Close SaveChanges:=False
            Else
                FSO.CreateFolder (sFoldername & "\" & rID_fichier.value)
                wkbTemp.SaveAs Filename:=sFoldername & "\" & rID_fichier.value & "\" & rNomFichier.Value, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
                wkbTemp.Close SaveChanges:=False
            End If
    J'ai essayé le debug print mais rien à faire, ça bug au moment du "SaveAs" alors que le sous dossier se crée corretement... J'ai essayé d'enlever la partie - & "\" & et le fichier s'est sauvé mais pour une raison que j'ignore, on dirait qu'il ne rentre pas dans le dossier pour sauvegarder. J'ai même essayé un texte "d" à la place du nom du fichier mais rien n'y fait....Aurais-tu une idée de pourquoi?
    Merci !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2012
    Messages : 48
    Par défaut
    Bonjour à tous,

    C'est résolu.

    Pour ceux comme moi qui un jour auront ce problème : Vérifiez que le nom de vos dossiers/fichiers ne contiennent pas d'espace. VBA les enlève automatiquement quand il sauvegarde mais si votre valeur source contient l'espace, il ne sait pas ou sauver donc boom : erreur !

    Bonne journée.

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

Discussions similaires

  1. [Batch] Lancer une commande pour chaque fichier d'un dossier
    Par sevyc64 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 26/10/2017, 08h49
  2. [Batch] Créer un dossier pour chaque fichier de chaque dossier d'un rep
    Par aghilass dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 07/02/2016, 05h47
  3. Réponses: 6
    Dernier message: 26/12/2015, 20h01
  4. [Batch] executer une commande pour chaque fichier d'un répertoire
    Par Louis-Guillaume Morand dans le forum Windows
    Réponses: 4
    Dernier message: 10/12/2007, 18h47
  5. Réponses: 1
    Dernier message: 17/05/2005, 20h50

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