Microsoft 365 vbDirectory ou pas ? ?

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 !

DenisHen

XLDnaute Junior
Bonjour à la communauté.
Je fais en ce moment une petite "boite de dialogue" personnalisée pour ouvrir ou sauvegarder un fichier (un mini explorateur).
Je suis surpris que certain "dossiers" ("répertoires" pour les anciens) sont parfois concidérés comme des fichiers.

Dossier ou Fichier.png


On voit bien sur la capture que "Users" est dans la liste des fichiers, et n'est pas dans la liste des dossiers.
Pour trier mes dossiers, j'ai :
VB:
If GetAttr(Chemin) = vbDirectory And Left(Chemin, 1) <> "." Then
Et pour mes fichiers :
VB:
If GetAttr(Chemin) <> vbDirectory And Left(Chemin, 1) <> "." Then
KelKin aurait une idée ?
Je pense à un problème de traduction entre "Users" et Utilisateurs".
Denis...
 
Dernière édition:
Solution
non je parlais de ça
et la discussion est longue beaucoup de participation et toutes les méthodes de listing sont passées en revue

ca fait beaucoup de lecture

ce qui a donner ces dialogs
et aussi toute ces méthode de listing ultra rapide

non lecture
Bonjour DenisHen, Patrick, le forum,

Le retour en arrière est une excellente idée, je le fais avec une ComboBox :
VB:
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex = -1 Then Exit Sub
Dim i
chemin = ComboBox1.List(0)
For i = 1 To ComboBox1.ListIndex
    chemin = chemin & "\" & ComboBox1.List(i)
Next i
For i = ComboBox1.ListCount - 1 To ComboBox1.ListIndex + 1 Step -1
    ComboBox1.RemoveItem i
Next i
suite = True
UserForm_Initialize 'récursivité
suite = False
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Application.Wait Now + 1 / 86400 'attend la fin du double-clic
ComboBox1.AddItem ListBox1
ComboBox1 = ListBox1
End Sub
A+
 

Pièces jointes

Bonjour à la communauté.
Un très grand merci à vous, j'ai réussi (avec 99% du code récupéré) à faire presque ce que je souhaitait, j'ai modifier le code original pour mieux le comprendre et le modifier avec mes faibles connaissances 😉.
Je voulais éviter le "Scripting.FileSystemObject", mais finalement, j'y arrive un peu.
Il ne me reste plus qu'à corriger quelques petits truc (dossier manquant, extensions...) et ce sera parfait.
D'ailleurs, je n'ai pas réussi à comprendre les extensions de fichiers.
Je partage ce que j'ai réussi à faire.
Denis...
 

Pièces jointes

re
a oui mais si le dossier est chargé c'est tellement long que je n'ai pas vu
tu devrais t'intéresser a une ressource ( que j'ai redigé l'année dernière me semble t il ou celle d'avant) qui est a caractère tutoriel et comparatif sur l'exploration des dossier en mode récursive ou je montre
les avantages et le inconvénients selon la methode utilisé je passe par le (shell ,dir fso windowsshearch ,etc....)
 
Re.
Merci @patricktoulon, je vais chercher cette ressource (serait-ce ça ?).
En revanche, chez moi, c'est instantané, et il y a une demi-seconde de latence pour un lecteur réseau.
Je m'étais intéressé à "Boite de dialog Fichier filtrés V 5" il y a peu, mais le niveau est un peu élevé pour moi.
Et effectivement, c'est l'idée que j'avais.
Encore merci.
Denis...
 
Dernière édition:
non je parlais de ça
et la discussion est longue beaucoup de participation et toutes les méthodes de listing sont passées en revue

ca fait beaucoup de lecture

ce qui a donner ces dialogs
et aussi toute ces méthode de listing ultra rapide

non lecture
 

Pièces jointes

Bonjour à la communauté.
Un super grand merci à Maître Patrick (entre autres), j'ai fais (presque exactement) ce que je souhaitais, mais ça me va, pour l'instant.
Voici mon petit File Dialog Perso et personnalisable, (en code ouvert).
J'ai "betatesté", mais on a toujours des surprises quand d'autres le font.
Je partage, et je suis à l'écoute de vos éventuelles observations.
Bonne soirée (ou journée) à toutes et à tous.
Denis...
 

Pièces jointes

Bonjour le forum,
Je voulais éviter le "Scripting.FileSystemObject", mais finalement, j'y arrive un peu.
Avec ce code je me passe du FileSystemObject en utilisant uniquement la fonction Dir :
VB:
Dim chemin$, suite As Boolean 'mémorise les variables

Private Sub UserForm_Initialize()
Dim d As Object, contenu$, a(), n, b(), nn
If Not suite Then
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Sélectionnez un dossier"
        If .Show = False Then End
        chemin = .SelectedItems(1)
        ComboBox1.AddItem chemin
        ComboBox1 = chemin 'affiche le dossier
        Exit Sub
    End With
End If
ListBox1.Clear: ListBox2.Clear
Set d = CreateObject("Scripting.Dictionary")
On Error Resume Next 'si permission refusée
contenu = Dir(chemin & "\") 'fichiers
On Error GoTo 0
While contenu <> ""
    d(contenu) = ""
    contenu = Dir
Wend
If d.Count Then ListBox2.List = d.keys
contenu = Dir(chemin & "\", vbDirectory) 'dossiers + fichiers
While contenu <> ""
    If contenu <> "." And contenu <> ".." And Not d.exists(contenu) Then
        ReDim Preserve a(n)
        a(n) = contenu
        n = n + 1
    End If
    contenu = Dir
Wend
If n Then ListBox1.List = a
End Sub
Le Dictionary est nécessaire si l'on veut aller vite.

Edit : If .Show = False Then End évite d'ouvrir l'UserForm.

Pour tester j'ai créé sur le bureau un dossier contenant 10 000 fichiers Excel vides.

Cette macro s'exécute en 0,05 seconde, la macro UserForm_Initialize du post #18 s'exécute en 8 secondes.

A+
 

Pièces jointes

Dernière édition:
Bonsoir,

Je ne comprends pas vraiment, au post #1 on parle de GetAttr ce n'est plus d'actualité ?

En tout cas le fichier du post #19 me paraît bien plus compliqué que celui de mon post #18.

A+
Bonjour @job75 et merci pour l'aide.
- GetAttr était peut-être une solution pour résoudre un problème que je rencontrais, je l'ai contourné avec autre chose.
- Oui, le poste #19 est plus "compliqué" que celui du #18, mais je le comprend et peut le modifier.
Merci encore à toutes et à tous pour toute cette aide !
Denis.
 
- 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

Retour