GlobalConst$iCursorType=0; adOpenForwardOnly GlobalConst$iLockType=1; adLockReadOnly GlobalConst$iOptions=2; adCmdTable Global$oConnection=ObjCreate("ADODB.Connection"); Create a connection object Global$oRecordset=ObjCreate("ADODB.Recordset"); Create a recordset object Global$sConnectionString='Provider=Microsoft.Jet.OLEDB.4.0; Data Source='&$csvpath&';Extended Properties="Text;HDR=YES;FMT=Delimited(,)"'
$oConnection.Open($sConnectionString); Open the connection Global$sSQL='Select * From Monfichier.csv'; Select all records with the specified content and select two fields
$oRecordset.Open($sSQL,$oConnection,$iCursorType,$iLockType,$iOptions); Issue the SQL query With$oRecordset WhileNot.EOF; repeat until End-Of-File (EOF) is reached ConsoleWrite(.Fields("Ville").Value&"|"&.Fields("Code postal").Value&@CR) .MoveNext; Move To the Next record WEnd EndWith $oRecordset.Close; Close the recordset $oRecordset=0; Release the connection object $oConnection.Close; Close the connection $oConnection=0; Release the connection object
Merci par avance
Modifié en dernier par Supernatural le lun. 24 avr. 2017 16:13, modifié 1 fois.
J'ai réussi à établir une connexion avec mon fichier csv... enfin... (pour info, il ne faut pa de caractères spéciaux dans le nom du fichier csv)...
J'obtiens bien le nombre de lignes de mon fichier par contre je n'arrive pas à récupérer le nombre et le nom de mes colonnes... Ca ne me retourne que la première... Si une âme généreuse passe par là...
Je sais qu'il y a $oRs.fields.name, mais ça me retourne une erreur (^error)...
Malheureusement cela ne me retourne que les valeurs de ma première colonne, or j'ai 22 colonnes...
Le RecordCount me retourne bien le nombre de lignes (sauf la première qui correspond à mon nom de colonne), mais le .Fields.Count me retourne toujours 1 colonne...
Est-ce bien un fichier .CSV (Comma Separated Values) ?
Col1;Col2;Col3 ne marchera pas
Col1<TAB>Col2<Tab>Col3 non plus
Col1,"Colonne numéro 2",Col3 sera OK
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
J'arrive à me connecter à récupérer les valeurs qui m'intéresse, mais comme je suis un chanceux toutes catégories, il faut que le fichier xlsb soit ouvert, hors moi je ne veux pas qu'il soit ouvert... Comment faire la même chose mais classeur fermé?
Merci par avance
Désolé de passer du coq à l'âne mais je dois clore se projet avant la fin de la semaine
GlobalConst$iCursorType=0; adOpenForwardOnly GlobalConst$iLockType=1; adLockReadOnly GlobalConst$iOptions=512; adCmdTableDirect - Return all rows from the specified table Global$oConn=ObjCreate("ADODB.Connection"); Create a connection object Global$oRs=ObjCreate("ADODB.Recordset"); Create a recordset object Global$sFilename="C:\temp\monfichier.xlsb" Global$sADOConnectionString='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='&$sFilename&';Extended Properties="Excel 8.0;HDR=No"' $oConn.Open($sADOConnectionString); Open the connection Global$sADOSQL="Select * FROM [Valeurs$]"; Select all records and all fields $oRs.Open($sADOSQL,$oConn,$iCursorType,$iLockType,$iOptions); Issue the SQL query With$oRs WhileNot.EOF ;..... BLA BALA BLA .MoveNext; Move To the Next record WEnd EndWith
$oRs.Close; Close the recordset $oRs=0; Release the recordset object $oConn.Close; Close the connection $oConn=0; Release the connection object
Je viens de trouver... Il faut remplacer le provider par Provider=Microsoft.ACE.OLEDB.12.0, je n'ai pas fait attention à la version d'Excel que j'utilise...