maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010
-
18 août 2006 à 21:03
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010
-
22 août 2006 à 16:01
Bonjour,
Je vais essayer d'expliquer mon problème ; j'ai dans un textbox un text comme ça : "vie, manger, manger, manger herbe jardin" et j'aimerai remplacer chaque "manger" par un mot clef (toujours différent) au hasard pris dans une listbox ce qui pourrais donner "vie, fraise, pomme poire herbe jardin"
et quand je fais la fonction replace sa va transformer tout mes "manger" par le même mot clef
Text1.Text = Text1.Text + Replace(Text1.Text, "manger", Int(5250 * Rnd))
Pour la sélection dans ma textbox j'utilise sa :
dim fruits as string
fruits = Form5.List1.List("20" * Rnd + "1")
Comment faire pour que sa fonctionne (oui je sais je suis un débutant) ?
cedvinc
Messages postés19Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention15 décembre 2007 19 août 2006 à 15:54
Je pense que tu pourrais t'aider des fonctions de selection de TextBox pour selectionner un mot et le remplacer.
A l'aide de la fonction InStr, fait instr(1,textbox1.text,"manger") qui retourne un entier spécifiant la position de
début de la première occurrence d'une chaîne à l'intérieur d'une autre.
Car tu connais la longueur du mot remplacer par Len qui retourne un entier contenant le nombre de caractères contenus dans une chaîne.
Si dans le code, on peut faire une séelction à partir du point de départ jusqu'au point d'arriver (départ + longueur du mot recherché), il suffirait de faire:
TextBox1.SelectedText = "Mot à Mettre"
cedvinc
Messages postés19Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention15 décembre 2007 18 août 2006 à 22:00
D'abord initialise tes nombres aléatoires au lancement de ton application, pour éviter d'avoir tj la même suite de nombre généré par RND(), par:
Randomize()
Il va éviter de générer tj la même suite de nombres.
Première hypothèse: Il faut peut être réaliser une pause de 1 seconde car il se peut qu'il génère à la suite le même nombre aléatoire car tj le même temps.
Seconde hypothèse: La fonction Remplace contrôle tout le texte tout de suite donc il arrête ta boucle.
Voici l'aide que je peux t'apporter et d'aider à la vue de tes informations. J'espère de donner des pistes.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 août 2006 à 00:24
salut,
c'est la solution 2 soumise par cedvinc.
en effet replace remplace toutes les occurences d'une chaîne par une autre.
il te faut donc soit supprimer toutes ces occurences en tableau (instruction split) puis reconcaténer avec ta suite aléatoire en boucle de 1 à ubound(Tableau), soit une boucle en utilisant instr left right mid.
dans les 2 cas il faut en effet initialiser ton aléa avec radomize
Option Explicit
'
Private Sub Form_Load()
Randomize
Dim sMess As String
Dim aAleat() As Variant
aAleat = Array ("vie", "fraise", "pomme", "poire", "herbe", "jardin")
Dim sChaine1 As String
sChaine1 = "vie, manger, manger, manger, herbe, jardin"
sMess = sChaine1 & vbCrLf
If InStr (1, sChaine1, "manger") > 0 Then
Dim i As Integer
Dim aChaine() As String
Dim sChaine2 As String
aChaine = Split(sChaine1, "manger")
sChaine2 = aChaine(0)
For i = 1 To UBound (aChaine)
sChaine2 = sChaine2 & aAleat(Int(Rnd * 6)) & aChaine(i)
Next i
MsgBox sMess & sChaine2
Else
MsgBox "'manger' n'est pas contenu dans la chaîne"
End If
Unload Me
End Sub
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 19 août 2006 à 15:23
Merci de votre aide j'ai l'impression que je vois le bout du problème malheuresement je ne vois pas comment appliquer sa à une chaine de caractère dans un textbox sachant que le texte est le contenu d'un fichier mais encore merci car j'essai de l'appliquer à mon projet et je vois la fin s'annoncer !!
maxsecurite2
Messages postés181Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 9 avril 2010 19 août 2006 à 16:09
En fait le fonctionnement du programme va être simple un fichier txt pour les mots clef à remplacer par rapport au contenu d'une textbox quand le programme rencontre dans la textbox le mot "manger" il va chercher dans le fichier texte (donc avec une listbox) comme sa :
randomize
Form1.List1.List("100" * Rnd + "1")
une phrase au hasard dans la listbox qui auparavant aura été chargée avec le fichier txt comme sa
Open fruits For Input As #2
While Not EOF(2)
Line Input #2, l$
Text2.Text = Text2.Text + 1
Form5.List1.AddItem (l$)
Wend
Close #2
par exemple le texte : "remplir le plat de manger avec 1/3 de manger" devra modifier manger par un mot clef au hasard de la list1
J'espère être claire :) merci à tous ceux qui ont répondu même si j'ai pas encore trouvé le code source miracle ;)