Extraire nom de fichier d'une extension spécifique [Résolu]

Nevda - 13 juin 2016 à 11:05 - Dernière réponse : Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention
- 14 juin 2016 à 09:56
Bonjour,

Je cherche à déplacer des fichiers .pdf d'un dossier vers un autre. Or, dans le dossier d'origine se trouvent plusieurs type de fichiers (.xls ou autre).
Je cherche donc à ce que le déplacement ne prenne en compte que les fichiers .pdf.

J'arrive à récupérer mes noms de fichiers seuls, avec ou sans l'extension... Mais je ne trouve pas comment, par exemple dans mon fichier texte contenant tous les noms de fichiers d'un dossier, supprimer tous les noms ne contenant pas .pdf.

Pouvez vous me guider?
Merci d'avance.
Cordialement,
Nevda
Afficher la suite 

Votre réponse

18 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 13 juin 2016 à 11:12
0
Merci
Bonjour,
- Tu as ouvert cette discussion dans le forum GENERAL Visual Basic (qui comprend plusieurs sous-forums)
Tant et si bien(mal ...) que nous ne savons pas sous quoi tu développes ! Or, la solution dépend de ton langage de développement, qui reste à préciser.
- nous apprécierions de voir le code que tu as écrit. Plusieurs méthodes existent et si nous devons corriger ton code (la méthode choisie) il nous faut le voir, ce code, non ?
Commenter la réponse de ucfoutu
0
Merci
Bonjour ucfoutu,

Je suis assez novice dans le domaine et c'est mon premier post sur le forum. Je code sur visual basic 2010.
Function nomdefichier(dossiersource As String) As String

        Dim fichier As String
        Dim car0 As String
        
        My.Computer.FileSystem.GetFileInfo(dossiersource)
        For Each fichier In IO.Directory.GetFiles(dossiersource)
            My.Computer.FileSystem.WriteAllText("C:\Users\win8\Desktop\nomfichier.txt", fichier, True)
        Next
        car0 = My.Computer.FileSystem.ReadAllText("C:\Users\win8\Desktop\nomfichier.txt")
        My.Computer.FileSystem.DeleteFile("C:\Users\win8\Desktop\nomfichier.txt")
        car0 = car0.Replace(dossiersource, " ")
        car0 = car0.Replace("\", "")
        Dim fichiers() As String = car0.Split(" ")
        nomdefichier = car0.Substring(1)
        My.Computer.FileSystem.WriteAllText("C:\Users\win8\Desktop\nomfichier.txt", nomdefichier, True)
    End Function


Souhaites-tu que je commente mon code?
Commenter la réponse de Nevda
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 13 juin 2016 à 11:31
0
Merci
1) Je déplace donc cette discussion vers le sous-forum VB.Net où elle aurait dû être ouverte. Prends s'il te plait dorénavant ce soin
2) je ne suis pas VB.Nettiste. Un VBNettiste te répondra donc.
J'observe toutefois que ton code ne parait pas du tout correspondre à ce que tu exposes dans ton premier message.
Attends donc le passage par là d'un VB.Nettiste.
Commenter la réponse de ucfoutu
cs_Le Pivert 5242 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 18 août 2018 Dernière intervention - 13 juin 2016 à 11:34
0
Merci
Bonjour,

Le plus simple c'est de filtrer par extension en listant le dossier dans une Listbox:

https://msdn.microsoft.com/fr-fr/library/wz42302f(v=vs.110).aspx
Commenter la réponse de cs_Le Pivert
Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention - 13 juin 2016 à 11:41
0
Merci
Bonjour,

Le deuxième paramètre formel "searchpattern" correspond-il à l'extension (dans mon cas .pdf) à entrer? Les extensions sont-elles prises en compte dans le titre du fichier?

Merci pour votre réponse.
Commenter la réponse de Nevda
Whismeril 11969 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 août 2018 Dernière intervention - 13 juin 2016 à 11:41
0
Merci
Bonjour,

C'est donc du Vb.net, la prochaine fois pour gagner du temps poste dans le bon forum.

Regarde https://msdn.microsoft.com/fr-fr/library/system.io.directory.getfiles(v=vs.110).aspx
Il y a une surcharge qui permet de mettre un pattern, *.pdf, par exemple.

Pour déplacer un fichier, il y a https://msdn.microsoft.com/fr-fr/library/system.io.file.move(v=vs.110).aspx
Commenter la réponse de Whismeril
Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention - 13 juin 2016 à 11:44
0
Merci
Bonjour,
Merci bien, cela répond à ma question à Le pivert.
Je vous tiens au courant.

ps : c'est mon baptême de forum, désolé de n'avoir su placer ce post dans le bon forum...
Commenter la réponse de Nevda
Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention - 13 juin 2016 à 12:02
0
Merci
Formidable, cela fonctionne.

Je n'ai jamais utilisé de listbox, je fonctionne en créant un fichier texte, puis en créant un tableau unidimensionnel avec .split pour étudier ce tableau (et donc les noms de fichier) avec des boucles for par exemple.
Est ce une bonne idée?

Cordialement
Commenter la réponse de Nevda
cs_Le Pivert 5242 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 18 août 2018 Dernière intervention - 13 juin 2016 à 12:02
0
Merci
Imports System.IO
Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Try
            ' Only get files that begin with the letter "c."
            Dim dirs As String() = Directory.GetFiles("C:\Users\Daniel\Documents\My eBooks\", "*.pdf")'adapter le chemin du dossier
            MsgBox("Nombre de fichiers PDF: " & CType(dirs.Length, MsgBoxStyle))
            Dim dir As String
            For Each dir In dirs
                ListBox1.Items.Add(dir)
            Next
        Catch
            MsgBox("The process failed: {0}", CType(e.ToString(), MsgBoxStyle))
        End Try
    End Sub
End Class
Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention - 13 juin 2016 à 14:32
Je n'ai pas bien saisi ce que faisait try...catch. Cela serait une sorte de gestion d'erreurs? Try/catch possède d'autres fonctions? Merci.
cs_Le Pivert 5242 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 18 août 2018 Dernière intervention > Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention - 13 juin 2016 à 14:37
Voir ceci:

https://msdn.microsoft.com/fr-fr/library/bb727317.aspx

Bonne continuation

@+ Le Pivert
Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention - 13 juin 2016 à 14:46
Très bien merci pour votre réactivité, j'ai compris. Bonne continuation.
Commenter la réponse de cs_Le Pivert
cs_Le Pivert 5242 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 18 août 2018 Dernière intervention - 13 juin 2016 à 12:14
0
Merci
NON

pourquoi passer par un fichier texte, alors qu'en entrant les fichiers dans une listBox, il suffit ensuite d'utiliser une fonction pour déplacer les fichiers en parcourant la listBox
Simple
Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention - 13 juin 2016 à 14:13
C'est vrai. Merci beaucoup!
Commenter la réponse de cs_Le Pivert
Whismeril 11969 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 août 2018 Dernière intervention - 13 juin 2016 à 12:20
0
Merci
On peut aussi parcourir le tableau dirs.

D'ailleurs tu peux remplacer la boucle
     For Each dir In dirs
                ListBox1.Items.Add(dir)
            Next


Par
ListBox1.DataSource = dirs
Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention - 14 juin 2016 à 08:06
Bonjour,
J'essaie de copier ces fichiers en parcourant dirs avec une boucle for. Or, le 2eme argument de My.computer.filesystem.copyfile est la destination du fichier vers lequel déplacer le fichier d'origine dont le nom est dans dirs(). Copyfile n'est elle pas la fonction à utiliser ? Ou bien dois-je modifier l'élément de dirs() au préalable ?
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim dirs As String() = IO.Directory.GetFiles("C:\Users\win8\Desktop", "*.pdf") 
        Dim dir As String
        For Each dir In dirs
            ListBox1.Items.Add(dir)
        Next
        For a As Byte = 0 To dirs.Length - 1
          My.Computer.FileSystem.CopyFile(dirs(a),????)
        Next
    End Sub
Whismeril 11969 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 18 août 2018 Dernière intervention - 14 juin 2016 à 09:54
Bonjour,
Tout en haut tu as écrit vouloir déplacer les fichiers.

Je t'ai répondu d'utiliser File.Move().
As tu au moins essayé?
Nevda 15 Messages postés lundi 13 juin 2016Date d'inscription 5 juillet 2016 Dernière intervention - 14 juin 2016 à 09:56
J'ai (ré...) essayé. J'ai réussi. Bonne journée...
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.