• Initiateur de la discussion Initiateur de la discussion youki
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

youki

XLDnaute Occasionnel
Bonjour, je souhaites trier des fichiers dans des dossiers (10 dossiers maxi) selon leur nom de fichiers.
Les fichiers sont du style zzuuyyjjaa.igc je désire ne lire que les 2 dernières lettres du nom de fichier et les rediriger en fonction. La fonction reste active tant qu'il reste des fichiers *.igc dans le dossier courant.

Pensez vous cela réalisable en excel ou vaut il mieux creer un batch? (*.bat)
 
Re : Excel ou batch?

Et bien, je suis pas du tout pro en vba encore moins quand il s'agit de gerer des dossiers et fichier, mais je me permet de préciser.
Je pensais que avec:
Un boucle while => qui vérifie la présence de *.igc.
on recupere le nom du fichier
on decortique le nom pour ne récuperer que les deux dernière lettres ou chiffres
on redirige (moveFile()??)(avec une suite de if (car 10 dossiers seulement)) les fichiers en fct de leur nom [exemple if fin_de_nom=2A rediriger vers dossier[dossier_X]].
fin des if
fin de la boucle.
 
Re : Excel ou batch?

Rebonjour youki,

Je te propose le code suivant, dis-moi si ça fonctionne ou si tu ne comprend pas comment ça marche.

Code:
Sub DéplaceFichiers(DossierSource As String)
Dim FS As FileSearch, i As Long, DernièresLettres As String
    Set FS = Application.FileSearch
    With FS
    .Filename = "*.igc"
    .LookIn = DossierSource
    '.SearchSubFolders=True 'Seulement si tu veux rechercher dans les sous-dossiers
    .Execute
        For i = 1 To .FoundFiles.Count
            DernièresLettres = UCase(Mid(.FoundFiles(i), Len(.FoundFiles(i)) - 5, 2))
            NomFichier = Right(.FoundFiles(i), Len(.FoundFiles(i)) - InStrRev(.FoundFiles(i), "\"))
                Select Case DernièresLettres
                    Case "AA"
                    Name (.FoundFiles(i)) As ("c:\DossierAA\" & NomFichier)
                    Case "BB"
                    Name (.FoundFiles(i)) As ("c:\DossierBB\" & NomFichier)
                    Case Else
                    MsgBox "Cas pas prévu"
                End Select
        Next i
    End With
End Sub

Sub LanceDéplacement()
    Call DéplaceFichiers("C:\temp")
End Sub
 
Re : Excel ou batch?

Je souhaite que chaque fichier détecter soit déplacé vers le dossier, ton systeme marche impec (reconnaissance des derniers termes...) mais il m'ajoute le nom du dossier au début du nom de fichier et ne le déplace pas. En tout cas déjà merci pour cela (je recherche de mon coté avec un move(file) ya moyen.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
20
Affichages
3 K
Retour