Split et IF

Résolu
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 18 mai 2005 à 12:12
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 - 18 mai 2005 à 14:55
Salut à tous,
Je voudrais faire plusieurs SPLIT à la suite comme ceci:

L1: bonjour. comment ça va?
L2: pas mal.

Il y a d'abord un premier split qui envoit d'un coté l'énoncé de L1 et de l'autre l'énoncé de L2.
Ensuite je voudrais splitter selon la ponctuation:


partie interrogative
If InStr(1, Source(I), "?") <> 0 Then
If InStr(1, Source(I), ".") <> 0 Then
sourceSA() = Split(LCase(Source(I)), ".")
For t = 1 To UBound(sourceSA)
saf_int = saf_int + 1
Next t
End If
sourceS() = Split(LCase(Source(I), "?")
For j = 0 To UBound(sourceS)
x= x+1
[autres instructions qui concernent aussi la partie affirmative]
next j
end if

et j'ai la même chose avec le "."

partie affirmative
If InStr(1, Source(I), ".") <> 0 Then
If InStr(1, Source(I), "?) <> 0 Then
sourceSI() = Split(LCase(Source(I)), "?")
For t = 1 To UBound(sourceSI)
sint_aff= sint_aff+ 1
Next t
End If
sourceS() = Split(LCase(Source(I), "?")
For j = 0 To UBound(sourceS)
y= y+1
next j
end if

Le problème c'est que le sourceSA est traité deux fois, ou que la partie affirmative de l'énoncé est traitée deux fois: une fois dans la partie interrogative, une fois dans la partie affirmative
Donc, je voudrais ceci:
-reconnaitre un énoncé complet interrogatif et le traiter
-reconnaitre le sous-énoncé affirmatif
- le couper pour le séparer de l'analyse mais ne pas le traiter (boucle)
- le faire traiter par la deuxième partie de la routine

merci d'avance

3 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 mai 2005 à 12:40
Le mieux c'est de compter le tout dans la même boucle.





Dim s As String

Dim c As String

Dim i As Integer

Dim j As Integer



s = "L1: bonjour. comment ça va?"



j = 1

For i = 1 To Len(s)

c = Mid$(s, i, 1)

If c = "." Then

i = i + 1

MsgBox "Affirmation: " & Mid$(s, j, i - j)

j = i

End If

If c = "?" Then

i = i + 1

MsgBox "Interrogation: " & Mid$(s, j, i - j)

j = i

End If

Next


Daniel
3
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
18 mai 2005 à 14:26
autre petite chose :





For t = 1 To UBound(sourceSA)

saf_int = saf_int + 1

Next t



peut se remplacer par :



saf_int = Ubound(sourceSA)



tout simplement ...


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
3
cs_lacomm Messages postés 298 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 5 juillet 2013 1
18 mai 2005 à 14:55
Bien merci à tous les deux pour ces simplifications qui vont bien me faciliter la vie.
0
Rejoignez-nous