Gestion fichiers et dossier depuis macro Excel (erratum)

Résolu
slapeyre Messages postés 13 Statut Membre -  
slapeyre Messages postés 13 Statut Membre -
Ce post annule et remplace mon précédent post (Gestion fichiers et dossier depuis macro Excel) car je me suis trompé dans ma demande.

Bonjour à tous,

Si j'expose mon problème ici c'est que j'ai pas mal cherché avant et que je suis dans une impasse.

Voici ma demande :

J'ai un premier dossier nommé "_Rip" qui contient des fichiers musicaux au format FLAC.
Les fichiers musicaux tous stockés à la racine du dossier "_Rip" sont nommé de la sorte :

artiste - titre.flac
exemple : Yael Naїm - New Soul.flac

J'ai un second dossier nommé "_Collection" qui contient des dossiers avec les noms d'artistes, exemple :

Radiohead
The Black Eyed Peas
U2
etc.

Je voudrais que la macro du fichier Excel enregistré à la racine du dossier "_RIP" me déplace les fichiers FLAC enregistrés à la racine du dossier "_RIP" Vers le dossier "_Collection".
Exemple :

Le fichier : "Yael Naїm - New Soul.flac" situé à la racine du dossier "_RIP" devra être déplacé dans le dossier : "_Collection\Yael Naїm\"

Voilà !
Si quelqu'un à la solution, je suis preneur !

Merci à tous

Sébastien

12 réponses

  1. slapeyre Messages postés 13 Statut Membre
     
    Merci pour ta réponse.
    Je crois comprendre l'idée, je vais essayer de pondre un truc avec les infos que tu m'as données !
    0
  2. slapeyre Messages postés 13 Statut Membre
     
    Bon et bien je ne sais pas comment faire...
    Tu trouveras dans ce post le lien vers mon fichier Excel avec ton code qui permet de me créer l'arborescence des dossiers dans "\\DISKSTATION\music\_Collection".
    J'ai intégré dans ce fichier ce bout de code :

    Sub BoucleFichiers()
    Dim Chemin As String, Fichier As String

    'Définit le répertoire contenant les fichiers
    Chemin = "\\DISKSTATION\music\_RIP\"

    'Boucle sur tous les fichiers FLAC du répertoire.
    Fichier = Dir(Chemin & "*.FLAC")
    'Utilisez la syntaxe suivante pour boucler sur tous les types de fichiers :
    'Fichier = Dir(Chemin & "*.*")

    Do While Len(Fichier) > 0
    'écrit le résultat dans la fenêtre d'exécution (Ctrl+G).
    Debug.Print Chemin & Fichier
    Fichier = Dir()
    Loop
    End Sub


    Ensuite, je ne sais pas comment procéder.

    https://www.cjoint.com/c/JLnrDptxLkY

    Vu que je suis très poli ????, peux-tu m'aider STP ?
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      je ne peux pas créer l'arborescence, il n'y a que toi qui la connaisse!

      Voici le code à adapter:

      Option Explicit
      Sub BoucleFichiers()
          Dim Chemin As String, Fichier As String
       Dim Destination As String
          'Définit le répertoire contenant les fichiers
          Chemin = "C:\_RIP\" 'adapter chemin
       'Définit le répertoire de destination
       Destination = "C:\_Collection\Yael Naïm\" 'adapter chemin
          'Boucle sur tous les fichiers xls du répertoire.
          Fichier = Dir(Chemin & "*.flac")
          'Utilisez la syntaxe suivante pour boucler sur tous les types de fichiers :
          'Fichier = Dir(Chemin & "*.*")
       Do While Len(Fichier) > 0
              'écrit le résultat dans la fenêtre d'exécution (Ctrl+G).
              'Debug.Print Chemin & Fichier
              Fichier = Dir()
              FileCopy Chemin & Fichier, Destination & Fichier ' copie
          Kill Chemin & Fichier 'supprime
          Loop
      End Sub
      


      @+ Le Pivert
      0
  3. slapeyre Messages postés 13 Statut Membre
     
    Merci pour ta réponse.
    Je vais tester ton code.
    Par contre, je n'ai pas du être assez précis ou clair dans mon explication.
    L'arborescence est déjà créé grâce à ton code que j'ai trouvé sur ce forum.
    Ce que je voudrai, c'est simplement déplacer les fichiers FLAC d'un dossier source où ils sont tous enregistré à la racine du dossier vers un dossier destination qui contient une arborescence.

    Exemple, j'ai ce fichier enregistré à la racine du dossier source :
    Yael Naїm - New Soul.flac

    Je voudrais qu'il soit automatiquement déplacé dans le sous dossier "Yael Naїm" du dossier destination. "Yael Naїm" est l'artiste.

    Dossier source : "\\DISKSTATION\music\_RIP\"
    Dossier destination :" \\DISKSTATION\music\_Collection"

    Le dossier destination contient l'ensemble des sous dossiers correspondant aux noms des artistes.
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      L'arborescence est déjà créé grâce à ton code que j'ai trouvé sur ce forum

      Quel code???
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. slapeyre Messages postés 13 Statut Membre
     
    celui-ci

    Sub CreationDossiers()
    On Error Resume Next
    i = 1
    While Cells(i, 1).Value <> ""
    MkDir ActiveWorkbook.Path & "\" & Cells(i, 1).Value
    For j = 2 To 7
    MkDir ActiveWorkbook.Path & "\" & Cells(i, 1).Value & "\" & Cells(i, j).Value
    Next j
    i = i + 1
    Wend
    End Sub
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Ce code est dépendant des cellules. Il n y a que toi qui peut l adapter!
      0
  6. slapeyre Messages postés 13 Statut Membre
     
    lol
    Bon je pense que c'est un dialogue de sourd :) je ne dois pas être clair dans ma demande.
    Je te remercie en tout de l'intérêt que tu portes à mon cas.

    On va mettre de côté le code de ma précédente réponse et tout ce que tu as vu/lu plus haut.

    Je vais essayer d'exposer ma demande de façon plus générique.

    Soit 2 dossiers :

    un dossier source
    un dossier destination

    Dans le dossier source il y a des fichiers en vrac à la racine de ce dossier, nommés ainsi :

    artiste - titre.flac

    dans le dossier destination il y a une arborescence déjà crée qui comporte l'ensemble des artistes que l'on peut trouver dans les titres de musique au format flac qu'il y a dans le dossier source.
    Je voudrais déplacer les fichiers du dossier source vers un des sous dossier du dossier destination en fonction du nom de l'artiste présent à gauche du symbole "-" présent dans l'ensemble des fichiers du dossier source.

    Exemple :

    Le fichier "Yael Naїm - New Soul.flac" présent à la racine du dossier source devra être déplacé dans le dossier "Yael Naїm" (déjà créé) du dossier destination

    Le fichier "Robbie Williams - Angels.flac" présent à la racine du dossier source devra être déplacé dans le dossier "Robbie Williams" (déjà créé) du dossier destination

    etc.
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Je ne peux pas t aider plus
      Je t ai donné le code pour déplacer des fichiers d un dossier a un autre
      Fais un autre post cela dépasse mes compétences
      A + Le Pivert
      0
  7. slapeyre Messages postés 13 Statut Membre
     
    Je te remercie beaucoup pour avoir passé du temps à essayer de comprendre ma demande.
    Bonne soirée

    Sébastien
    0
  8. jee pee Messages postés 31885 Date d'inscription   Statut Modérateur Dernière intervention   9 980
     
    Bonjour,

    Je ne sais pas pourquoi tu veux faire cela sous excel ?

    Moi je ferais un script windows, nommé par exemple
    transfert.cmd
    en changeant les 2 répertoires de traitement :
    @echo off
    chcp 65001> nul      &rem code page pour accents
    set ORIG=\\NASINA\Temp\Musique\_Rip\
    set DEST=\\NASINA\Temp\Musique\_Collection\
    setlocal EnableDelayedExpansion    &rem utilisé pour gérer les variables entre ! dans boucle for
    for %%F in (%ORIG%*.flac) do (
       set X=%%~nxF
       set Y=!X:* - =!
       call set Z=%%X: - !Y!=%%
       echo !X! // !Z! // !Y! 
       if not exist "%DEST%!Z!\" mkdir "%DEST%!Z!\"
       if not exist "%DEST%!Z!\!Y!" copy "%ORIG%!X!" "%DEST%!Z!\!Y!"
    )


    0
  9. slapeyre Messages postés 13 Statut Membre
     
    Bonsoir et merci pour ton script.
    Je voulais gérer les fichiers sous Excel par soucis d'homogénéité car je génère déjà les dossiers depuis une macro.
    De plus, j'ai la liste de l'ensemble de mes fichiers sous Excel.
    Par soucis de simplicité, j'envisageai de tout gérer du même endroit.
    Ceci dit, ton script (que je n'ai pas encore essayé semble répondre à mes attentes.
    Merci d'avoir pris le temps de me répondre
    0
  10. slapeyre Messages postés 13 Statut Membre
     
    je viens de tester et il ne se passe rien.

    voilà le script modifié avec les bons chemins :

    @echo off
    chcp 65001> nul &rem code page pour accents
    set ORIG=\\DISKSTATION\music\_RIP\
    set DEST=\\DISKSTATION\music\_Collection\
    setlocal EnableDelayedExpansion &rem utilisé pour gérer les variables entre ! dans boucle for
    for %%F in (%ORIG%*.flac) do (
    set X=%%~nxF
    set Y=!X:* - =!
    call set Z=%%X: - !Y!=%%
    echo !X! // !Z! // !Y!
    if not exist "%DEST%!Z!\" mkdir "%DEST%!Z!\"
    if not exist "%DEST%!Z!\!Y!" copy "%ORIG%!X!" "%DEST%!Z!\!Y!"

    Pour rappel les fichiers à déplacer sont nommés de la sorte :

    artiste - titre.flac
    exemple : Yael Naїm - New Soul.flac

    Ce fichier sera à déplacer dans le dossier "Yael Naїm" du dossier de destination.
    0
    1. jee pee Messages postés 31885 Date d'inscription   Statut Modérateur Dernière intervention   9 980
       
      là il manque la dernière ligne avec
      )


      derrière rajouter une ligne avec
      pause
      pour conserver l'affichage.

      j'ai essayé avec ton nom de fichier, tu devrais au moins avoir :
      Yael Naїm - New Soul.flac // Yael Naїm // New Soul.flac
      Appuyez sur une touche pour continuer...

      et s'il n'existe pas déjà avant, la copie
      Yael Naїm - New Soul.flac // Yael Naїm // New Soul.flac
      1 fichier(s) copié(s).
      Appuyez sur une touche pour continuer...
      0
  11. slapeyre Messages postés 13 Statut Membre
     
    Avec ce code là, voilà ce qu'il se passe :

    1/ ça ne déplace pas le fichier mais ça le copie. Il faudrait le déplacer et non le copier
    2/ ça copie le fichier en ne gardant que la partie droite du "-" soit le titre
    Je me retrouve avec ce fichier "New Soul.flac" dans le dossier "Yael Naїm" alors que le fichier devrait garder son nom, à savoir : "Yael Naїm - New Soul.flac"
    On progresse !

    Voici le code que j'ai corrigé avec tes indications

    @echo off
    chcp 65001> nul &rem code page pour accents
    set ORIG=\\DISKSTATION\music\_RIP\
    set DEST=\\DISKSTATION\music\_Collection\
    setlocal EnableDelayedExpansion &rem utilisé pour gérer les variables entre ! dans boucle for
    for %%F in (%ORIG%*.flac) do (
    set X=%%~nxF
    set Y=!X:* - =!
    call set Z=%%X: - !Y!=%%
    echo !X! // !Z! // !Y!
    if not exist "%DEST%!Z!\" mkdir "%DEST%!Z!\"
    if not exist "%DEST%!Z!\!Y!" copy "%ORIG%!X!" "%DEST%!Z!\!Y!"
    )
    pause

    Merci une fois de plus de m'aider
    0
    1. jee pee Messages postés 31885 Date d'inscription   Statut Modérateur Dernière intervention   9 980
       
      C'est normal pour la copie, je suis prudent, un move avec des noms mal constitués et le fichier est perdu.

      Et j'ai compris que tu ne voulais que la chanson en final, pas le nom original.

      @echo off
      chcp 65001> nul      &rem code page pour accents
      set ORIG=\\NASINA\Temp\Musique\_Rip\
      set DEST=\\NASINA\Temp\Musique\_Collection\
      setlocal EnableDelayedExpansion    &rem utilisé pour gérer les variables entre ! dans boucle for
      for %%F in (%ORIG%*.flac) do (
         set X=%%~nxF
         set Y=!X:* - =!
         call set Z=%%X: - !Y!=%%
         echo !X! // !Z! // !Y! 
         if not exist "%DEST%!Z!\" mkdir "%DEST%!Z!\"
         if not exist "%DEST%!Z!\!X!" move "%ORIG%!X!" "%DEST%!Z!\"
      )
      pause
      0
  12. slapeyre Messages postés 13 Statut Membre
     
    Yes !

    Ca marche !

    C'est génial !

    Merci !
    0