Mixer des lettres

Résolu
Signaler
Messages postés
22
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
24 janvier 2008
-
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
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

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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é.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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 ...
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
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 ...