Comment afficher le contenu d'un dossier dans une treeview

Résolu
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 - 9 déc. 2013 à 11:32
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 - 10 déc. 2013 à 09:13
Bonjour a tous,

Suite à plusieurs recherche sans résultat, je m'en remet à vous.

Voici mon soucis :

J'ai un USF composé de :

Une ComboBox qui m'affiche les feuilles d'un classeur
4 boutons servant à :
Convertir en PDF (qui sert à convertir la feuille sélectionner dans le ComboBox)
Créer un dossier (qui créer un dossier)
Supprimer une sélection (supprime la sélection soit dans le combo soit dans le treeview <ce code est inexistant pour le moment>
Fermer
Puis une TreeView qui me servirait à afficher les élément contenu dans un dossier
ex: le dossier par défaut est "POINTAGES" c'est sur ce dossier que doit agir le TreeView

Dans ce dossier sont situer d'autre dossier qui eux contiennent les fichiers

Je voudrais donc savoir: Comment afficher l'arborescence du dossier "POINTAGES" dans cette TreeView ?

De plus est il possible, dans le cas ou une feuille ai été converti par erreur, de la supprimer en la sélectionnant dans le treeview ?

Merci a tous pour votre aide

Bonne journée

Christian
--
A voir également:

13 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
9 déc. 2013 à 15:53
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
9 déc. 2013 à 16:38
Voir aussi ceci,

Il y a un fichier exemple à télécharger

http://silkyroad.developpez.com/VBA/XlOrganigramme/
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 déc. 2013 à 16:38
Salut cs_Le Pivert

Donc je viens de regarder et essayer ce que tu m'as proposé mais c'est non concluant, sur un fichier vierge, j'ai poser un USF, un boutons et une TreeView. Le code fonctionne mais ne donne pas le résultat attendu.

Voici le code :

 
Option Explicit

Dim tvn As Node


Private Sub CommandButton1_Click()
Dim monrep As String

TreeView1.Nodes.Clear
' on définit ici le répertoire à "déployer"
monrep = "C:\Users\Christian\Documents\POINTAGES"

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

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
Set tvn = TreeView1.Nodes.Add(chemin, tvwChild, tp + "\", nomfic)
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


'Récupère le chemin du dossier lorsque vous double cliquez sur l'élément
Private Sub TreeView1_DblClick()
MsgBox TreeView1.SelectedItem.FullPath
End Sub




Mon but étant que ma TreeView m'affiche en temps réel le contenu du dossier "POINTAGES" qui lui contient les sous-dossier "Pointages-S1", "Pointages-S2" qui eux contienne les PDFs.

Merci de ton aide

Christian

--
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 déc. 2013 à 17:01
Correction faite, un TreeView n'est peut être pas la solution, une ListView peut être...

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 9/12/2013 à 18:02
Bonjour
Une listvew ne saurait remplacer une treeview, qui affiche, elle une arborescence.
Dans le code que tu as monjtré (de ta treeview), je ne vois aucune condition Else (pour traiter le contenu des dossiers trouvés) ! ===>>> Elle M A N Q U E GRAVEMENT !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 déc. 2013 à 18:15
Si tu avais bien lu le lien en cause, tu aurais vu :
que l'auteur (Il se trouve que c'est ... euh ... moi-même ...) a précisé :
Comment afficher l'arborescence de dossiers dans un TreeView ?
Je n'y avais traité QUE les DOSSIERS.
En cherchant sur CE forum (et non "là-bas") tu devrais trouver une discussion dans laquelle j'ai donné du plus complet, à savoir : dossiers, sous-dossiers et leurs fichiers et (cerise sur le gâteau) avec possibilité de filtrer sur les noms.
A toi d'utiliser le moteur de recherche de ce forum. Si tu n'y parviens vraiment pas (à trouver), je recommencerai ce travail.
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 déc. 2013 à 18:26
Bonjour ucfoutu

Bon, je vais chercher la solution, et en même m'apprendre. Il est vrai que j'ai vite de me perdre la dedans (niveau VBA) mais bon.. je vais persister... je ne dois pas utiliser les bon mot clé.

Alors je cherche, trouve les bouts de code et met les mains dans le camboui... et si ça veut pas faudra que ça dise pourquoi... ;)

Merci a toi et à toute l'équipe

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 9/12/2013 à 19:06
Bon...
Je viens de m'y "remettre"
Un peu bâclé, mais voilà ===>>>

Dans un module standard :
Public tvn As Node
Public Sub deployons(O As Object, ByVal chemin As String, montv As Object, quoi As String, ficflt As String, dosflt As String)
If Right$(chemin, 1) <> "\" Then chemin = chemin$ + "\"
montv.Nodes.Clear
MsgBox "oui"
Set tvn = montv.Nodes.Add(, vbNullString, chemin, chemin)
deployons1 O, chemin, montv, quoi, ficflt, dosflt
End Sub

Private Sub deployons1(ByVal O As Object, ByVal chemin As String, montv As Object, quoi As String, ficflt As String, dosflt As String)
Dim nomfic As String, numfic As Integer, tp As String, i As Integer
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) And (quoi = "D" Or quoi = "DF") And nomfic Like dosflt Then
Set tvn = montv.Nodes.Add(chemin, tvwChild, tp + "\", nomfic)
deployons1 O, tp, montv, quoi, ficflt, dosflt
nomfic = Dir$(chemin, vbDirectory)
For i = 2 To numfic
nomfic = Dir$
Next
ElseIf (quoi = "DF" Or quoi = "F") And nomfic Like ficflt Then
Set tvn = O.TreeView1.Nodes.Add(chemin, tvwChild, tp, nomfic)
End If
End If
nomfic = Dir$: numfic = numfic + 1
Loop
End Sub

Et là où tu as inséré la treeview1, depuis un CommanButton1 :

Private Sub CommandButton2_Click()
Dim monrep As String, filtre_fichier As String, filtre_dossier As String, quoi As String
monrep = "d:\monoutil\" ' on définit ici le répertoire à "déployer"
quoi = "DF"
' quoi = "D"
'quoi = "F"
filtre_fichier = "*.*"
filtre_dossier = "*ra*"

deployons Me, monrep, TreeView1, quoi, filtre_fichier, filtre_dossier
End Sub

Tu auras deviné, hein ...
Selon que tu commentes ou décommentes ===>>> DF pour avoir dossiers et Fichiers, D pour dossiers seuls, F pour fichiers seuls
Et tu mets le filtre que tu veux toi ...


Regarde ensuite ce qui se passe en double cliquant sur un article de la treeview
Private Sub TreeView1_DblClick()
MsgBox TreeView1.SelectedItem.FullPath
End Sub

Voilà.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 déc. 2013 à 22:11
Bonsoir,

Alors le code fonctionne avec le résultat attendu a quelque détail près : (je t'explique le fonctionnement de cette partie de mon application)

La fenêtre est composée comme suit :

une ComboBox: elle m'affiche les feuilles à convertir
un bouton "creer un dossier" : (comme son nom l'indique)
un bouton "convertir en PDF": lui fait la conversion et me les stock dans un sous-dossier créer précédemment qui lui se trouve dans le dossier "POINTAGES" qui lui est ça racine.
Une treeview: elle devrait normalement m'afficher en temps réel (sans rien cliquer) le contenu de ce dossier "POINTAGES" sans message intermédiaire.

Me suis-je bien expliqué?

n'hésite pas à me reprendre si tu ne m'as pas compris, ton aide m'est très précieuse ;)

Bonne soirée à toi

Christian

--
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 déc. 2013 à 22:12
Si tu le souhaite je peux te mettre les codes de chaque élément de mon USF si tu veux faire des essais
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 déc. 2013 à 22:35
Non.
Je ne suis venu et intervenu ici que pour traiter ce qui est exposé par le titre, à savoir :
"Comment afficher le contenu d'un dossier dans une treeview"
confirmé par :
"Je voudrais donc savoir: Comment afficher l'arborescence du dossier "POINTAGES" dans cette TreeView ?"
Sujet que j'ai donc traité.
En te rappelant le principe : une seule question spécifique et isolée par discussion. (on ne traite ici qu'une difficulté et non un ensemble).
Si cet aspect est résolu : discussion à clore (un clic sur le tag "RESOLU" au niveau de ton premier message)
Si tu as maintenant d'autres questions ===>>> autre discussion. en ISOLANT cette autre question.
C'est ici la règle et j'y tiens , personnellement.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 9/12/2013 à 22:52
Et la nouvelle discussion que tu devrais ouvrir devrait être du genre :*
Comment mettre à jour le contrôle de mon choix (listbox, listview, combobox; treeview, ou autre) qui me sert à lister les fichiers d'un dossier, chaque fois que j'ajoute un fichier dans le dit dossier.
En d'autres termes : comment provoquer une telle mise à jour automatique.
Plus rien à voir véritablement avec le contrôle d'affichage à proprement parler, mais tout à voir avec le reste du mécanisme de ton appli
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 déc. 2013 à 23:00
Pour une personne qui fait du VBA depuis longtemps c'est plus facile d'exposer un problème.
Pour ma part je pensais que cela traitait le même sujet étant donnée que le but est d'afficher le contenu d'un dossier et de ses sous dossier dans une treeview :)
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
9 déc. 2013 à 22:47
Pas de soucis, je post un nouveau sujet

Merci encore

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 déc. 2013 à 06:23
Bien.
N'oublie pas de clore celui-ci, donc.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
10 déc. 2013 à 09:02
Bonjour ucfoutu,

cco86260, je crois que tu t'éloignes de ton but avec une treeview d'après ce que tu m'as expliqué sur MP. Il y a plus simple. Je ne peux pas te contacter sur ton MP, il n'est pas activé.

A l'ouverture du classeur une boite de dialogue de création de dossier s'ouvre. Le chemin du dossier ainsi créé est stocké dans une cellule. A la prochaine ouverture si cette cellule est rempli, la boite de dialogue ne s'ouvre plus. L'utilisateur peut enregistrer dans ce dossier sans s'occuper de son chemin. Le chemin est spécifique pour chaque machine.
Voilà c'est simple
0
cco86260 Messages postés 166 Date d'inscription dimanche 22 janvier 2012 Statut Membre Dernière intervention 30 juillet 2015 2
10 déc. 2013 à 09:13
J'ai créer un nouveau post :)

les MP sont a nouveau actif ;)

--
0
Rejoignez-nous