Sélection d'un répertoire

Pino - 25 oct. 2001 à 11:00
cs_panpan Messages postés 99 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 4 juillet 2008 - 7 juin 2003 à 19:31
Apres avoir entré 4 chiffres dans un textbox,j'aimerais les mettre dans une variable pour sélectionner un répertoire dont le nom commence par 4 chiffres et ensuite des lettres (1234test ou 4567test1,...)pour ensuite ouvrir mon fichier désiré qui se trouve dans celui-ci.
Lorsque je met les quatre chiffres dans une variables avec un & "*.*" ca ne marche pas car le répertoire est vu comme exemple : c:\windows\123*.* et donc le répertoire 123*.* n'existe pas car cela aurait du etre 123test.

Merci d'avance pour votre aide.

7 réponses

ben c'est normal. ton code ne peut pas deviner où tu veux aller.
alors si le texte de ta textbox est 123 et que tu veux 123test :
chdir "c:\windows" & textbox.text & "test"
0
Oui mais si tu as 200 répertoires en plus de ceux qu'y s'ajoutent quotidiennement,comment ouvrir un fichier dans ce répertoire choisi par l'intérmediare des 4 numéros encodés auparavant dans le textbox? puisque tu ne connais que le numéro et pas ce qu'il y derrière.

Sorry si je me suis fais mal comprendre et merci pour ton aide.
0
J'avais poste ça (mais mon pseudo n'apparaissait pas)
qui trouvait les fichiers commençant par les 4 chiffres specifies:

Sub gg()
temp = 123456

quatre = Mid(temp, 1, 1) & Mid(temp, 4, 1) & Mid(temp, 5, 1) & Mid(temp, 6, 1)
quatre = quatre & "*.*"

Set fs = Application.FileSearch
With fs
.LookIn = "C:"
.SearchSubFolders = True
.Filename = quatre
If .Execute > 0 Then
MsgBox "Il y a " & .FoundFiles.Count & _
" fichier(s) trouve."
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)

Next i
Else
MsgBox "il n'y a pas de Fichiers trouves."
End If
End With
'ouvre le premier fichier trouve
Workbooks.Open Application.FileSearch.FoundFiles(1)

End Sub

Si Maintenant tu veux le dossier qui commence par les 4 chiffres tu peux faire ça(ça marche a condition que ton dossier ce trouve juste a un niveau en "dessous" du dossier "specdossier"

Sub test()
AfficheListeDossier ("c:")'le dossier parent
End Sub

Sub AfficheListeDossier(specdossier)
Dim fs, f, f1, s, sf
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set sf = f.SubFolders
temp = 123456
quatre = Mid(temp, 2, 1) & Mid(temp, 3, 1) & Mid(temp, 4, 1) & Mid(temp, 5, 1)
'quatre=2345
For Each f1 In sf
s = f1.Name If Left(s, 4) quatre Then chemin f & s & ""
End If
Next
MsgBox chemin
End Sub
0
Voici une autre version qui cette fois teste tous les dossiers et les sous dossiers (a tous les niveaux)
tu lance test() et tu obtiens le chemin du dossier commençant par 2345 dans la variable chemin.

Sub test()
AfficherListeDossiers ("c:")
End Sub

Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s, fcc
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.subfolders
temp = 123456
quatre = Mid(temp, 2, 1) & Mid(temp, 3, 1) & Mid(temp, 4, 1) & Mid(temp, 5, 1)


For Each f1 In fc
If Left(f1.Name, 4) = quatre Then
chemin = specdossier & f1.Name & ""
MsgBox chemin
GoTo fini
End If
s = specdossier & f1.Name & ""
AfficherListeDossiers (s)
Next
fini:

End Sub
0

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

Posez votre question
Merci beaucoup Orion pour ton aide et excuse-moi si j'ai mis un peu de retard a te répondre.
En fait je suis débutant en la matière mais j'aimerais comprendre ton programme.
Si je crée une nouvelle form ou dois-je mettre le Sub test(),est-ce un bouton ou autre?
Que dois-je mettre a la place de specdossier?
Car j'aimerais insérer un textbox dans lequel on entrerais 6 chiffres et que l'on validerais ensuite par un bouton de commande pour ouvrir le fichier désiré qui se trouve dans le répertoire composé de quatre + des lettres.
Donc text1.text = temp,ca,c'est Ok.
Le sub test serait-ce le bouton de commande?.

Merci encore pour ton aide.

Sub test()
AfficherListeDossiers ("c:")
End Sub

Sub AfficherListeDossiers(specdossier)
Dim fs, f, f1, fc, s, fcc
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.subfolders
temp = 123456
quatre = Mid(temp, 2, 1) & Mid(temp, 3, 1) & Mid(temp, 4, 1) & Mid(temp, 5, 1)

For Each f1 In fc
If Left(f1.Name, 4) = quatre Then
chemin = specdossier & f1.Name & ""
MsgBox chemin
GoTo fini
End If
s = specdossier & f1.Name & ""
AfficherListeDossiers (s)
Next
fini:

End Sub
0
j'ai modifié légerement les Codes(j'ai transformé le sub en function notamment):

Si tu cree un bouton de commande
tu met dans son code:


sub cmd_click()
temp = 123456
'en fait temp c'est l'élément de ta listbox sélectionnée
quatrechiffre = Mid(temp, 2, 1) & Mid(temp, 3, 1) & Mid(temp, 4, 1) & Mid(temp, 5, 1)
chemincherché=AfficherListeDossiers("c:", quatrechiffre)
end sub

chemincherché contiendra le chemin complet du dossier commençant par tes 4 chiffres

Function AfficherListeDossiers(specdossier,quatre) As String
'retourne le chemin complet du dossier commençant par quatre
Dim fs, f, f1, fc, s, fcc
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(specdossier)
Set fc = f.subfolders
chemin = "" 'par défaut on ne trouve par le dossier

For Each f1 In fc
If Left(f1.Name, 4) = quatre Then
chemin = specdossier & f1.Name & ""
MsgBox chemin 'ça tu peux supprimer
GoTo fini
End If
s = specdossier & f1.Name & ""
tt = AfficherListeDossiers(s,quatre) 'tt ne sert qu'a lançer la fonction
Next
fini:
If chemin = "" Then 'si pas trouvé
AfficherListeDossiers = ""
Else
AfficherListeDossiers = chemin 'trouvé
End If

End Function

Donc au final tu obtiens le chemin de ton Dossier
Si tu veux autre chose ensuite n'hesite pas a demander .
ps:pour optimiser il te faut déclarer toutes les variables
0
cs_panpan Messages postés 99 Date d'inscription lundi 6 janvier 2003 Statut Membre Dernière intervention 4 juillet 2008
7 juin 2003 à 19:31
Yann
0
Rejoignez-nous