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 :

Comment utiliser ObjFSO pour déplacer des fichiers d'un répertoire à un autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Par défaut Comment utiliser ObjFSO pour déplacer des fichiers d'un répertoire à un autre
    Bonjour,

    Je développe une macro pour créer un indicateur mensuel.
    Les fichiers sources utilisés par la macro sont dans le même répertoire que le "FichierMacro".

    Mon besoin : A la fin du process, je voudrais déplacer les fichiers sources dans un nouveau répertoire que la macro crée ("FolderDuMois"), pour archiver les données d'entrée

    Ma tentative : Après parcours des solutions proposées dans les différents forum j'ai choisi d'utiliser la fonction ObjFSO.CopyFile pour copier les fichiers dans un premier temps (mais sans bien comprendre son fonctionnement)

    Le problème :
    Un message d'erreur apparait à la dernière ligne de l'étape 4: ObjFSO.CopyFile Source, Destination : "Erreur d'exe 5 _Argument ou appel de procédure incorrect"
    Ci-dessous le code


    Pourriez-vous m'aider à mettre en œuvre cette solution ?
    (Quand cela fonctionnera, je remplacerai par objOFS.MoveFile Source, Destination)

    Remerciements,
    Marino

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Sub TransfertDansFolderMois()
    Application.ScreenUpdating = False
     
    'Etape 1 : Déclarer les nom de fichiers sans chemin d'accès, car tous sont dans le même répertoire au départ
     
    'Dim Chemin As string   -> déclaré en variable publique
    Dim NomFichierMacro As String
    Dim FichierSource1 As String
    Dim FichierSource2 As String
    Dim FichierSource3 As String
    Dim FichierSource As String
     
    Chemin = ThisWorkbook.Path & "\"
    NomFichierMacro = ThisWorkbook.Name
    FichierSource1 = "2019-02-26_-_fichier_de_suivi_de_lots_2019.xlsx"
    FichierSource2 = "2019-02-26 - OOS - Product Info.csv"
    FichierSource3 = "2019-02-26 - Suivi Invalidités Laboratoire CQ Craponne.xlsx"
     
    'Etape 2 : Déclarer le fichier Workbooks et feuille et définir le nom du nouveau Répertoire
    Dim FichierMacro As Workbook
    Set FichierMacro = ThisWorkbook
    Set Graphes = FichierMacro.Sheets("Graphes")
    Dim Mois As String
    Mois = Graphes.Cells(2, 2).Value
     
    Dim FolderDuMois As String
    FolderDuMois = Chemin & Mois & " - RFT"
     
    'Etape 3 : Tester si le nouveau repertoire exise déjà et le créer s'il n'existe pas
        If Dir(FolderDuMois, vbDirectory) <> "" Then   'le fichier du mois existe, donc inutile de le créer
        MsgBox "Le répertoire_" & FolderDuMois & "_existe déjà", vbOKOnly + vbInformation, "Macro : TransfertDansFolderMois"
        Else
        MkDir (Chemin & Mois & " - RFT")  'La fonction MkDir ne peut être utiliser que pour créer un répertoire sans sous répertoire
        End If
     
    'Etape 4 : Déplacer les fichiers sources dans le répertoire du mois
    Dim ObjFSO
    Dim Origine As String
    Dim Destination As String
     
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
     
    Origine = Chemin & FichierSource
    Destination = FolderDuMois & FichierSource
     
    FichierSource = FichierSource1
    ObjFSO.CopyFile Source, Destination  'Erreur d'exe 5 _Argument ou appel de procédure incorrect
     
    End Sub

  2. #2
    Membre confirmé
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2016
    Messages : 66
    Par défaut
    Bonjour,

    Après une pause , j'ai corrigé mon code "toute seule" !
    (ou plutôt avec l'aide de l'exemple de Chewi (2006): https://www.developpez.net/forums/d2...-d-repertoire/ )

    J'avais mélangé noms de répertoire et chemin de répertoire.

    Ci-joint le code qui fonctionne.
    Pour résumer, son objectif est de déplacer des fichiers (les sources utilisées pour faire un indicateur) dans un répertoire d'archivage nommé avec le nom du Mois de l'indicateur (Etape 4)
    Au préalable : Tester si ce répertoire d'archivage existe déjà - Si non le créer (Etape 2)


    Merci à tous, contributeurs éclairés et administrateurs de ce site extrêmement utile !

    Cordialement,
    Marino

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Sub TransfertDansFolderMois()
    Application.ScreenUpdating = False
     
    'Etape 1 : Déclarer les chemins des Folders - Définir le nom du nouveau Répertoire et sont chemin
     
    Dim CheminFolderOrigine As String
    CheminFolderOrigine = ThisWorkbook.Path & "\"
    Dim CheminFolderDestination As String
    'CheminFolderDestination est défini plus bas
     
    Dim FichierMacro As Workbook
    Set FichierMacro = ThisWorkbook
    Set Graphes = FichierMacro.Sheets("Graphes")
     
    Dim Mois As String
    Dim NomFolderDuMois As String
    Mois = Graphes.Cells(2, 2).Value
    NomFolderDuMois = CheminFolderOrigine & Mois & " - RFT"
    CheminFolderDestination = NomFolderDuMois & "\"
     
    'Etape 2 : Tester si le nouveau repertoire exise déjà et le créer s'il n'existe pas
        If Dir(NomFolderDuMois, vbDirectory) <> "" Then   'le fichier du mois existe, donc inutile de le créer
    MsgBox "Le répertoire_" & NomFolderDuMois & "_existe déjà", vbOKOnly + vbInformation, "Macro : TransfertDansFolderMois"
        Else
    MkDir (CheminFolderOrigine & Mois & " - RFT")  'La fonction MkDir ne peut être utiliser que pour créer un répertoire sans sous répertoire
        End If
     
    'Etape 3 : Déclarer les fichier sources à déplacer
    Dim FichierSource1 As String
    Dim FichierSource2 As String
    Dim FichierSource3 As String
     
    FichierSource1 = "2019-02-26_-_fichier_de_suivi_de_lots_2019.xlsx"
    FichierSource2 = "2019-02-26 - OOS - Product Info.csv"
    FichierSource3 = "2019-02-26 - Suivi Invalidités Laboratoire CQ Craponne.xlsx"
     
    'Etape 4 : Déplacer les fichiers sources dans le répertoire du mois
    Dim FichierSource As String
    Dim ObjFSO
    Set ObjFSO = CreateObject("Scripting.FileSystemObject")
     
    FichierSource = FichierSource1
    ObjFSO.MoveFile (CheminFolderOrigine & FichierSource), CheminFolderDestination
    FichierSource = FichierSource2
    ObjFSO.MoveFile (CheminFolderOrigine & FichierSource), CheminFolderDestination
    FichierSource = FichierSource3
    ObjFSO.MoveFile (CheminFolderOrigine & FichierSource), CheminFolderDestination
     
    Application.ScreenUpdating = True
     
    End Sub

Discussions similaires

  1. [SSH2] Utiliser scp pour gérer des fichiers distants
    Par cybercandyman dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 12/11/2007, 17h03
  2. utiliser ls et xargs pour déplacer des fichiers
    Par walrus_55 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 06/04/2007, 10h22
  3. Problème pour déplacer des fichiers
    Par kurul1 dans le forum C++Builder
    Réponses: 16
    Dernier message: 07/03/2007, 16h25
  4. comment utiliser Notepad pour modifier un fichier texte?
    Par moon13_698 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 06/05/2006, 15h41
  5. Réponses: 2
    Dernier message: 27/04/2006, 16h45

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