OVH Cloud OVH Cloud

Lister fichiers

3 réponses
Avatar
JCM
Bonjour

je voudrais lister les fichiers d'un seul repertoire (je=20
ne veux de l'arborescence du disque), il s'agit de tables=20
d'une base.mdb
quel le meilleur choix : treeview ou commondialog ?
un click sur le fichier doit ouvrir le fichier
Pouvez-vous me dire ou je peux trouver un bout de code ?

Autre question
est-il possible de cr=E9er un menu flottant dont les titres=20
des sous-menus seraient des donn=E9es extraites par une DAO ?
toujours un exemple possibles ?

Merci de vos reponses
cordialement
JCM

3 réponses

Avatar
François Picalausa
"JCM" a écrit dans le message de
news:06ad01c3ca1a$e7551860$
je voudrais lister les fichiers d'un seul repertoire (je
ne veux de l'arborescence du disque), il s'agit de tables
d'une base.mdb
quel le meilleur choix : treeview ou commondialog ?
un click sur le fichier doit ouvrir le fichier
Pouvez-vous me dire ou je peux trouver un bout de code ?

Autre question
est-il possible de créer un menu flottant dont les titres
des sous-menus seraient des données extraites par une DAO ?
toujours un exemple possibles ?



Bonjour/soir,

Pour lister les fichiers d'un répertoire, tu peux utiliser Dir:

Dim strBuffer As String

strBuffer = Dir("c:toto")

Do while strBuffer <> ""
'Ajouter l'élément stoqué dans strBuffer à la liste
strBuffer = Dir
Loop

Pour l'affichage, puisqu'il n'y a pas d'arborescence, une simple listbox ou
listview (Microsoft Windows Commons Controls 6.0) suffit.
Tu récupèrera le click par l'événement click. L'item sélectionné sera
ListView.Selectedtem ou ListBox.ListIndex

En ce qui concerne le menu contextuel, il te faut au minimum un élément de
sous menu dont l'index serait 0.

Exemple:
Mon Menu contextuel (name = mnuContext)
|-Entrée statique 1 (name = mnuContextSatic0)
|-Entrée statique 2 (name = mnuContextSatic1)
...
|-Mes sous items
| |-(aucun) (name=mnuContextDynDAO; Index = 0; Enabled = False; ce
seront tes entrées de menu dynamiques)
|- Entrée statique X (name = mnuContextSaticX)
...
A partir de là, pour charger une nouvelle entrée dans le menu:

Load mnuContextDynDAO(mnuContextDynDAO.Ubound + 1)
mnuContextDynDAO.Caption = "Titre de lentrée dynamique"
mnuContextDynDAO(0).Visible = False

Pour supprimer une entrée:
If mnuContextDynDAO.Count = 2 Then
mnuContextDynDAO(0).Visible = True 'on doit avoir au minimum une entrée
visible dans le menu
End If
UnLoad mnuContextDynDAO(Index)

Tu récupère les click sur tous les items via l'événement Click du "tableau"
mnuContextDynDAO.
Cet événement contiendra un paramètre Index t'indiquant de quel item il
s'agit.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
JCM
Merci François

pour ta reponse, le premier probleme est reglé, mais pour
le second je patauge, voici mon code :

Dim ADOMenu As New ADODB.Recordset
Dim ADOcn As New ADODB.Connection
Option Explicit
Private Sub Form_Load()
CheminAffaire = "EmilieAMCBase
generalitésgeneralites.mdb"

'creation d'un objet recordset
With ADOcn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & CheminAffaire
.CursorLocation = adUseClient
.Open
End With
'Requete sur les types de mission à afficher dans
MnuMission
Set ADOMenu = New ADODB.Recordset
With ADOMenu
.ActiveConnection = ADOcn
.CursorType = adOpenDynamic
.Open "Select mission from affaire group by mission"
End With


'Menu contextuel Mission
Name = MnuMission
'Entrée statique 1
Name = mnuMissionSatic0
'Entrée statique 2
Name = mnuMissionSatic1

'Les sous items
'aucun
Name = mnuMissionDynDAO
Index = 0
Enabled = False
'ce seront tes entrées de menu dynamiques
'Entrée statique X
Name = mnuMissionSaticX

'A partir de là, pour charger une nouvelle entrée dans le
menu:

Load mnuMissionDynDAO(mnuMissionDynDAO.Ubound + 1)
mnuMissionDynDAO.Caption = "Titre de lentrée dynamique"
mnuMissionDynDAO(0).Visible = False

'Pour supprimer une entrée:
If mnuMissionDynDAO.Count = 2 Then
mnuMissionDynDAO(0).Visible = True
'on doit avoir au minimum une entrée visible dans le menu
End If
Unload mnuMissionDynDAO(Index)

'Tu récupère les click sur tous les items via l'événement
Click du "tableau" mnuMissionDynDAO.
'Cet événement contiendra un paramètre Index indiquant de
quel item il s'agit.

j'avoue que je suis completement perdu

JOYEUX NOEL

merci de ta réponse
Jean Claude
-----Message d'origine-----
"JCM" a écrit dans le


message de
news:06ad01c3ca1a$e7551860$
je voudrais lister les fichiers d'un seul repertoire (je
ne veux de l'arborescence du disque), il s'agit de




tables
d'une base.mdb
quel le meilleur choix : treeview ou commondialog ?
un click sur le fichier doit ouvrir le fichier
Pouvez-vous me dire ou je peux trouver un bout de code ?

Autre question
est-il possible de créer un menu flottant dont les




titres
des sous-menus seraient des données extraites par une




DAO ?
toujours un exemple possibles ?



Bonjour/soir,

Pour lister les fichiers d'un répertoire, tu peux


utiliser Dir:

Dim strBuffer As String

strBuffer = Dir("c:toto")

Do while strBuffer <> ""
'Ajouter l'élément stoqué dans strBuffer à la liste
strBuffer = Dir
Loop

Pour l'affichage, puisqu'il n'y a pas d'arborescence, une


simple listbox ou
listview (Microsoft Windows Commons Controls 6.0) suffit.
Tu récupèrera le click par l'événement click. L'item


sélectionné sera
ListView.Selectedtem ou ListBox.ListIndex

En ce qui concerne le menu contextuel, il te faut au


minimum un élément de
sous menu dont l'index serait 0.

Exemple:
Mon Menu contextuel (name = mnuContext)
|-Entrée statique 1 (name = mnuContextSatic0)
|-Entrée statique 2 (name = mnuContextSatic1)
...
|-Mes sous items
| |-(aucun) (name=mnuContextDynDAO; Index = 0;


Enabled = False; ce
seront tes entrées de menu dynamiques)
|- Entrée statique X (name = mnuContextSaticX)
...
A partir de là, pour charger une nouvelle entrée dans le


menu:

Load mnuContextDynDAO(mnuContextDynDAO.Ubound + 1)
mnuContextDynDAO.Caption = "Titre de lentrée dynamique"
mnuContextDynDAO(0).Visible = False

Pour supprimer une entrée:
If mnuContextDynDAO.Count = 2 Then
mnuContextDynDAO(0).Visible = True 'on doit avoir au


minimum une entrée
visible dans le menu
End If
UnLoad mnuContextDynDAO(Index)

Tu récupère les click sur tous les items via l'événement


Click du "tableau"
mnuContextDynDAO.
Cet événement contiendra un paramètre Index t'indiquant


de quel item il
s'agit.

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


.



Avatar
François Picalausa
Bonjour/soir,

<réponse inline>

"JCM" a écrit dans le message de
news:008501c3ca42$0e57e740$
Option Explicit
Private Sub Form_Load()
'creation d'un objet recordset
<snip>
'Requete sur les types de mission à afficher dans
<snip>

'Menu contextuel Mission
Name = MnuMission
'Entrée statique 1
Name = mnuMissionSatic0
<snip>



Ces entrées de menu, il faut les créer via l'éditeur de menu, et non pas par
le code...


'A partir de là, pour charger une nouvelle entrée dans le
menu:

Load mnuMissionDynDAO(mnuMissionDynDAO.Ubound + 1)
mnuMissionDynDAO.Caption = "Titre de lentrée dynamique"
mnuMissionDynDAO(0).Visible = False

'Pour supprimer une entrée:



On pourrait faire un sub de ceci:

Sub AjouteItemMenu(Titre As String)
Load mnuMissionDynDAO(mnuMissionDynDAO.Ubound + 1)
mnuMissionDynDAO(mnuMissionDynDAO.Ubound).Caption = Titre
mnuMissionDynDAO(mnuMissionDynDAO.Ubound).Visible = True
mnuMissionDynDAO(0).Visible = False
End Sub

Sub SupprimeItemMenu(Index As Integer)
If mnuMissionDynDAO.Count > 1 Then 'Il faut toujours avoir un élément
visible dans le menu
mnuMissionDynDAO(0).Visible = (mnuMissionDynDAO.Count = 2)
Unload mnuMissionDynDAO(Index)
End If
End Sub

'Tu récupère les click sur tous les items via l'événement
Click du "tableau" mnuMissionDynDAO.
'Cet événement contiendra un paramètre Index indiquant de
quel item il s'agit.



Celà signifie:

Private Sub mnuMissionDynDAO_Click(Index As Integer)
Msgbox "Vous avez cliqué sur : " & mnuMissionDynDAO(Index).Caption
End Sub


j'avoue que je suis completement perdu



J'espère que ce post sera une meilleure explication ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com