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

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

6 réponses

Meilleure réponse
Messages postés
4066
Date d'inscription
mardi 13 mai 2003
Dernière intervention
23 décembre 2008
- 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é 87 internautes ce mois-ci

Meilleure réponse
Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Dernière intervention
11 mars 2006
- 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é 87 internautes ce mois-ci

Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Dernière intervention
29 janvier 2008
- 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 ;)
Messages postés
128
Date d'inscription
lundi 27 février 2006
Dernière intervention
17 mai 2008
- 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!!
Messages postés
427
Date d'inscription
mercredi 1 octobre 2003
Dernière intervention
29 janvier 2008
- 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 ++
Messages postés
4066
Date d'inscription
mardi 13 mai 2003
Dernière intervention
23 décembre 2008
- 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.