Simplification de code [Résolu]

blatchoskof 2 Messages postés samedi 1 octobre 2005Date d'inscription 8 octobre 2005 Dernière intervention - 8 oct. 2005 à 14:47 - Dernière réponse : blatchoskof 2 Messages postés samedi 1 octobre 2005Date d'inscription 8 octobre 2005 Dernière intervention
- 8 oct. 2005 à 17:19
Voila j 'essaie de faire un ocx qui pourra avec une phrase me sortir le
n ieme mot, du genre monocx.mot(1) = le premier mot de ma phrase.Je me
suis inspiré d'un code donne sur VBFrance qui permettait d obtenir le
nombre de mot d'une phrase. j ai commencé, mais le probleme c que je
créée des textbox pour mes mot et ca limite mon champs d'action. ex :
si je demande le mot 1000 ca risque de me causer des problemes car je
dois alors creer 1000 textbox....breff si vous pouviez me montrer
comment simplifier mon code ca me serait utile.<sup>





voila mon code certes tres long ....





Public Function m()



Dim lettre(1000000) As String

Dim nbrmots As Integer

Dim nombreL As Integer



Text0.Text = 0

Text1.Text = 0

Text2.Text = 0

Text3.Text = 0

Text4.Text = 0

Text5.Text = 0

Text6.Text = 0

Text7.Text = 0

Text8.Text = 0

Text9.Text = 0

Text10.Text = 0





nbrmots = 0

Texte.Text = Texte.Text & " ¤£¤"

For x = 1 To 99999

lettre(x) = Mid(Texte.Text, x, 1)

If Mid(Texte.Text, x + 3, 3) = "¤£¤" Then

nombreL = x + 4

End If

Next x

Texte.SetFocus

For t = 0 To (nombreL - 4)

SendKeys "{right}"

Next t



SendKeys "{delete}"

SendKeys "{delete}"

SendKeys "{delete}"

SendKeys "{delete}"





For x = 1 To nombreL

If lettre(x) " " Then nbrmots nbrmots + 1

If lettre(x) " " And nbrmots 1 Then Text1.Text = x

If lettre(x) " " And nbrmots 2 Then Text2.Text = x

If lettre(x) " " And nbrmots 3 Then Text3.Text = x

If lettre(x) " " And nbrmots 4 Then Text4.Text = x

If lettre(x) " " And nbrmots 5 Then Text5.Text = x

If lettre(x) " " And nbrmots 6 Then Text6.Text = x

If lettre(x) " " And nbrmots 7 Then Text7.Text = x

If lettre(x) " " And nbrmots 8 Then Text8.Text = x

If lettre(x) " " And nbrmots 9 Then Text9.Text = x

If lettre(x) " " And nbrmots 10 Then Text10.Text = x



nbrm.Text = nbrmots

Next x



If Text1.Text > 0 Then Text0.Text = Mid(Texte.Text, 1, (Text1.Text - 1))

If Text2.Text > 0 Then Text1.Text Mid(Texte.Text, Text1.Text + 1, (Text2.Text - 1 - Text1.Text)) Else Text1.Text 0

If Text3.Text > 0 Then Text2.Text Mid(Texte.Text, Text2.Text + 1, (Text3.Text - 1 - Text2.Text)) Else Text2.Text 0

If Text4.Text > 0 Then Text3.Text Mid(Texte.Text, Text3.Text + 1, (Text4.Text - 1 - Text3.Text)) Else Text3.Text 0

If Text5.Text > 0 Then Text4.Text Mid(Texte.Text, Text4.Text + 1, (Text5.Text - 1 - Text4.Text)) Else Text4.Text 0

If Text6.Text > 0 Then Text5.Text Mid(Texte.Text, Text5.Text + 1, (Text6.Text - 1 - Text5.Text)) Else Text5.Text 0

If Text7.Text > 0 Then Text6.Text Mid(Texte.Text, Text6.Text + 1, (Text7.Text - 1 - Text6.Text)) Else Text6.Text 0

If Text8.Text > 0 Then Text7.Text Mid(Texte.Text, Text7.Text + 1, (Text8.Text - 1 - Text7.Text)) Else Text7.Text 0

If Text9.Text > 0 Then Text8.Text Mid(Texte.Text, Text8.Text + 1, (Text9.Text - 1 - Text8.Text)) Else Text8.Text 0

If Text10.Text > 0 Then Text9.Text Mid(Texte.Text, Text9.Text + 1, (Text10.Text - 1 - Text9.Text)) Else Text9.Text 0









End Function





Public Property Get mot(a As Integer)

Call m

If a > 20 Then mot = "0"

If a 1 Then mot Text0.Text

If a 2 Then mot Text1.Text

If a 3 Then mot Text2.Text

If a 4 Then mot Text3.Text

If a 5 Then mot Text4.Text

If a 6 Then mot Text5.Text

If a 7 Then mot Text6.Text

If a 8 Then mot Text7.Text

If a 9 Then mot Text8.Text

If a 10 Then mot Text9.Text



End Property



Public Property Get nombredemots()

Call m

nombredemots = nbrm.Text

End Property



Private Sub UserControl_Resize()

UserControl.Width = 5000

UserControl.Height = 700

End Sub



</sup>
Afficher la suite 

2 réponses

Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 8 oct. 2005 à 15:39
3
Merci
Mon dieu ! Utilise la fonction InStr pour détecter les espaces dans ta
phrase, et compte le nombre d'espace, ce sera bien plus simple que de
passer par autant de textbox que de mots (d'ailleurs, j'ai du mal à
comprendre l'intérêt d'atant de textbox !!!)



_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

blatchoskof 2 Messages postés samedi 1 octobre 2005Date d'inscription 8 octobre 2005 Dernière intervention - 8 oct. 2005 à 17:19
0
Merci
apres simplification ca me donne ca :



Dim mot(10000) As String

Dim nbm As Integer

Dim lim As Integer



Private Sub Command1_Click()

nbm = 0

Texte.Text = Texte.Text & " #"

lim = InStr(1, Texte.Text, " #")



For x = 1 To lim

If InStr(x + 1, Texte.Text, " ") > InStr(x, Texte.Text, " ") Then nbm = nbm + 1

If InStr(x + 1, Texte.Text, " ") > InStr(x,
Texte.Text, " ") Then mot(nbm + 1) = Mid(Texte.Text, InStr(x,
Texte.Text, " ") + 1, InStr(x + 1, Texte.Text, " ") - 1 - InStr(x,
Texte.Text, " "))

Next x

If lim 1 Then nbrm.Text 0 Else nbrm.Text = nbm + 1

mot(1) = Mid(Texte.Text, 1, (InStr(1, Texte.Text, " ") - 1))



End Sub

Mais ce que j aimerais enfin c pouvoir cree une propiete de l ocx pour que dans mon prog je mette:

monocx.fonction(1)=text1.text par exemple

est ce qu il faut remodifier la variable mot(10000) pour en faire une fonction?

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.