Mise en forme d'un text... Aidez moi :)

Signaler
Messages postés
7
Date d'inscription
lundi 9 décembre 2002
Statut
Membre
Dernière intervention
26 juin 2003
-
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012
-
Bonjour

je vous explique le problème :
Le but est de faire une espèce de mise en forme façon word, c'est à dire que lorsque le logiciel détecte un mot qui est dans sa liste (list4), le mot est automatiquement mis en gras et en bleu.
Ce que j'ai fait marche, mais malheureusement est beaucoup trop lent (5 secondes pour 90 lignes sur un athlon 1800+). En fait je teste chaque mot un par un dans tout le texte (donc si il y a 30 mots il parcourt le texte 30 fois).

Voci le code :
' La fonction qui vérifie si le mot est dans le texte
Private Sub verif(box As RichTextBox, mot As String)
Dim var As Integer
Dim i As Integer
var = Len(box.Text)

For i = 1 To Len(box.Text) Step 1
If Mid(box.Text, i, Len(mot)) = mot Then
box.SelStart = i - 1
box.SelLength = Len(mot)
box.SelBold = True
box.SelColor = vbBlue
box.SelStart = i + (Len(mot) - 1)

End If
box.SelStart = var
box.SelLength = 0
box.SelBold = False
box.SelColor = vbBlack
Next i

End Sub

' Le bouton qui parcourt le texte autant de fois qu'il y a de mots
Private Sub Command2_Click()
On Error Resume Next
Dim j As Integer
j = 0
modstate.Value = 0
While j < List4.ListCount
' Barre d'avancement
modstate.Value = modstate.Value + 100 / (List4.ListCount)
' Appel de la fonction
Call verif(algobox, List4.List(j))
j = j + 1
Wend
End Sub


Je voudrais que tout cela se fasse dans l'évènement text_change, mais alors là, c'est pas terrible...

Merci de vos réponses !!!

1 réponse

Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

Et si tu vérifies qu'un mot du texte est présent dans ta list4, ce n'est pas plus rapide que vérifier qu'un mot de ta list4 est dans ton texte ? Tout dépend bien sûr de la aille de ta list4.

Sinon peut être en mettant les élements de ta list dans une table, avec un select ça ira peut être plus vite.

Pour qu'il reconnaisse à la frappe, plutôt que l'évènement text_change essayes text_KeyPress et effectue la vérification si l'utilisateur a appuyé sur espace... je dis ça, je dis rien, fais comme tu le sens..
A+

moustachu
0