Mixer des lettres

Résolu
cs_Fyerrblad Messages postés 22 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 24 janvier 2008 - 1 juin 2007 à 17:13
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 2 juin 2007 à 12:58
Slt,

C'était pour demander comment peut-on faire pour mixer des lettres dans un TextBox.
Ex: Dans le TextBox, on a "bonjour", et mixer en "ruobnju".
Merci.

- Fyerrblad -

3 réponses

jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
1 juin 2007 à 17:43
Mets tes lettres (exraites avec une boule For... next) dans un tableau ou dans une listbox et fais des tirages aléatoires dans le tableau ou la listbox (en tirant aléatoirement sur l'index et en ne reprenany plus cet index).
Si tu utilises une listbox : fastoche : tu supprimes à chaque index tiré l'article correspondant.
Di tu utilises un tableau, c'est un peu plus complexe et d'aucuns te parleront de l'utilisation d'une boucle pour ne pas retirer ce qui a déjà été tiré. Il existe cependant une autre méthode (mfienne) pour éviter cette boucle.
Réfléchis et commence sur ces indications.$Reviens si tu rencontres un problème particulier et bien défini de mise en oeuvre, en nous montrant la partie du code concerné où tu rencontres une difficulté.
3
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
2 juin 2007 à 11:36
tiens,

Je m'ennuyais et me suis donc lancé à faire du "rigolo" sans listbox :

Une Form, une textbox text1 (avec sa propriété multiligne = true)
un bouton de commande command1

Tu peux, en prime, décider se tirer un seul ou plusieurs mixages aléatoires (paramétrable)

Private tab_tirage() As String
Private Sub Command1_Click()
  Randomize
  borneinf = 1
  bornesup = Len(Text1.Text)
  atirer = bornesup
  nombre = 10   '  ici combien de mots mélangés du veux obtenir à partir de ton mot
  possibles = bornesup - borneinf
  ReDim tab_tirage(possibles) As String
  For i = 0 To UBound(tab_tirage)
    tab_tirage(i) = Mid(Text1.Text, borneinf + i, 1)
  Next
  Text1.Text = ""
  For i = 1 To nombre
    tirons atirer
  Next
End Sub


Private Sub tirons(atirer)
 nb = 0
 Let titi = tab_tirage
  For i = 0 To atirer - 1
    quid = Int(((UBound(titi) - nb) * Rnd))
    Text1.Text = Text1.Text & titi(quid)
    titi(quid) = titi(UBound(titi) - nb)
    nb = nb + 1
  Next
  Text1.Text = Text1.Text & vbCrLf
  Set titi = Nothing
End Sub


tu lances, mets un mot dans la textbox et cliques sur command1

Attention : j'ai voulu m'amuser ! Ce n'est pas la seule façon de procéder, hein ...
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
2 juin 2007 à 12:58
et si tu veux qu'en plus un même "mélange" ne soit pas tiré plus d'une fois, c'est également possible, bien évidemment ...
0