VBA lire un disque USB externe
tontonbruno
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
tontonbruno Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
tontonbruno Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je lis en VBA Excel un fichier .txt contenant une liste de fichiers ( Path complet + nom ). Pour chaque ligne du fichier je fais :
Cela fonctionne très bien quand les fichiers de la liste sont sur un de mes HDD internes.
Mais dès que le fichier est sur un disque USB externe, ça ne fonctionne plus.
Le test " If oFSO.FileExists(monfic) Then " n'est plus vérifié.
Quelqu'un pourrait-il me dire pourquoi ?
Merci à vous.
Je lis en VBA Excel un fichier .txt contenant une liste de fichiers ( Path complet + nom ). Pour chaque ligne du fichier je fais :
While Not EOF(F) Line Input #F, ContenuLigne Set oFSO = New Scripting.FileSystemObject If oFSO.FileExists(monfic) Then Set oFILISTE = oFSO.GetFile(monfic) End If ...
Cela fonctionne très bien quand les fichiers de la liste sont sur un de mes HDD internes.
Mais dès que le fichier est sur un disque USB externe, ça ne fonctionne plus.
Le test " If oFSO.FileExists(monfic) Then " n'est plus vérifié.
Quelqu'un pourrait-il me dire pourquoi ?
Merci à vous.
A voir également:
- VBA lire un disque USB externe
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Chkdsk disque dur externe - Guide
- Cloner disque dur - Guide
- Clé usb non détectée - Guide
- Defragmenter disque dur - Guide
5 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
que contient la variable
Je pense que tu peux déplacer la ligne 3 avant la ligne 1.
que contient la variable
monfic?
Je pense que tu peux déplacer la ligne 3 avant la ligne 1.
Bonjour yg_be,
Le code complet, en fait, est le suivant :
Encore une fois, ce code fonctionne avec des fichiers en local. Pas avec des fichiers sur disque USB Externe ... curieux.
Merci.
Le code complet, en fait, est le suivant :
Public Sub Copier()
Dim monfichier As String
Dim oFSO As Scripting.FileSystemObject
monfichier = "D:\100_DATA\120_WEB\www\perso\sites\fileinfo\dir.txt"
F = FreeFile()
Open monfichier For Input As #F
While Not EOF(F)
Line Input #F, ContenuLigne
monfichier = Trim(ContenuLigne)
Set oFSO = New Scripting.FileSystemObject ' Instanciation du FSO
If oFSO.FileExists(monfichier) Then 'Instanciation de l'objet File
Set oFILISTE = oFSO.GetFile(monfichier)
End If
fin:
GoTo Suite
err:
Select Case err.Number
Case 53: Debug.Print "--------> Fichier introuvable"
Case Else: Debug.Print "--------> Erreur inconnue"
End Select
Resume fin
Suite:
Wend
Close #F
End Sub
Encore une fois, ce code fonctionne avec des fichiers en local. Pas avec des fichiers sur disque USB Externe ... curieux.
Merci.
Je ne comprends plus rien à l'informatique ! (si j'y ai compris quelque chose un jour ... )
J'ai relancé now pour répondre à ta question : tous les fichiers fonctionnent.
J'avais trouvé ce moyen pour lister toutes les photos de mon disque que je n'arrive plus à ouvrir via l'explorateur de Windows.
Les photos abimées arrivaient à déclencher l'erreur dans le on error ... Plus maintenant !
Si tu as une idée autre pour résoudre mon problème, je suis preneur.
PS : j'avais essayé aussi en PHP sans succès ... :(
Merci d'avance.
J'ai relancé now pour répondre à ta question : tous les fichiers fonctionnent.
J'avais trouvé ce moyen pour lister toutes les photos de mon disque que je n'arrive plus à ouvrir via l'explorateur de Windows.
Les photos abimées arrivaient à déclencher l'erreur dans le on error ... Plus maintenant !
Si tu as une idée autre pour résoudre mon problème, je suis preneur.
PS : j'avais essayé aussi en PHP sans succès ... :(
Merci d'avance.

Voilà le souci : quand je veux ouvrir une photo vérolée par l'explorateur de fichier, Windows me renvoie une erreur.
Donc je me suis dis : si je les ouvre avec Excel, est-ce que cela me donne une erreur ? Dans ce cas, je pourrais catcher les erreurs et faire une liste des photos vérolées.
J'ai essayé au début sur une photo : ça fonctionnait. C'est-à-dire qu'Excel me renvoyait une erreur.
Ensuite, j'ai fait un > DIR > monrep.txt du répertoire de photos par l'invite de commande CMD, pour créer un fichier .txt contenant toutes les photos ( path + nom de la photo ) du répertoire concerné.
Puis j'ai fait une boucle sur ce fichier .txt et pour chaque ligne, donc chaque path+photo, je fais un " Set oFILISTE = oFSO.GetFile(monfichier) " en espérant catcher les erreurs, par le On Error, dues aux photos vérolées, et ainsi les lister par debug.print.
Ce qui fonctionnait sur une photo ne fonctionne plus : c'est-à-dire que je passe, pour toutes les photos, même les vérolées, dans la condition :
... sans que cette instruction ne déclenche la clause On Error.
Résultat du script :
A noter que N est mon disque USB externe sur lequel j'ai des soucis de lecture de certaines photos.
Voilà. J'espère que j'ai été bien clair. N'hésite pas à me dire sinon.
Merci de ta réponse.
Cordialement,
Donc je me suis dis : si je les ouvre avec Excel, est-ce que cela me donne une erreur ? Dans ce cas, je pourrais catcher les erreurs et faire une liste des photos vérolées.
J'ai essayé au début sur une photo : ça fonctionnait. C'est-à-dire qu'Excel me renvoyait une erreur.
Ensuite, j'ai fait un > DIR > monrep.txt du répertoire de photos par l'invite de commande CMD, pour créer un fichier .txt contenant toutes les photos ( path + nom de la photo ) du répertoire concerné.
Puis j'ai fait une boucle sur ce fichier .txt et pour chaque ligne, donc chaque path+photo, je fais un " Set oFILISTE = oFSO.GetFile(monfichier) " en espérant catcher les erreurs, par le On Error, dues aux photos vérolées, et ainsi les lister par debug.print.
Ce qui fonctionnait sur une photo ne fonctionne plus : c'est-à-dire que je passe, pour toutes les photos, même les vérolées, dans la condition :
If oFSO.FileExists(monfichier) Then 'Instanciation de l'objet File Set oFILISTE = oFSO.GetFile(monfichier) End If
... sans que cette instruction ne déclenche la clause On Error.
Public Sub Copier() Dim fic_a_tester As String Dim monfichier As String Dim oFSO As Scripting.FileSystemObject monfichier = "D:\100_DATA\120_WEB\www\perso\sites\fileinfo\dir.txt" F = FreeFile() Open monfichier For Input As #F On Error GoTo err Set oFSO = New Scripting.FileSystemObject ' Instanciation du FSO While Not EOF(F) Line Input #F, ContenuLigne fic_a_tester = Trim(ContenuLigne) Debug.Print fic_a_tester If oFSO.FileExists(fic_a_tester) Then ' Instanciation de l'objet File Set oFILISTE = oFSO.GetFile(fic_a_tester) End If fin: GoTo Suite err: Select Case err.Number Case 53: Debug.Print "--------> Fichier introuvable" Case Else: Debug.Print "--------> Erreur inconnue" End Select Resume fin Suite: Wend Close #F End Sub
Résultat du script :
D:\100_DATA\120_WEB\www\perso\sites\fileinfo\fichiers\2020 20 20 _ 001.jpg N:\125_ALBUMS\000125 _ 2001 12 25 - Noel 2001\2001 12 25 _ 030.jpg D:\100_DATA\120_WEB\www\perso\sites\fileinfo\fichiers\2020 20 20 _ 002.jpg
A noter que N est mon disque USB externe sur lequel j'ai des soucis de lecture de certaines photos.
Voilà. J'espère que j'ai été bien clair. N'hésite pas à me dire sinon.
Merci de ta réponse.
Cordialement,

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