tableau aléatoire [ résolu ] [VB6] - VB/VBA/VBS - Programmation
Marsh Posté le 09-06-2005 à 17:03:05
C'est bizarre...20 personnes ont visulisé mon topic mais aucune réflexion.
Si vous trouvez que mes explicatios ne sont pas claires n'hésitez pas à le dire.
Marsh Posté le 09-06-2005 à 17:14:57
amsterdam a écrit : Salut. |
Salut,
Ce que tu peux faire c'est utiliser la fonction rmd (si mes souvenirs sont exacts) pour "tirer" un chiffre aléatoire qui sera l'indice de ton tableau dans lequel placer ton mot.
Et tu boucles jusqu'à ce que ton tableau soit plein! Attention, il te faudra sûrement tester la valeur du chiffre aléatoire trouvé parce que peut-être que VB retournera plusieurs fois le même. Mais je ne suis pas sûr parce qu'il me semble que tu peux "initialiser" le randomize... Et si tu ne l'initialise qu'une fois, peut-être qu'il te sortira tous les nombres sans "tirer au sort" 2x le même.
Voilà... Faut juste être patient
Marsh Posté le 09-06-2005 à 17:38:04
C'est justement le problème de doublons qui me pose problème.
Donc en attendant j'ai commencé à tester autre chose.
Je crée une boucle qui me sort une chaine genre "123456" en fonction de la taille du tableau.
Me reste plus qu'à extraire les chiffres qui représentent l'indice du tableau de mots et comme ça pas de doublons.
Bon d'accord c'est surement un peu bourrin mais bon....
Enfin merci pour ta réponse.
Marsh Posté le 09-06-2005 à 17:46:29
Par contre si j'ai plus de 10 mots je vais être mal....enfin j'essaie quand même.
Marsh Posté le 09-06-2005 à 18:27:58
Rapido:
sub test()
Dim MyValue As Integer
Dim Nbmot, Cpt1, Cpt2 As Integer
Dim Montext, MonItem As String
Dim MonTabl() As String
'Texte
'Montext = "On ne peut pas attendre que l'inspiration vienne. Il faut courir après avec une massue."
Montext = "Les fichiers d'aide de Windows 2000 Server sont généralement placés dans " & _
"C:\Winnt\Help. Ces fichiers sont interconnectés pour former un système d'aide " & _
"intégré et ils contiennent des raccourcis permettant d'ouvrir différents outils " & _
"d'administration. Les fichiers d'aide utilisent environ 30 Mo d'espace disque."
Montext = RTrim(LTrim(Montext))
'Compte nb mot
Cpt1 = 0
Nbmot = 0
Do
Cpt1 = InStr(Cpt1 + 1, Montext, Chr(32))
Nbmot = Nbmot + 1
Loop While Cpt1 > 0
'dim le tableau
ReDim MonTabl(Nbmot)
'init
Cpt1 = 0
Randomize ' Initialise le générateur de nombres aléatoires.
'boucle sur nbmot
For Nbmot = 0 To UBound(MonTabl, 1) - 1
Cpt1 = InStr(Cpt1 + 1, Montext, Chr(32))
Select Case Nbmot
Case 0
Cpt2 = Cpt1 - 1
Cpt1 = 0
Case UBound(MonTabl, 1) - 1
Cpt2 = Len(Montext)
Case Else
Cpt2 = InStr(Cpt1 + 1, Montext, Chr(32))
End Select
MonItem = Mid$(Montext, Cpt1 + 1, Cpt2 - Cpt1)
MonItem = RTrim(MonItem)
If Right(MonItem, 1) = Chr(46) Then MonItem = Mid(MonItem, 1, Len(MonItem) - 1)
'cherche un index aléatoire dispo ds la dim du tableau
Do
MyValue = Int((UBound(MonTabl, 1) * Rnd))
Loop While MonTabl(MyValue) <> ""
MonTabl(MyValue) = MonItem
Next
'Test
For Cpt1 = 0 To UBound(MonTabl, 1) - 1
Debug.Print MonTabl(Cpt1)
Next
end sub
Bon! le traitement du texte est à revoir (structure, gestion fin paragraphe, majuscules ou pas...) l'essentiel est dans la dernière boucle Do...
Marsh Posté le 09-06-2005 à 19:08:14
Donc si je comprend bien la vérité ( est alleuirs )se trouve dans cette portion de code ?
|
Bon bah y a plus qu'à....
Merci.
Marsh Posté le 09-06-2005 à 21:45:30
Ok.
Sinon j'ai fait ceci en m'inspirant d'un truc trouvé sur un autre site et
à priori ça fonctionne.
|
Reste quand même à changer le nom des variables .
Merci à vous deux et rendez-vous à mon prochain bloquage.
Marsh Posté le 07-06-2005 à 19:35:15
Salut.
Voilà j'ai des données à transférer d'un fichier texte vers un tableau, en fait les différents mots d'une phrase.
Le problème est que j'y arrive bien tant qu'il faut que les données soient dans l'ordre mais je ne sais pas comment faire pour placer ces mots dans mon tableau de façon aléatoire.
Si qqun avait une idée...
Merci d'avance.
Message édité par amsterdam le 09-06-2005 à 21:46:41