OVH Cloud OVH Cloud

utilisateur de ado avec excel

1 réponse
Avatar
Dave
Bonjour,

Je connais pas trés bien VB mais je voudrais selectionnner avec VBA toutes
les valeurs qui se trouvent dans la colonne test1
qui sont > 14 mais ca ne fonctionne pas
pourriez-vous m'aider s'il vous plait ? merci

Private Sub Workbook_Open()
On Error Resume Next

Const adopenstatic = 3
Const adlockoptimistic = 3
Const adcmdtext = &H1

Dim query As String
Dim i As Long
Dim j As Integer

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Source & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"

query = "Select * FROM [" & Feuil1 & "$] where test1 > 14"

objRecordset.Open query, objConnection, adopenstatic, adlockoptimistic,
adcmdtext


End Sub


dans mon excel j'ai ceci

test1 test2 test3
24 15 13
14 15 16

1 réponse

Avatar
MichDenis
Une variante de la procédure proposée par Abed_H

'-----------------------------
Sub Test()

'Menu Outils > Référeces Cocher
'"Microsoft Activex Data Object 2.x Librairy"

Dim objConnection As ADODB.Connection
Dim objRecordset As ADODB.Recordset
Dim query As String, Fichier As String
Dim NomFeuille As String, C As Integer
Dim Rg As Range

NomFeuille = "Feuil1"
'chemin et nom du fichier à déterminer
Fichier = ThisWorkbook.FullName

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")

objConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""

query = "SELECT * From [" & NomFeuille & "$] where test1 > 14"

objRecordset.Open query, objConnection, adOpenForwardOnly

With objRecordset
If .EOF = True Then
Exit Sub
Else
'ou les données seront copiées
Set Rg = Worksheets("Feuil2").Range("A1")
'copie des noms des champs du recordset si nécessaire
Do
Rg.Offset(, C) = objRecordset.Fields(C).Name
C = C + 1
Loop Until C = objRecordset.Fields.Count
Rg.Offset(1).CopyFromRecordset objRecordset
End If
End With

End Sub
'-----------------------------