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 !
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
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
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.
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
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
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
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!"
)
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
@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.
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
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