|
|
|
|
ruth, le mardi 29 juin 2004 à 14:01:12Bonjour,
Je recherche a faire la meme chose en vba sous access, mais les fonctions citée dans le lien précédent ne sont pas reconnues. Si quelqu'un peut m'aider ,Merci :) |
|
Bonjour,
Sous VB et VBA vous pouvez utiliser les objets de scripting ! Exemple :
Sub ListeFichier
Const ctePourLecture = 1
Const ctePourEcrire = 2
Const ctePourAjouter = 8
Dim objFSO, objDossier, objFichier, objResultat
Dim Repertoire, NomFichierTxt
On Error Resume Next
Repertoire = "C:\Document\Excel"
NomFichierTxt = "Resultat.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDossier = objFSO.GetFolder(Repertoire)
Set objResultat = objFSO.CreateTextFile((Repertoire & "\" & NomFichierTxt),ctePourEcrire)
If (objDossier.Files.Count > 0) Then
For Each objFichier In objDossier.Files
If (InStr(1, objFichier.Name, ".xls", 1) > 0) Then
objResultat.WriteLine objFichier.Name
End If
Next
End If
objResultat.Close
Set objResultat = Nothing
Set objDossier = Nothing
Set objFSO = Nothing
End Sub
Lupin |
Merci beaucoup de ta reponse,
mais j'ai trouvé un code plus simple sous vba: With Application.FileSearch .LookIn = "C:\dede" .Filename = "*.*" If .Execute > 0 Then MsgBox "There were " & .FoundFiles.Count & _ " file(s) found." For i = 1 To .FoundFiles.Count MsgBox .FoundFiles(i) Next i Else MsgBox "There were no files found." End If End With Vus que le controle dirlistbox,drivelistbox sous vba n'existe pas, a ton avis faut t'il beaucoup de temps pour recréer un mini exploreur avec cette fonction et un treeview? (je ne connais pas les treeview, je sui entrain de me documenter dessus) |
re:
Non, ce fut d'ailleur l'un de mes TPs lors de mon 3e cours de VB, créer un interface qui remplace la boite de dialogue [Ouvrir] et [ Enregistrer sous ]. Lupin |
Bonjour :)
Ce week-end j'ai eu le temps de comprendre ce qu'était un treeview et comment globalement cela fonctionnait 'il. En effet c'est pas tres compliqué. Néanmoins je sui tombé sur une autre difficultée, certains repertoires ont un acces protégé (interdit a l'utilisateur que je suis). Ainsi lorsque je souhaite obtenir l'arboloescence de ces derniers, cela bug et une erreur apparait, quelqu'un aurait une idée afin de contrer cela? Merci d'avance :) |
Bonjour,
Je cherche un peu à faire la même chose...seulement que moi l'utilisateur choisit le répértoire ou il faut lister les .doc ensuite j'aimerai pouvoir tout lister dans une listBox mais je sais aps trop comment faire... Voici mon code : ce qu'il faut déclarer en haut
Option Compare Database
Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Public Enum NetWork
WithNetworkFolders = 0
WithoutNetworkFolders = 2
End Enum
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
As Long
Const BIF_RETURNONLYFSDIRS = &H1
Const BIF_USENEWUI = &H40
mon bouton parcourir :
Private Sub btn_parcourir_Click()
Me.edit_repertoire = SelectFolder("D:\", WithoutNetworkFolders)
If IsNull(edit_repertoire) Or Len(edit_repertoire) = 0 Then
btn_lister.Visible = False
Else
btn_lister.Visible = True
End If
End Sub
la fonction SelectFolder :
Public Function SelectFolder(Optional Folder As String = "" _
, Optional NetWorkFolders As NetWork = WithNetworkFolders _
) As String
Dim X As Long, bi As BROWSEINFO, dwIList As Long
Dim szPath As String, wPos As Integer
If Folder = "" Then Folder = CurrentProject.Path
With bi
.hOwner = hWndAccessApp
.lpszTitle = "Sélectionnez votre dossier et cliquez sur OK"
.ulFlags = BIF_RETURNONLYFSDIRS _
Or BIF_USENEWUI _
Or NetWorkFolders
End With
dwIList = SHBrowseForFolder(bi)
szPath = Folder & Space$(512 - Len(Folder))
X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
If X Then
wPos = InStr(szPath, Chr(0))
SelectFolder = Left$(szPath, wPos - 1)
Else
SelectFolder = ""
End If
End Function
je rend visible mon bouton lister :
Private Sub edit_repertoire_Change()
If IsNull(edit_repertoire.Text) Or Len(edit_repertoire.Text) = 0 Then
btn_lister.Visible = False
Else
btn_lister.Visible = True
End If
End Sub
fonction de mon bouton lister (c'est la ou je bloque :S)
Private Sub btn_lister_Click()
Dim ext As String
Dim Ctr As Integer
Const myRep = "edit_repertoire.Text" ' Voir s'il ne faut pas definir repertoire...
ext = Dir(myRep & "*.doc")
List_rep.Visible = True
List_rep.DefaultValue = ""
Do While ext <> ""
List_rep.ControlSource = ext
ext = Dir
Loop
List_rep.ListStyle = fmListStyleOption
Next
End Sub
Si qqun pourrait m'aider ca serait vraiment sympa... |
Bonjour,
je n'ai pas tout saisi faute de temps mais déjà il serait souhaitable de modifier la déclaration de la constante. Const myRep = "edit_repertoire.Text" ext = Dir(myRep & "*.doc") la constante semble pointer sur un objet VB et on y lit la propriété "Text", la constante ne peut varier lors de l'éxécution du programme, ce serait plutôt : Dim myRep As String myRep = "edit_repertoire.Text" ext = Dir(myRep & "*.doc") Lupin |
Bonjour,
pour le moment Access ne m'a pas généré d'erreur à ce niveau la... mais il ne trouve pas la propriété : ListStyle En VBA ca n'existe pas et je suis un peu coincé...y'a-t-il un autre moyen avec une boucle et un indice qui s'incrémente ? qqch comme ca...? Merci d'avance. Meilleures salutations. |
Bonjour,
pour le moment Access ne m'a pas généré d'erreur à ce niveau la... mais il ne trouve pas la propriété : ListStyle En VBA ca n'existe pas et je suis un peu coincé...y'a-t-il un autre moyen avec une boucle et un indice qui s'incrémente ? qqch comme ca...? Merci d'avance. Meilleures salutations. |
Bonjour,
pour le moment Access ne m'a pas généré d'erreur à ce niveau la... mais il ne trouve pas la propriété : ListStyle En VBA ca n'existe pas et je suis un peu coincé...y'a-t-il un autre moyen avec une boucle et un indice qui s'incrémente ? qqch comme ca...? Merci d'avance. Meilleures salutations. |
Pkoi mon post s'affiche-t-il 3 fois ??? |
J'ai essayé comme ceci mais sans résultat...
Private Sub btn_lister_Click()
Dim ext As String
Const myRep = "edit_repertoire.Text" ' Voir s'il ne faut pas definir repertoire...
ext = Dir(myRep & "*.doc")
List_rep.RowSource = ""
'Do While ext <> ""
'List_rep.RowSource = List_rep.RowSource & ext & ";"
'ext = Dir
Loop
'List_rep.ListStyle = fmListStyleOption
End Sub
Personne n'a une idée svp ? je commence à desespérer :'( |
Bonjour,
vous devez détailler plus précicément la nature des objets utilisés ! voici un exemple de code :
Private Sub btn_lister_Click()
Dim monRep As Variant
Dim ext As String, Ctr As Integer
ext = ""
monRep = Me.edit_repertoire.Value
ext = Dir(monRep & "\*.doc")
List_rep.Visible = True
List_rep.DefaultValue = ""
Do While ext <> ""
Me.List_rep.AddItem ext
ext = Dir
Loop
'List_rep.ListStyle = fmListStyleOption
End Sub
'
je ne m'explique toujours pas : Const myRep = "edit_repertoire.Text" et quel est le type de l'objet [ List_rep ] ? Lupin |
Merci pour votre réponse...
mais pour info les propriétés additems et lifestyle sont propriétaire à VB et non à VBA cela n'existe pas...donc c'est pour ca que je cherche un autre moyen de le faire... Merci d'avance. |
Bonjour,
le code soumis dans mon dernier post a été généré et testé sous VBA d'access. Pour ce qui est de la méthode AddItem, elle est bel et bien présente sous VBA, je l'utilise depuis longtemps ... Lupin |
Ah...c'est bizarre ca car chez moi elle est inconnue...
Quelle est la version d'Access que vous utilisez ? Y'a-t-il une librairie à activer ou un dll ??? De mon coté je suis en Access 2000... Merci d'avance. |
re :
je suis sous Access 2002 ( "Suite Office XP"). pour ce qui est des librairies supplémentaires, je vais jeter un coup d'oeil ce soir, car la je ne suis pas sous le même environnement. si vous vouliez bien identifier les objets que vous utiliser, je pourrai plus vous donner mon opignon !!! List_Rep : Zone de liste déroulante, Zone de liste, Zone de texte ... ? edit_repertoire : Zone de liste déroulante, Zone de liste, Zone de texte ... ? Lupin |
Oki aucun problème
Merci bcp de consacrer un peu de temps pour moi :) Sinon pour les 2 objets : List_Rep : Zone de liste edit_repertoire : Zone de texte Merci d'avance. |