'Saisie semi automatique
'Vérification Thésaurus

Sub GetListeTrie(liste, TabVal, TabLigne)
	'Appel d'une fonction JScript qui peut trier un tableau
	table = SortList(liste)
	table = ".;0,"&table	'insère une première ligne vide
	
	'Reconstruction du tableau en VBSscript
	MultiTab = Split(table, ",", -1, 1)
	NTab = UBound(MultiTab, 1)

	ReDim TabVal(NTab)
	ReDim TabLigne(NTab)
	
	For i=0 to NTab-1
		TabTemp = Split(MultiTab(i), ";", -1, 1)
			TabVal(i) = TabTemp(0)		'récupère la valeur 
			TabLigne(i) = TabTemp(1)	'récupère le numéro de ligne de cette valeur
	Next
	
End Sub

'------------------------------------------------------------------------------
Function GetLastVal(chaine, separateur)
	'Si la chaine n'est pas vide on tente de la décomposer
	If (Len(chaine)=0) Then Exit Function
	
	'Découpage de la chaine en fonction du caractère séparateur
	Tab = Split(chaine, separateur, -1, 1)
	NTab = UBound(Tab, 1)
	'On récupère seulement le denier élément du tableau = dernier mot de la ligne
	chaine = Trim(Tab(NTab))
	GetLastVal = chaine
	
End Function

'------------------------------------------------------------------------------
Function SelectVal(liste, saisie, separateur)
	'dernier caractère = Mid(chaine,Len(chaine))
	
	chaine = saisie.value
	'separateur = ","

	If (Len(chaine)=0) Then
		liste.selectedIndex = 0
		Exit Function
	End If
	chaine = GetLastVal(chaine, separateur)
	
	'trie la liste des valeurs par ordre alphabétique
	Dim TabVal()
	Dim TabLigne()
	
	'GetListeTrie liste,TabVal,TabLigne
	chaine = replace(chaine, "'", " ")

	'Recherche de la valeur dans la liste la plus proche du mot en cours de saisie dans la zone texte	
	For i=1 to liste.length-1
		valeur = Trim(liste.options(i).text) 'TabVal(i)
		valeur = replace(valeur, "'", " ")

'alert(valeur &", "&i)
		'Si traite un suite de nombre
		If IsNumeric(chaine) AND IsNumeric(valeur) Then
			If (Len(chaine)>9) Then
				alert("Le nombre est trop long")
				Exit Function
			End If
			IntChaine = CLng(chaine)	'CInt limité : -32 768 à 32 767.
			IntVal = CLng(Mid(valeur,1,Len(chaine))) 'convertie seulement le même nb de caractère
																							'exemple 46 / 46235 compare 46 à 46	
			If (IntVal >= IntChaine) Then
				liste.selectedIndex = i  'TabLigne(i)
				Exit For
			End If
		'Si traite des chaines de caratères
		Else
			If StrComp(valeur, chaine, 1)>=0 Then
				liste.selectedIndex = i 	'TabLigne(i)
				Exit For
			End If
		End If
	Next

End Function

'------------------------------------------------------------------------------
Function CopyVal(liste, saisie,separateur)    
	'récuperation du code de la touche pressée
	code = 0
    if(window.event) then
        if (window.event.keyCode) then
            code = window.event.keyCode
        end if
    end if
	CopyVal = False
	
	'Continue seulement si presse ENTRER
	If code<>13 Then Exit Function
	
	chaine = saisie.value
	'separateur = ","

	'Récupère les premières valeurs	
	chaine = Left(chaine, InStrRev(chaine, separateur))
	If Len(chaine)<>0 Then chaine = chaine + " "
	
	saisie.value = chaine + liste.options(liste.selectedIndex).text	
	CopyVal = True
	'CopyVal retourne TRUE cad on a pressé ENTRER
	
End Function

'------------------------------------------------------------------------------
Sub VerifTh(liste, saisie,separateur)
	j=0
	i=0
	chaine = saisie.value

	'Si la chaine n'est pas vide on tente de la décomposer
	If Len(chaine)<>0 Then
		'Découpage de la chaine en fonction du caractère séparateur
		Tab = Split(chaine, separateur, -1, 1)
		NTab = UBound(Tab, 1)
	Else
		'La chaine est vide on sort
		Exit Sub
	End If

	For j=0 to NTab
		conforme = "non"

		'Recherche de la valeur dans la liste la plus proche du mot en cours de saisie dans la zone texte	
		For i=1 to liste.length-1
			val = liste.options(i).text
			chaine = Tab(j)
			If StrComp(val, chaine, 1)=0 Then
				'On a trouvé le mot on sort
				conforme = "oui"
				Exit For
			End If
		Next 'i

		'If conforme="non" Then
			'alert("Le nom saisie : '"+chaine+"' n'appartient pas à la liste des communes")
			'saisie.focus()
			'Exit Sub
		'End If
	Next 'j
	
End Sub

