Choix aléatoire d'un fichier texte ds un dossier

Résolu
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008 - 28 févr. 2006 à 22:35
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 1 mars 2006 à 13:49
bonsoir,

est il possible d'ouvrir aléatoirement un fichier text dans un dossier?
ds mon code vba j'ouvre un fichier text :

Open "c:\....\Trukmuche\acq.txt" For Input As #1

Mais ds mon dossier Trukmuche j'ai plusieurs fichier .txt, que je voudrais ouvrir aléatoirement!!

ca me parait pas très faisable cette histoire!!

6 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 25
1 mars 2006 à 09:54
Salut,



Voici un exemple de procédure qui recherche tous les fichiers texte d'un répertoire donné, et qui en extrait un au hasard.









Sub RechercheFichiers(sFolder As String)
' Cette procedure recherche tous les fichiers texte contenus dans un répertoire donné.
' Elle les affiche dans une ListBox (nommée lstFiles, à ajouter sur ta feuille).
Dim NomFichier As String
Dim nbFiles As Long

NomFichier = "*.txt"
lstFiles.Clear

With Application.FileSearch
.NewSearch
.LookIn = sFolder
.SearchSubFolders = True
.Filename = NomFichier
.FileType = msoFileTypeAllFiles
.MatchTextExactly = True
If .Execute(msoSortByNone) > 0 Then
For i = 1 To .FoundFiles.Count
lstFiles.AddItem .FoundFiles(i)
Next i
Else
MsgBox "Aucun fichier n'a été trouvé."
End If
End With
End Sub



' Et là juste un bouton qui lance la recherche des fichiers textes :



Private Sub CommandButton2_Click()
Dim sFolder As String
sFolder = "C:\tmp" ' Met ton dossier ici
RechercheFichiers sFolder
End Sub



' Ensuite, quand ta listbox est remplie, tu en connais facilement le nombre d'éléments par la propriété lstFiles.ListCount



Sub PrendreUnFichierAuHasard()

Dim monFichierAuHasard As String

Dim iChoix As Integer



iChoix = Int(Rnd*LstFiles.ListCount)

monFichierAuHasard = lstFiles.List(iChoix)

MsgBox monFichierAuHasard ' Et hop ! Un fichier pris au hasard !



End Sub






Manu
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
1 mars 2006 à 10:36
Bonjour,

Tu peux ausssi utiliser cette méthode.



Private Sub Command1_Click()

Dim Chemin As String

Dim t() As String

Dim f As String

Dim idx As Integer



Chemin = "c:\Mes documents"

idx = -1



' remplissage du tableau avec les chemin\nom_de_fichier.txt

f = Dir(Chemin & "*.txt")



Do While f <> ""

idx = idx + 1

ReDim Preserve t(idx)

t(idx) = Chemin & f

f = Dir

Loop



' choix au hasard

If idx > -1 Then

Randomize Time 'init du générateur aléatoire

MsgBox t(UBound(t) * Rnd)

'ou Open t(UBound(t) * Rnd) for ......

End If



End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
3
bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
28 févr. 2006 à 23:06
euh ben dans un premier temps j'aimerai que tu m'explique l'interet que tu aurais de faire ca ?!?

sinon si c'est vraiment ce que tu veux faire ... ben si tu connais le nom de tes fichiers tu stockes ces noms dans une liste et tu fait un random pour recuperer l'index et avoir l'un des fichiers aleatoirement ...

envin bon... a pas tout compris ce que tu voulais faire ;)
0
cs_Achi Messages postés 128 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 mai 2008
28 févr. 2006 à 23:14
salut Berni666!

en fait je ne connais pas le langage vba... j'apprends tt simplement... et là je crée un Su do-ku sur excel!!
on apprends comme on peut! lol!
mes fichiers .txt correspondent à mes grilles...
j'y suis arrivé mais avec un fichier donc c pour ca que je souhaiterais faire un choix aléatoire...

Mais là c moi qui n'ai pas bien compris, enfin si j'ai compris mais je ne connais pas la synthaxe!!
0

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

Posez votre question
bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
28 févr. 2006 à 23:36
je connais pu la syntax en vba mais ce qu'il faut que tu fasse c'est creer tes differents fichiers dans un repertoir
sudoku1.txt
sudoku2.txt
sudoku3.txt
......
sudokuN.txt

et apres qd tu charches ton appli tu fait

dim monNumFichier as integer

monNumFichier = Int((N* Rnd) + 1) 'sa devrai te tirer un nombre aleatoire en fonction de ton nombre de fichier

une fois que tu a le nom de ton fichier =>

Open "c:\....\Trukmuche\sudoku"& monNumFichier & ".txt"

dsl pour la syntax sa remonte a loin vba ^^

Bon courage ++
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 25
1 mars 2006 à 13:49
t(UBound(t) * Rnd) ne choisira jamais le dernier fichier de la liste, car Rnd<1.

De plus, il manque un Int() car Rnd est un nombre décimal. t(3.52) n'existe pas.

Manu
0
Rejoignez-nous