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
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
A voir également:
- Gestion fichiers et dossier depuis macro Excel (erratum)
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Si et excel - Guide
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Dossier appdata - Guide
12 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 déc. 2020 à 15:53
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/
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/
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
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 !
Je crois comprendre l'idée, je vais essayer de pondre un truc avec les infos que tu m'as données !
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
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 :
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 ?
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 ?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 déc. 2020 à 18:42
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:
@+ Le Pivert
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
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
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.
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.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 déc. 2020 à 19:01
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???
Quel code???
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
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
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
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 déc. 2020 à 19:38
13 déc. 2020 à 19:38
Ce code est dépendant des cellules. Il n y a que toi qui peut l adapter!
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
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.
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.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 déc. 2020 à 20:19
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
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
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
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
Bonne soirée
Sébastien
jee pee
Messages postés
40711
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 janvier 2025
9 505
Modifié le 13 déc. 2020 à 22:15
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
Je ne sais pas pourquoi tu veux faire cela sous excel ?
Moi je ferais un script windows, nommé par exemple
transfert.cmden 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!" )
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
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
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
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
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.
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.
jee pee
Messages postés
40711
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 janvier 2025
9 505
Modifié le 13 déc. 2020 à 23:00
Modifié le 13 déc. 2020 à 23:00
là il manque la dernière ligne avec
derrière rajouter une ligne avec
j'ai essayé avec ton nom de fichier, tu devrais au moins avoir :
et s'il n'existe pas déjà avant, la copie
)
derrière rajouter une ligne avec
pausepour 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...
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
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
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
jee pee
Messages postés
40711
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
23 janvier 2025
9 505
Modifié le 13 déc. 2020 à 23:24
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.
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
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
13 déc. 2020 à 23:32
Yes !
Ca marche !
C'est génial !
Merci !
Ca marche !
C'est génial !
Merci !