Le but est d'avoir un tableau qui reprenne les différents locuteurs sans bien sur les doublons, ou les locuteurs qui reprennent la parole: loc1, loc2,loc3
'ceci est ok: chaque locuteur est extrait mais à chaque prise de parole, donc j'ai une variable avec loc1, loc2, 'loc3, loc1 si on prend l'exemple.
source() = Split(txtsource.Text, "£")
For EnonLoc = 1 To UBound(source)
sourceMS() = Split(source(EnonLoc), " ")
'si on n'a pas trouvé de locuteur nouveau
if fNomLoc= false
nomLoc(EnonLoc) = sourceMS(0)
end if
'pour éliminer les doublons, on compare le locuteur et le locuteur suivant
For k = EnonLoc To UBound(source) - 1
sourceMS2() = Split(source(k + 1), " ")
'si les deux locuteurs sont différents on passe à l'énoncé suivant
If sourceMS(0) <> sourceMS2(0) Then
nomLoc(EnonLoc) = sourceMS2(0)
fNomLoc=true
Exit For
End If
'si les deux locuteurs sont identiques
If sourceMS(0) = sourceMS2(0) Then
'on compare les deux locuteurs suivants
k = (k - (k - EnonLoc))
Exit For
End If
Next k
Next EnonLoc
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 20 sept. 2007 à 08:14
Salut,
Et bien il te suffit d'"ignorer" l'erreur comme suit (normalement cela fonctionne:
Dim dicNomLoc As New Dictionary
Source() = Split(txtsource.Text, "£")
On Error Resume Next
For enonloc = 1 To UBound(Source)
sourceMS() = Split(Source(enonloc), " ")
dicNomLoc.Add sourceMS(0), sourceMS(0)
Next enonloc
On Error GoTo 0
, ----
[code.aspx?ID=41455 By Renfield]
NOTE: ATTENTION dans une boucle for il est inutile de s'occuper d'incrémenter la valeur de ta variable de boucle.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 19 sept. 2007 à 12:55
Salut,
Lorsuqe tu récupères tes locuteurs, ajoute les à un objet collectionindexée par leur nom en gerant l'erreur d'ajout d'une clé déjà existante, tu devrais pouvoir supprimer tes doublons.
cs_lacomm
Messages postés298Date d'inscriptionlundi 14 juin 2004StatutMembreDernière intervention 5 juillet 20131 19 sept. 2007 à 15:26
merci à toi
en faisant ceci
Dim dicNomLoc As New Dictionary
source() = Split(txtsource.Text, "£")
For enonloc = 1 To UBound(source)
sourceMS() = Split(source(enonloc), " ")
On Error GoTo Err_Loc
dicNomLoc.Add sourceMS(0), sourceMS(0)
Err_Loc:
enonloc = enonloc + 1
Next enonloc
J'obtiens bien les 2 premiers locuteurs mais après, j'ai le message d'erreur de clé déjà existante.