Gestion fichiers et dossier depuis macro Excel (erratum)

Résolu/Fermé
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020 - 13 déc. 2020 à 14:00
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020 - 13 déc. 2020 à 23:32
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
A voir également:

12 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
13 déc. 2020 à 15:53
Bonjour,

il faut tout d'abord boucler sur les fichiers d'un répertoire:

https://excel.developpez.com/faq/?page=FichiersDir#BoucleFichiers

ensuite intégrer à cette boucle le code pour déplacer les fichiers:

https://excel-malin.com/tutoriels/vba-tutoriels/manipulation-basique-des-fichiers-en-vba/

0
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 18:19
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
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 18:36
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
13 déc. 2020 à 18:42
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
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 18:54
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
13 déc. 2020 à 19:01
L'arborescence est déjà créé grâce à ton code que j'ai trouvé sur ce forum

Quel code???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 19:17
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
13 déc. 2020 à 19:38
Ce code est dépendant des cellules. Il n y a que toi qui peut l adapter!
0
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 20:11
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
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
13 déc. 2020 à 20:19
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
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 20:33
Je te remercie beaucoup pour avoir passé du temps à essayer de comprendre ma demande.
Bonne soirée

Sébastien
0
jee pee Messages postés 39706 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 mai 2024 9 269
Modifié le 13 déc. 2020 à 22:15
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
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 22:30
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
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 22:40
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
jee pee Messages postés 39706 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 mai 2024 9 269
Modifié le 13 déc. 2020 à 23:00
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
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 23:11
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
jee pee Messages postés 39706 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 10 mai 2024 9 269
Modifié le 13 déc. 2020 à 23:24
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
slapeyre Messages postés 11 Date d'inscription dimanche 13 décembre 2020 Statut Membre Dernière intervention 13 décembre 2020
13 déc. 2020 à 23:32
Yes !

Ca marche !

C'est génial !

Merci !
0