Fonction remplacer textbox [Résolu]

maxsecurite2 181 Messages postés vendredi 3 janvier 2003Date d'inscription 9 avril 2010 Dernière intervention - 18 août 2006 à 21:03 - Dernière réponse : maxsecurite2 181 Messages postés vendredi 3 janvier 2003Date d'inscription 9 avril 2010 Dernière intervention
- 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) ?

D'avance merci
Maxime
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cedvinc 19 Messages postés mercredi 28 juillet 2004Date d'inscription 15 décembre 2007 Dernière intervention - 19 août 2006 à 15:54
3
Merci
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"

Merci cedvinc 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de cedvinc
cedvinc 19 Messages postés mercredi 28 juillet 2004Date d'inscription 15 décembre 2007 Dernière intervention - 18 août 2006 à 22:00
0
Merci
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.

Bon courage
Commenter la réponse de cedvinc
maxsecurite2 181 Messages postés vendredi 3 janvier 2003Date d'inscription 9 avril 2010 Dernière intervention - 18 août 2006 à 22:05
0
Merci
Tout d'abord merci de répondre à mon message merci pour l'aide apporté je vais essayer pour voir n'hésitez pas à trouver d'autre pistes ;)
Commenter la réponse de maxsecurite2
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 19 août 2006 à 00:24
0
Merci
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

<small> Coloration
syntaxique automatique [AFCK]</small>
       

PCPT  [AFCK]

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Commenter la réponse de PCPT
maxsecurite2 181 Messages postés vendredi 3 janvier 2003Date d'inscription 9 avril 2010 Dernière intervention - 19 août 2006 à 15:23
0
Merci
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 !!
Commenter la réponse de maxsecurite2
maxsecurite2 181 Messages postés vendredi 3 janvier 2003Date d'inscription 9 avril 2010 Dernière intervention - 19 août 2006 à 16:09
0
Merci
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 ;)
Commenter la réponse de maxsecurite2
maxsecurite2 181 Messages postés vendredi 3 janvier 2003Date d'inscription 9 avril 2010 Dernière intervention - 22 août 2006 à 16:01
0
Merci
Merci Cedvinc c'est exactement ce que je cherchais
Commenter la réponse de maxsecurite2

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.