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

VB 6 et antérieur Discussion :

Tester la présence de fichiers dans des répertoires


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut Tester la présence de fichiers dans des répertoires
    Bonjour à tous.

    Je n'ai rien trouvé dans la faq que je puisse mettre en oeuvre en vb6

    J'ai un directorie (DirListBox) qui contient des répertoires.

    Je voudrois mettre en gras le nom des répertoires qui contiennent un ou plusieurs fichiers.

    Merci d'avance pour vos réponses.

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,
    Ta question se résume à ceci (avant toute autre condition éventuelle) : "peut-on mettre en forme (gras, par exemple) un article d'une DirListBox"
    La réponse est non, à ma connaissance.
    Rien ne t'empêche par contre de créer et utiliser un contrôle personnalisé.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    merci de ta réponse ucfoutu

    Je vais essayé de faire quelque chose.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bien !

    Maintenant (et dans l'ignorance totale de ton but final) :
    Regarde ce que fait ceci (je viens de m'y amuser un peu) :
    Sur ton Form, un bouton de commande Command1 et un contrôle Treview TreeView1 :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Option Explicit
       Dim tvn As Node
     
    Private Sub Command1_Click()
       Dim monrep As String
       TreeView1.Nodes.Clear
       monrep = "d:\monoutil\"  ' on définit ici le répertoire à "déployer"
       If Right$(monrep, 1) <> "\" Then monrep = monrep$ + "\"
       Set tvn = TreeView1.Nodes.Add(, vbNullString, monrep, monrep)
       deployons monrep
    End Sub
     
    Sub deployons(ByVal chemin As String)
      Dim nomfic As String, numfic As Integer, tp As String, i As Integer, toto As String
      If Right$(chemin, 1) <> "\" Then chemin = chemin & "\"
      nomfic = Dir$(chemin, vbDirectory)
      numfic = 1
      Do While nomfic <> ""
        If nomfic <> "." And nomfic <> ".." Then
          tp = chemin & nomfic
          If GetAttr(tp) And vbDirectory Then
          If Dir(tp & "/*.*", vbNormal Or vbHidden) = "" Then toto = "  (vide de fichiers (pas forcément de dossiers))" Else toto = ""
            Set tvn = TreeView1.Nodes.Add(chemin, tvwChild, tp + "\", nomfic & toto)
            deployons tp
            nomfic = Dir$(chemin, vbDirectory)
            For i = 2 To numfic
              nomfic = Dir$
            Next
          End If
        End If
        nomfic = Dir$: numfic = numfic + 1
       Loop
    End Sub
     
    Private Sub TreeView1_DblClick()
       MsgBox TreeView1.SelectedItem.FullPath
    End Sub
    Lance, clique sur Command1, puis double-clique sur ce qui s'affichera (le répertoire de départ, dans ta Treeview)
    Regarde le résultat (il pourrait t'inspirer un peu )

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Merci,

    Je teste ça et je te tiens au courant.

    Le but final est :

    je lis les sous-répertoires d'un répertoire et lorsque je trouve un certain type de fichiers, je voudrais que le nom de ce sous-répertoire soit remarquable.

    A +, et merci

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    D'ou l'intérêt de tout dire tout tout de suite (on aurait gagné du temps !)!
    A quoi reconnais-tu les fichiers "intéressants ?)
    (une mofif (très légère) sera apportée en fonction de ta réponse précise)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Bonjour ucfoutu

    Les fichiers intéressants sont :

    FExxxxxx
    FRxxxxxx
    RExxxxxx
    RRxxxxxx

    où x est un chiffre.

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Et l'extension ?
    Car on ne peut y parvenir à coup sûr que :
    - si l'on connaît l'extension (ou qu'il n'y en a jamais pour ces fichiers)
    - le nombre des x est toujours le même (6, apparemment)
    - et que les deux 1ères lettres ne peuventt être que celles que tu nous a montrées (FE,FR,RE ou RR)

    Sans quoi, moult confusions possibles (bien évidemment)

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Il n'y a pas d'extension.

    Ce sont des fichiers clients

    FExxxxxx voulant dire Facture Edition suivi de :

    l'année mois index

    Il n'y a aucun autre élément commençant par FE, FR, RE, RR

    J'ai un répertoire maître d'un groupe de sociétés dans lequel je peux avoir une vingtaine de sous-répertoires sociétés dans lesquels j'ai mes fichiers.

    Et c'est pour cette raison que j'aimerais pour mettre en gras les répertoires contenant au moins un fichier. Pour que les gars de la prod
    aient une vision immédiate des sociétés à traiter.

    Ce qui importe, ce n'est pas tant d'avoir la liste des fichiers, mais de pouvoir déterminer ce répertoire

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bon...

    A main levée car pas sur ma machine de développement :

    - modifie ainsi la Sub deployons

    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
    Sub deployons(ByVal chemin As String)
      Dim nomfic As String, numfic As Integer, tp As String, i As Integer, toto As String
      If Right$(chemin, 1) <> "\" Then chemin = chemin & "\"
      nomfic = Dir$(chemin, vbDirectory)
      numfic = 1
      Do While nomfic <> ""
        If nomfic <> "." And nomfic <> ".." Then
          tp = chemin & nomfic
          If GetAttr(tp) And vbDirectory Then
            If Dir(tp & "\*.*", vbNormal Or vbHidden) = "" Then
              toto = "  (vide de fichiers (pas forcément de dossiers))"
            Else
              If verif(tp & "\*.*") Then toto = "BINGO !"
            End If
            Set tvn = TreeView1.Nodes.Add(chemin, tvwChild, tp + "\", nomfic & toto)
            deployons tp
            nomfic = Dir$(chemin, vbDirectory)
            For i = 2 To numfic
              nomfic = Dir$
            Next
          End If
        End If
        nomfic = Dir$: numfic = numfic + 1
       Loop
    End Sub
    et ajoute cette fonction verif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Function verif(ByVal chemin As String) As Boolean
      Dim rep As String, i As Integer, mesfiltres
      rep = Dir(chemin & "\*.*", vbNormal Or vbHidden)
       Do While rep <> ""
          mesfiltres = Array("FR######", "FE######", "RR######", "RE######")
          For i = 0 To UBound(mesfiltres)
           If rep Like mesfiltres(i) Then verif = True: Exit Function
          Next
          rep = Dir
        Loop
    End Function
    Cela devrait fonctionner, mais au pris d'un ralentissement (dans le cas de dossiers contenant beaucoup de fichiers, mais aucun "interessant") du fait de l'obligation de procéder à une analyse par like (filtres différents).

    Tu dis...

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    C'est tout bon,

    J'ai modifié la fonction verif car je plantais avec le rep.
    ce n'est peut-être pas très orthodoxe, mais ça fonctionne. Je ne suis pas encore très à l'aise avec le code.

    Dans 90% des cas, je n'ai que 4 fichiers par répertoire et ce ne sont que des fichiers conformes, donc pas de souci de temps de traitement.

    Je pense que l'on ne peut pas mettre en gras, je n'ai rien trouvé. J'ai ajouté un astérisque en fin de nom de répertoire.

    Il ne me reste plus qu'à intéger tout ça dans mon projet.

    Merci beaucoup de ton aide ucfoutu.

    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
     
    Private Function verif(ByVal chemin As String) As Boolean
      Dim rep As String, fichier, i As Integer, mesfiltres
     
     '  rep = Dir(chemin & "\*.*", vbNormal Or vbHidden) 'sup jnn
        rep = chemin 'ajout jnn
        fichier = Dir(chemin) ' ajout jnn
     
        Do While rep <> ""
     
          mesfiltres = Array("FR######", "FE######", "RR######", "RE######")
          For i = 0 To UBound(mesfiltres)
           If rep Like mesfiltres(i) Then verif = True: Exit Function
           If fichier Like mesfiltres(i) Then verif = True: Exit Function ' ajout jnn
          Next
         rep = Dir
        Loop
    End Function

  12. #12
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Bonjour,

    sauf erreur je crois qu'on peut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Treeview1.Nodes.Item(xx).Bold = True

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    bonjour OhMonBato,

    Ok je viens de tester, c'est bon, plus qu'à récupérer l'index,
    merci de ton aide.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    A tout hasard, est-il possible d'étendre le TreeView dès la fin du chargement ou suis-je obligé de simuler un double click ?

    Merci d'avance

  15. #15
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Treeview1.Nodes(xx).Expanded = True

  16. #16
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    Super,

    en mettant 1 dans mon index, j'ai toute l'arborescence qui s'affiche.

    Merci bien.

  17. #17
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Tant mieux mais la leçon à retenir serait peut être qu'en regardant un peu l'aide de VB ou en listant les propriétés/méthodes du contrôle Treeview tu aurais pu trouver réponse à tes 2 dernières questions par toi même (c'est d'ailleurs ce que j'ai fait car j'utilise très rarement ce contrôle)

  18. #18
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 41
    Points : 26
    Points
    26
    Par défaut
    J'ai regardé, mais j'ai encore du mal à comprendre toutes ces finesses.

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [KSH] Script pour trier des fichier dans des répertoires par mois
    Par MsieurDams dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 08/08/2014, 14h32
  2. [Regexp]Tous les fichiers dans des répertoires
    Par DonkeyMaster dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2011, 13h54
  3. [XML] Lister des fichiers dans des répertoires
    Par voxiz dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 16/02/2010, 16h25
  4. Réponses: 18
    Dernier message: 21/08/2007, 10h57

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