IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Lister les sous-répertoires vides avec les API windows


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut Lister les sous-répertoires vides avec les API windows
    Bonjour à tous

    J'ai utilisé le code de Kiki29 C'est par ici pour lister les fichiers de tous les sous-répertoires à partir d'une racine sélectionnée dans un filedialog.

    Pas de problème, merci à Kiki29. Par contre je voudrai identifier les répertoires vides et là je ne sais pas comment procéder? Existe-t-il un attribut de l'objet répertoire à tester et lequel?

    Merci par avance pour votre aide
    Bonjour chez vous
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Le dossier d:\aaaaaaaa est vide si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toto = dir("d\aaaaaaaa\")
    retourne ""
    Te reste à insérer cela comme condition dans le code que tu utilises
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Bonsoir unparia,

    Merci pour ta réponse et si je te suis dans le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub SearchForFiles(sRoot As String)
    Dim WFD As WIN32_FIND_DATA
    Dim hFile As LongPtr
        hFile = FindFirstFile(sRoot & ALL_FILES, WFD)
        If hFile <> INVALID_HANDLE_VALUE Then
            Do
                '   if a folder, and recurse specified, call method again
                If (WFD.dwFileAttributes And vbDirectory) Then
                    If Asc(WFD.cFileName) <> vbDot Then
                        NbDossiers = NbDossiers + 1
                        If fp.bRecurse Then SearchForFiles sRoot & TrimNull(WFD.cFileName) & vbBackslash
                    End If
                Else
                    '   must be a file ..
                    If MatchSpec(WFD.cFileName, fp.sFileNameExt) Then
                        fp.nCount = fp.nCount + 1
                        shDatas.Cells(fp.nCount + RDepart, 2) = sRoot & TrimNull(WFD.cFileName)
                        ' shDatas.Cells(fp.nCount + RDepart, 3) = Format(CDate(WFD.ftLastWriteTime), "dd/mm/yyyy") ==> en erreur, pourquoi moi commandant cousteau ??????
                    End If
                End If
                fp.nSearched = fp.nSearched + 1
            Loop While FindNextFile(hFile, WFD)
            Application.StatusBar = NbDossiers & " / " & fp.nCount
        End If
        FindClose hFile
    End Sub
    après

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      If Asc(WFD.cFileName) <> vbDot Then
                        NbDossiers = NbDossiers + 1
    tu ajouterais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if  dir( sRoot & TrimNull(WFD.cFileName) ) then ....
    Ne pourrait-on pas tester un attribut de WFD pour éviter la commande dir qui est consommatrice de ressources?

    bonjour chez toi
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    pour éviter la commande dir qui est consommatrice de ressources?
    c'est la moins gourmande en tout cas certainement moins que les api les deux méthodes étant les plus rapide beaucoup de gens croit que les apis sont moins lourdes (certaines)
    mais en ce qui concernes les user 32,shell etc....on ne les vois pas dans la consommation Excel mais on peut le voir dans gestions de tache onglet services

    garde le dir surtout pour simplement tester la présence de fichiers dans un dossier
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, @informer : voir via liste des fichiers avec visualisation de l'arborescence ?
    Images attachées Images attachées  

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Citation Envoyé par patricktoulon Voir le message
    c'est la moins gourmande en tout cas certainement moins que les api les deux méthodes étant les plus rapide beaucoup de gens croit que les apis sont moins lourdes (certaines)
    mais en ce qui concernes les user 32,shell etc....on ne les vois pas dans la consommation Excel mais on peut le voir dans gestions de tache onglet services

    garde le dir surtout pour simplement tester la présence de fichiers dans un dossier
    - Je rappelle que la fonction Dir de VB (tant VB6 que VBA) utilise elle-même la librairie Kernel32 de l'API de Windows (et aucune autre librairie).

    - Que la librairie Kernel32 est le noyau-même de Windows et est donc utilisée en permanence, quelle que soit l'application en cours.

    Utiliser la fonction Dir de VBA est sage. Utiliser directement ce dont se sert cette fonction est beaucoup plus rapide.
    Il va maintenant de soi que tout est dans la manière d'utiliser les deux méthodes (tant l'une que l'autre).
    Il serait abusif d'utiliser adroitement la fonction Dir et maladroitement les 4 fonctions nécessaires de la librairie Kernel32 pour déclarer ensuite que Dir est plus performante et moins gourmande.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Bonjour à tous et merci pour votre aide et vos compléments d'info.

    Sur DIR, je suis très dubitatif car il ne me renvoie jamais de valeur même quand le répertoire est composé de sous-répertoires / fichiers
    J'ai donc dû utiliser

    Folder_Obj1.path
    Folder_Obj1.Files.Count
    Folder_Obj1.SubFolders.Count
    dans la fonction ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Private Sub Find_Folder_List_From_Path(sRacine As String)
     
     
        'Çreate File System Objects to Use this FSO, Go to Tools -> References.
        'Find for “Microsoft Scripting Runtime” & Click the Checkbox.
        Dim FileSysObj_1 As FileSystemObject
        Dim Folder_Obj1 As Folder
     
        'Initialize Variables And Objects
        Set FileSysObj_1 = New FileSystemObject
     
        'Loop to get each Subfolder in the Root Path
        For Each Folder_Obj1 In FileSysObj_1.GetFolder(sRacine).SubFolders
            On Error Resume Next
            with forms"toto") 
                   .cells(1,2) = Folder_Obj1.path
                   .cells(1,3) = Folder_Obj1.Files.Count
                    .cells(1,4) = Folder_Obj1.SubFolders.Count
            End With    
    End Sub

    Question subsidiaire:

    Qui de FileSystemObject ou des API est le plus performant en terme de temps considérant que les API soient bien utilisées (Cf. commentaire de unparia)

    Merci encore pour votre aide
    Bonjour chez vous
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour unparia
    oui c'est vrai tout dépends de leur utilisation
    j'ai tester notre dir recursif et celle avec les apis qui est plus rapide
    j'ai mi le panneau graphique dans gestion de tache et regarder le résultat
    pour le même travail le module avec les apis montent des pique a 800/900kilos et descend a 18/25kilo
    mais dir lui commence plus fort 70/110kilo en moyenne basse mais 400/500 kilo en moyen haute
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Salut PatrickToulon, merci pour ces infos qui répondent partiellement à ma question

    Pour une recherche récursive, qui de DIR, API ou FileSystemObject est le plus performant considérant toujours qu'ils soient bien maîtrisés, je précise pour ne pas me faire allumer par unparia

    Bonjour chez toi de toulon

    Citation Envoyé par kiki29 Voir le message
    Salut Kiki29,

    Dans ton outil, tu n'utilises pas les API pour récupérer la taille des répertoires et des fichiers mais l'obet Set FSO = CreateObject("Scripting.FileSystemObject"). Une raison autre que celle sûrement d'avoir commencé à développé avec cet objet?

    BOnjour c'est toi
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    oui
    les apîs rendent un résultat plus rapide mais en récursif c'est très complexe avec les apis un module est distribué par kiki je crois on le trouve même ailleurs sur la toile
    mais dir utilise ces même apis comme dit unparia déjà les constante et fonction sont interne a lui
    après tout dépends de ton besoins
    il n'est pas la peine d'aller louer un poids lourd 19 tonne pour transporter une chaise si tu vois ce que je veux dire surtout en VBA
    il existe une fonction qui traine ici et la un peu partout "fichier existe"
    il suffit en ce qui te concerne de tester l'existence de fichier

    truc =dir("C:\mondossier" &"\*.*")si le rendu est blanc alors ton dossier est vide tout simplement

    la librairie filesystemobject non elle!!! elle est hors concours bien que plus facile a utiliser mais entre 10et 20 fois plus lente : tu trouvera une fonction recherche récursive avec file sytemobject que j'ai placé dans le contributions

    tu peux lire aussi le lon debat du post "gestion de l'erreur 52 avec dir" elle celle qui en ai la raison je sais plus le tire mais j'e suis le demandeur

    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Merci pour toute cette somme d'information mais qui me dira comment récupérer la taille d'un dossier avec l'utilisation des API, ma question d'origine tout de même

    bonjour chez vous
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    tu pourrais commencer par une liste récursive si il s'agit de plusieurs dossiers/sous dossiers avec dir
    et n'utiliser que l'object ou les apis sur le chemin du dossier pour avoir les informations

    mais d'après ta demande il me semble que tu voulais savoir si ton dossier est vide ou pas dir suffit
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Patricktoulon,

    Exact je veux effectivement tester si les répertoires sont vides mais qu'ils le soient ou pas avec Dir j'ai toujours un retour à vide.

    Normal?

    Bonjour chez toi
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  14. #14
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, il faudrait rechercher du côté de : GetFileSize ?

  15. #15
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Re
    Quand va--t-on enfin commencer à comprendre l'importance de la détermination de l'élément "attributes" de la fonction Dir ?
    Cela devient lassant, d'avoir toujours à insister sur cet aspect fondamental.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    a oui un paria a raison ca dépend de quel dossier tu parle si tu parle des dossiers d'origine du system et particulier il va te falloir effectivement ajouter les attributs
    maintenant si tu parle de dossiers que tu a créé toi même il ne devrait pas y avoir de soucis a moins que tu les ai protégés d'une manière ou d'une autre

    juste un petit test a faire comme ca vite fait change le nom du dossier pour le tiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    dossier = "C:\FLV_x64\"
    truc = Dir(dossier, vbDirectory) 'je met vbdirectory car il n'y a peut être pas de fichier mes des sous dossiers
    Do
    If Not Right(truc, 1) Like "." Then a = a & vbCrLf & truc & " : " & IIf(GetAttr(dossier & truc) = vbDirectory, "dossier", "fichier")
    If a <> "" Then mes = "hoh! la ya quelque chose la dedans " & vbCrLf & "voir ci dessous "
    truc = Dir()
    Loop Until truc = ""
    MsgBox mes & vbCrLf & a
    End Sub
    Attention ca ne liste que le premier étage de l'arborescence ( les enfant(dossiers ou fichier) direct du dossier examiné
    si tu veux t'amuser a examiner dossiers et sous dossiers il faut la récursivité
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #17
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Bon je vois que les attributs sont un sujet brulant Il n'y qu'à voir unparia qui enflamme

    Et quant à ne pas me faire allumer par unparia, pari perdu


    Sinon serait il possible d'avoir un lien sur le sujet des attributs?

    Encore merci à tous pour votre aide

    Bonjour chez vous
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  18. #18
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Sinon serait il possible d'avoir un lien sur le sujet des attributs?
    Oui : la rubrique Dir, fonction de l'aide VBA. Elle est TRES claire et assortie de la rubrique Dir, fonction, exemple

    Que n'y comprends-tu pas, du texte de cette rubrique ?

    EDIT : j'observe que dans la rubrique exemple d'utilisation : on y trouve même un exemple de recensement des seuls dossiers !

    J'(observe également que le seul attribut VbDirectory (cf le code de patricktoulon) recenserait comme étant vide un dossier contenant pourtant certains fichiers, parmi lesquels les "cachés", "Système" et "en lecture seule".
    Moi, je sors, maintenant ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  19. #19
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    oui unparia on a compris
    j'ai pourtant precisé
    a oui un paria a raison ca dépend de quel dossier tu parle si tu parle des dossiers d'origine du system et particulier il va te falloir effectivement ajouter les attributs
    maintenant si tu parle de dossiers que tu a créé toi même il ne devrait pas y avoir de soucis a moins que tu les ai protégés d'une manière ou d'une autre
    Bon allez d'accords comme ca cela marchera pour tout les dossiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim all_atribu, truc, a
    all_atribu = vbDirectory Or vbNormal Or vbHidden Or vbSystem Or vbReadOnly Or vbVolume
    dossier = "C:\FLV_x64\"
    truc = Dir(dossier, all_atribu) 'je met vbdirectory car il n'y a peut être pas de fichier mes des sous dossiers
    Do
    If Not Right(truc, 1) Like "." Then a = a & vbCrLf & truc & " : " & IIf(GetAttr(dossier & truc) = vbDirectory, "dossier", "fichier")
    If a <> "" Then mes = "hoh! la ya quelque chose la dedans " & vbCrLf & "voir ci dessous "
    truc = Dir()
    Loop Until truc = ""
    MsgBox mes & vbCrLf & a
    End Sub
    voila voila
    ajouter peut être la gestion d'erreur en cas de dossier/fichier non autorisé par le system je l'ai pas mis
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  20. #20
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    ajouter peut être la gestion d'erreur en cas de dossier/fichier non autorisé par le system je l'ai pas mis
    Oui. Et deux totalement distinctes.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. [VBA-*]Lister les sous-répertoires et les fichiers de ceux-ci
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 8
    Dernier message: 19/01/2017, 19h05
  2. [Batch] lister un répertoire , en excluant les sous répertoires
    Par vince2005 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 23/05/2015, 21h53
  3. Lister les sous-répertoires d'un répertoire
    Par Jean-Luc80 dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/01/2009, 20h08
  4. Réponses: 1
    Dernier message: 09/10/2007, 06h44
  5. [VBA-*]Lister les sous-répertoires et les fichiers de ceux-ci
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/04/2007, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo