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

VBScript Discussion :

afficher arborescence dossier


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut afficher arborescence dossier
    Bonjours je me demandais si il était possible d'afficher toute l'arborescence à partir d'un dossier.

    au final avoir quelque chose comme ceci en affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Repertoire 1
          répertoire A
                  répertoire i
          répertoire B
    répertoire 2
          répertoire C
              répertoire ii
          répertoire D
    Je n'arrive qu'à lister les sous répertoire du répertoire du répertoire que je saisis et ça fini là.

    mon code est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set Dossiers = fso.GetFolder(demanderRepertoire)
    Set rep = Dossiers.subFolders
    For Each Rep in Rep
               strListe = strListe & Rep.Name & vbcrlf
    Next
    Le résultat qu'il retourne est tout à fait normal je le sais, mais comment faire pour afficher toute l'arborescence du dossier ?

  2. #2
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Salut,

    Il suffit de créer une fonction récursive qui liste tous les sous dossiers du dossier passé en paramètre.
    ça doit ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub ListeRepertoire(repertoire_parent)
      strListe = strListe & repertoire_parent.Name & vbcrlf
      For Each reperoire_enfant In repertoire_parent.SubFolders
        ListeRepertoire reperoire_enfant
      Next
    End Sub
    Après si tu veux une incrémentation, à toi de gérer le nombre d'espaces (ou de tabulations) en fonction de la profondeur de ta fonction récursive.

    Bonne chance

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut
    J'ai créer ma fonction récursive, mais il y a que le programme fait et je ne comprend pas pourquoi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    afficherArborescence(fso.getFolder(maRacine))
    wscript.quit
    function afficherArborescence(racine)
    	wscript.echo repEnfant
    	set repParent = racine.subFolders
    	for each repEnfant in repParent
    		afficherArborescence(repEnfant)
    	next
     
    end function
    Pourquoi est-ce que la première chose qu'il affiche est rien ?

    Pourquoi dans mon instruction wscript.echo quand je rajoute .name à repEnfant j'ai le message d'ereur object required: 'repEnfant' ?

    Pour que seulements les nom de répertoires s'affiche je suis obligé d'écrire wscript.echo racine.name, mais si je fais ça il affiche le nom du répertoire que j'ai entrer en premier.

    Je veux afficher seulement l'arborescence de mon répertoire racine et non pas la racine et l'arborescence.

  4. #4
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Dans ce cas là, alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    afficherArborescence(fso.getFolder(maRacine))
    wscript.quit
    function afficherArborescence(racine)
    	set repParent = racine.subFolders
    	for each repEnfant in repParent
    		wscript.echo repEnfant
    		afficherArborescence(repEnfant)
    	next	
    end function
    Effectivement, tu ne peux pas utiliser la valeur d'une variable avant de l'avoir initialisée

  5. #5
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut
    Merci tout fonctionne correctement. désolé si je pose des stupides.

  6. #6
    Membre averti
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    Bonjour,

    Je voudrais tester votre solution mais j'ai une erreur quand je l'execute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Argument ou appel de procédure incorrect
    J'ai copier mot pour mot les lignes mais je ne sais pas ou spécifier les paramètres pouvez-vous m'aidez ?

  7. #7
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    il faut remplir la variable maRacine.

    faire un petit

    maRacine = "c:\chemin_du_dossier_qui_va_bien"

  8. #8
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    la variable maRacine est une chaine de caractère et doit contenir le chemin d'un répertoire.

    ça devrait fonctionner avec ça avant (par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maRacine = "c:\windows"

  9. #9
    Membre averti
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut
    ok, ça fonctionne bien maintenant.

    je vous remercie !

    J'aurais une autre question du même genre :

    Comment on peut rechercher un sous-repertoire dans c par exemple ?

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

Discussions similaires

  1. Arborescence dossier sur XML
    Par defrayprod dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 30/10/2007, 14h20
  2. Lien relatif pour arborescence dossier web
    Par thewind1 dans le forum E-Commerce
    Réponses: 2
    Dernier message: 04/09/2007, 23h39
  3. Afficher contenu dossier
    Par jacma dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 02/09/2007, 15h06
  4. Afficher arborescence Dossier FTP
    Par NekoTheC4T dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 02/06/2007, 18h26
  5. [VBA-A]Parcours d'une arborescence dossiers et fichiers
    Par sidneyvba dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/03/2006, 16h58

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