Combobox avec saisie et autocompletion

bhervieu Messages postés 1 Date d'inscription vendredi 24 septembre 2010 Statut Membre Dernière intervention 27 janvier 2012 - 27 janv. 2012 à 17:19
Bonjour,

J'ai une combobox qui récupère des valeur dans une base de données, mais je souhaiterai en faite que lorsque l'on l'on commence a saisir le nom d'une personne, s'affiche les personnes présente dans la base de données.
Je ne vois pas trop comment faire, j'ai tester avec un
autocomplete= "on"
mais sa ne fonctionne pas.
Je ne sais plus trop comment chercher, n'y même s'il est possible de le faire en VBs.


PS: voici mon code VBs/HTA

<html>
<head>
<title>Envoide de Fax</title>
<HTA:APPLICATION
   ID="EnvoiFax"
   APPLICATIONNAME="Envoide de Fax"
   CAPTION="Yes"
   BORDER="thick"
   SHOWINTASKBAR="Yes"
   SINGLEINSTANCE="Yes"
   SYSMENU="Yes"
   WINDOWSTATE="Normal"
   SCROLL="No"
   INNERBORDER="No"
   SELECTION=""
   MAXIMIZEBUTTON="No"
   MINIMIZEBUTTON="NO"
   NAVIGABLE="NO"
   CONTEXTMENU="No"
   BORDERSTYLE=""
   ICON="fax.ico">
</head>

<script language="VBScript">
ResizeTo 550,250 'Width,Height
MoveTo 250,200 	 'Left,Top
'--------------------------------------------------------------------------------------------------------------------'
'-----------------------------------------------DEBUT-SCRIPT---------------------------------------------------------'
'--------------------------------------------------------------------------------------------------------------------'
Sub Window_OnLoad
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
'chaine de connexion
objConnection.Open "DRIVER={MySql ODBC 5.1 Driver};SERVER=localhost;DATABASE=nomDB;UID=user;PASSWORD=password;"
'requete sql
strSQLQuery = "SELECT nom, numeroFax FROM personne"
objRecordset.Open strSQLQuery , objConnection
'on recupere tout les jeux d'enregistrement tant que celui-ci n'est pas arriver a la fin
do while not objRecordset.EOF
'on crée dans le select un champ option			
Set objOption = Document.createElement("OPTION")
'auquel on lui affecte comme texte le nom
objOption.Text = objRecordset.Fields("nom").Value
'et comme valeur correspondant au nom, le numero de fax
objOption.value = objRecordset.Fields("numeroFax").Value
'et on l'ajoute au selectbox
personnel.Add(objOption)
'puis on passe au jeux d'enregistrement suivant
objRecordset.movenext
     loop
'on ferme la connexion
objRecordset.Close
objConnection.Close
End Sub
'------------------------------------------------------------------------------------------------'
'-----------------------------------------DEBUT-ENVOI--------------------------------------------'
'------------------------------------------------------------------------------------------------'	


Sub envoi
'déclaration de la variable (file system object)
Dim fso
'instanciation
Set FSO = CreateObject("Scripting.FileSystemObject")
'on instance le fichier texte 
Set Ftxt = FSO.OpenTextFile("C:\SMFAX\test.txt")
'on parcours chaque ligne du fichier texte
Do While Not Ftxt.AtEndOfStream
 MaVariable = Ftxt.Readline
      'code pour traiter chaque ligne (1seul dans ce cas la)
a=Split(MaVariable ,";")
  		
If UBound(a) = 1 Then
     	End If
Loop

' déclaration des variables
Dim olapp
Dim objet
Dim corps
Dim PJ
Dim mail
Dim oFSO, oFl, newnom
Dim nbcontact
Dim variable

'affectation des valeurs aux variables	
nom = tbx_nom.value
destinataire = tbx_numeroFAX.value
objet=(a(0))
corps=(a(1))
PJ=("C:\SMFax\FAX.pdf") 'Faire correspondre dans PdfCreator
mail= destinataire &"@gmail.com"

'si ereur alors on sort
On Error Resume Next 
'on instancie l'objet outlook
Set olapp = GetObject("Outlook.Application") 
If Err.Number Then
Err.Clear
'si outlook n'est pas ouvert, on l'ouvre
Set olapp = CreateObject("Outlook.Application") 
If Err.Number Then 
MsgBox "Impossible d'ouvrir Outlook." 
End If 
End If 
'on affecte les variables, aux differentes fonctionnailités du mail	  
Set olMail = olapp.CreateItem(olMailItem) 
'destinataire
olMail.To = (mail) 
'objet (expediteur)
olMail.Subject = (objet) 
'corps (password)
olMail.Body = (corps)
'pièce jointes (le PDF créé précédement avec pdf créator)
olmail.Attachments.Add("C:\SMFax\FAX.pdf")
'on envoi le mail
olmail.send 

Set olMail = Nothing 
Set olapp = Nothing 

'si erreur alors afficher message erreur
If Err.Number <>0 Then
MsgBox Err.Description,16,"Erreur"
'sinon 
Else
'instanciation de la variable file system object
Set oFSO = CreateObject("Scripting.FileSystemObject")
'on recupere le PDF
Set oFl = oFSO.GetFile("C:\SMFax\FAX.pdf")
'on affecte a la variable newnom la date et l'heure
newnom=day(Date()) & month(Date()) & year(Date()) & "_" & Hour(Time()) & "_" & Minute(Time())& "_" & second(Time())
'on renome le PDF avec le nouveau nom (newnom)
oFl.Move("C:\SMFax"&newnom&".pdf")

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
'chaine de connexion
objConnection.Open "DRIVER={MySql ODBC 5.1 Driver};SERVER=localhost;DATABASE=nomDB;UID=user;PASSWORD=password;"
'requete sql
strSQLQuery = "SELECT COUNT( * ) FROM personne WHERE numerofax='"& destinataire &"'"
objRecordset.Open strSQLQuery , objConnection
'on recupere le resultat du nombre de jeu d'enregistrement dans la variable "nbcontact"
nbcontact = objRecordset.Fields("COUNT( * )")
'on ferme la connexion
objRecordset.Close
objConnection.Close
'MsgBox "count(*) = " & nbcontact

'on verifie a quoi nb contact correspond "nbcontact"
'soit "0" alors variable est vrai
If ( nbcontact = "0" ) Then
variable =  "True"
'sinon variable est faux
Else
variable =  "False"
End If
'Si variable est vrai alors 
If ( variable = "True") Then
        	'chaine de connexion
        	objConnection.Open "DRIVER={MySql ODBC 5.1 Driver};SERVER=localhost;DATABASE=nomDB;UID=user;PASSWORD=password;"
'requete sql 1
strSQLQuery1 = "INSERT INTO fax (cheminPJ, coderetour) VALUES('"& "C:\\SMFax\"& newnom &".pdf" &"', '"&"envoyer"&"')"
'requete sql 2
strSQLQuery2 = "INSERT INTO personne (nom, numeroFAX) VALUES ('"& nom &"', '"& destinataire &"');"
'execution de la requete sql 1
objRecordset.Open strSQLQuery1 , objConnection
'execution de la requete sql 2
objRecordset.Open strSQLQuery2 , objConnection
MsgBox "Fax envoyé."
'on vide les champ des textbox
tbx_numeroFAX.value= ""
tbx_nom.value= ""
'on ferme la connexion
objRecordset.Close
objConnection.Close
'Si variable est faux
    Else
        	'chaine de connexion
        	objConnection.Open "DRIVER={MySql ODBC 5.1 Driver};SERVER=localhost;DATABASE=nomDB;UID=user;PASSWORD=password;"
'requete sql 3
strSQLQuery3 = "INSERT INTO fax (cheminPJ, coderetour) VALUES('"& "C:\\SMFax\"& newnom &".pdf" &"', '"&"envoyer"&"')"
objRecordset.Open strSQLQuery3 , objConnection

MsgBox "Fax envoyé."
'on vide les champ des textbox
tbx_numeroFAX.value= ""
tbx_nom.value= ""
'on ferme la connexion
objRecordset.Close
objConnection.Close
    End If 
End If
End Sub
'------------------------------------------------------------------------------------------------'
'-------------------------------------------FIN-ENVOI--------------------------------------------'
'------------------------------------------------------------------------------------------------'
Sub ComboBoxChange
'on affiche la valeur(numéro de fax) de la personne selectionner dans le textbox numeroFAX
tbx_nom.value= ""
tbx_numeroFAX.value = personnel.Value
End Sub
Sub OnClickButtonlectureCSV()
'déclaration des variables
Dim fso 
Dim fCsv 
Dim tb 
Dim n
Const ForReading = 1
Set fso = CreateObject("scripting.filesystemobject")
'on precise ou se trouve le fichier que l'on souhaite lire
Set fCsv = fso.OpenTextFile("C:\gpi\gpi_fax.csv", ForReading)
'tant que la lecture n'est pas a la fin 
 While Not fCsv.AtEndOfStream
 	'on coupe le texte à chaque "," (séparateur)
tb = Split(fCsv.ReadLine, ",")
'on precise qu'il y a 12 virgules (nombre precis puisque déterminé par la génération du .csv par GPI
If UBound(tb) = 12 Then
'fonction qui permet de supprimer le zero du standard
n = Mid (tb(5), 2)	
'on remplis nos textbox par les valeur que l'on souhaite
tbx_nom.value =  tb(0)
tbx_numeroFAX.value = n

End If
Wend 
End Sub
'--------------------------------------------------------------------------------------------------------------------'
'-------------------------------------------------FIN-SCRIPT---------------------------------------------------------'
'--------------------------------------------------------------------------------------------------------------------'
</script>



 Veuillez saisir un numero de fax ou le selectionner dans la liste 



Nom :       
Numéro de fax :   



Nom :   <select name ="personnel"onchange="ComboBoxChange()" style="width:130px"/></select>







</select>

</html>


Merci
Rejoignez-nous