Choix aléatoire d'un fichier texte ds un dossier [Résolu]

cs_Achi 128 Messages postés lundi 27 février 2006Date d'inscription 17 mai 2008 Dernière intervention - 28 févr. 2006 à 22:35 - Dernière réponse : econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention
- 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!!
Afficher la suite 

6 réponses

Meilleure réponse
econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention - 1 mars 2006 à 09:54
3
Merci
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

Merci econs 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Meilleure réponse
jpleroisse 1788 Messages postés mardi 7 novembre 2000Date d'inscription 11 mars 2006 Dernière intervention - 1 mars 2006 à 10:36
3
Merci
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.

Merci jpleroisse 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

bernie666 427 Messages postés mercredi 1 octobre 2003Date d'inscription 29 janvier 2008 Dernière intervention - 28 févr. 2006 à 23:06
0
Merci
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 ;)
cs_Achi 128 Messages postés lundi 27 février 2006Date d'inscription 17 mai 2008 Dernière intervention - 28 févr. 2006 à 23:14
0
Merci
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!!
bernie666 427 Messages postés mercredi 1 octobre 2003Date d'inscription 29 janvier 2008 Dernière intervention - 28 févr. 2006 à 23:36
0
Merci
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 ++
econs 4066 Messages postés mardi 13 mai 2003Date d'inscription 23 décembre 2008 Dernière intervention - 1 mars 2006 à 13:49
0
Merci
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.