|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
Inscription : septembre 2010 Messages : 8 ![]() |
Bonjour, je suis débutant en vba et mon pb est celui ci .
Je cherche a classer( déplacer ) des fichiers contenus dans un repertoire source et les ranger dans differents répertoire dont la syntaxe de leur nom contient une partie du nom du fichier.Dans le repertoire source j'ai 1200 fichiers nommés differement Exemple: Dans C:\Source j'ai Fiche_technique_AAA,xls manuel_utilisateur_AAA.doc Fiche_technique_BBB.xls manuel_utilisateur_BBB.doc photos_BBB.jpg Fiche_technique_CCC.xls etc... et je cherche a deplacer tous ces fichiers quelque soit leur extension vers le répertoire contenant une partie de leur nom. Fiche_technique_AAA,xls manuel_utilisateur_AAA.doc devra etre classé dans le repertoire nommé A soit dans c:\Mes documents\A Fiche_technique_BBB.xls manuel_utilisateur_BBB.doc photos_BBB.jpg devra etre classé dans le repertoire nommé B soit dans c:\Mes documents\B etc... J'ai cherché sur le net et je pensais passer par une commande Filetsystem.MoveFile. Pouvez vous m'aider .Merci |
|
|
01
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
As-tu regardé ce cours ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
10
|
|
|
#3 | ||
Inscription : septembre 2010 Messages : 8 ![]() |
Je vais essayer ce code
Code :
Pouvez vous me dire si je suis dans la bonne direction pour resoudre ce pb. Merci |
||
|
|
01
|
|
|
#4 | ||
|
Membre Expert
![]() Hervé SilveInscription : août 2010 Messages : 774 ![]() |
Bonjour,
Une solution, tes fichiers sont tous dans le même dossiers (enfin, je pense), tu veux qu'ils soient regroupés par le nom de l'appareil (sans prise en compte de l'extension) dans des dossiers comportant une partie du nom de l'appareil. Dans la proc ci-dessous, les dossiers sont créés avec les trois dernières lettres du nom des fichiers (il faut adapter le code pour plus de lettres), exemple : Le dossier "destination" est C:\Source\ comme les sous-dossiers n'existent pas, le premier dossier créé sera le dossier AAA et dans ce dossier seront déplacés les fichiers : Fiche_technique_AAA,xls manuel_utilisateur_AAA.doc puis un autre dossier sera créé avec le nom BBB où seront ensuite déplacés les fichiers suivants : Fiche_technique_BBB.xls manuel_utilisateur_BBB.doc et ainsi de suite... Lance la proc "Deplacer" mais fait un test avec les copies de quelques fichiers dans un dossier test pour voir le résultat. Tu crées un dossier "Test" dans C:\ où tu copie quelques fichiers pour voir comment sont créés les dossiers et déplacés les fichiers et si ceci te convient, tu lance la proc avec comme dossier de destination "C:\Source\" Code :
|
||
|
|
10
|
|
|
#5 |
Inscription : septembre 2010 Messages : 8 ![]() |
Fabuleux
Bonjour et merci theze la macro range bien les fichiers dans les dossiers ou crée les dossier absent. En augmentant la valeur 3, 3 dans cette partie de code Code :
(Mid(Fichier.Name, InStrRev(Fichier.Name, ".") - 3, 3))) Est ce que je me trompe ou pas ? Quand Tu ecris Mid dans le code tu passes bien par une fonction STXT()? Je m'explique la les dossiers sont crées a partir du suffixe du nom de fichiers ( a partir de la droite) . s dossiers sont crées a partir du suffixe du nom de fichiers ( a partir de la droite) . Je souhaite que les dossiers soient crées a partir du préfixe du nom de fichier ( a partir de la gauche) ou a partir du deuxieme mot du nom de fichiers quelque soit le nombre de caractère ( dans mon cas cela sera soit "fiche", soit "technique"). Je pense qu'il faudra dans le premier cas lister la chaine de caractère avant le premier underscore . Et dans le deuxieme cas chercher le premier underscore, chercher le deuxieme underscore et lister le nombre de caractère compris entre les deux. Ceci afin de pouvoir définir une syntaxe particulière a Suis je dans la bonne voie |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Hervé SilveInscription : août 2010 Messages : 774 ![]() |
Bonjour,
Désolé du retard. Effectivement, la fonction Mid est identique à la fonction Excel STXT. retourne la position du point en commençant la recherche par la droite. Code :
Mid(Fichier.Name, InStrRev(Fichier.Name, ".") - 3, 3) Si tu veux trouver le mot "technique", utilise ceci (Instr recherche le premier tiret bas en partant de la gauche) : Code :
Mid(Fichier.Name, InStr(Fichier.Name, "_") + 1, 9) Hervé. |
|
|
10
|
|
|
#7 |
Inscription : septembre 2010 Messages : 8 ![]() |
Bonjour Un grand merci a toi thèze
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com