Microsoft 365 Liste des fichiers dans le répertoire

RollyLCXL

XLDnaute Nouveau
Bonjour,

J'utilise le code sn = Split(CreateObject("wscript.shell").exec("cmd /c dir """ & F & """ /a:-d /b").StdOut.ReadAll, vbCrLf)

Et j'envoi la liste des fichiers du répertoire courant dans une feuille Excel avec le code ... .Resize(UBound(sn) + 1) = Application.Transpose(sn).

Tout se fait parfaitement sauf ceci. Des caractères sont remplacés. Par exemple un fichier nommé Nouveautés.pdf dans le répertoire est renommé Nouveaut,s.pdf.

Il semble que tous les accents sont remplacés par des autres caractères étranges.

Comment faire afin d'obtenir le nom tel que dans l'Explorateurs de Fichiers de Windows?

C'est que cette façon de faire est extrêmement plus rapide qu'avec un Loop.

Merci à l'avance.
 

jurassic pork

XLDnaute Occasionnel
VB:
Private Declare PtrSafe Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long
Sub TestDir()
Dim F, sn, res As String
F = "d:\dev\office\excel"
res = CreateObject("wscript.shell").exec("cmd /c dir """ & F & """ /a:-d /b").StdOut.ReadAll
OemToChar res, res
sn = Split(res, vbCrLf)
End Sub
Hello,
avec ce que l'on a découvert, tu devrais pouvoir te passer d ' OemToChar :
VB:
Sub TestDir2()
Dim F, sn, res As String
F = "d:\dev\office\excel"
res = CreateObject("wscript.shell").exec("cmd /c  chcp 1252 > nul  &  cmd /c dir """ & F & """ /a:-d /b").StdOut.ReadAll
sn = Split(res, vbCrLf)
End Sub
et pour patricktoulon : la ligne avec CreateObject semble créer un problème quand on est en debug :
Si je met un point d'arrêt après cette ligne, si j'exécute la procédure , je m'arrête bien sur le point d'arrêt mais je n'ai plus la main dans l'Editeur VBA. Pour débloquer cette situation il faut aller cliquer dans une autre fenêtre de windows. Patrick as-tu ce phénomène ?
Ami calmant, J.P
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
314 336
Messages
2 108 556
Membres
110 207
dernier inscrit
Faustin