Bonjour,
La méthode AutoFilter permet-elle de filtrer sur plusieurs colonnes avec des critères avec OR.
Voici un bout de code qui permet de copier depuis un fichier Excel des données selon des critères via SQL
Ma question est donc comment avec Autofilter je peux avoir le même résultat que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 Public Function fTranfertSQL() Dim oCnx As New ADODB.Connection Dim oRSet As New ADODB.Recordset Dim oFld As Object Dim sCnx As String, sFile As String, sTab As String, sRange As String, sFrom As String, sSQL As String sFile = "C:\Users\Desktop\FichierTest.xlsx" With oCnx .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & sFile & ";" & _ "Extended Properties=""Excel 12.0 Xml;HDR=YES"";" .Open End With sTab = "Liste" : sRange = "A2:V243" : sFrom = sTab & "$" & sRange '-------------------------------------------------------------------------------- ' le point(.) dans un nom de champ doit être remplacé par dièse (#) '-------------------------------------------------------------------------------- sSQL = "SELECT * FROM [" & sFrom & "]" & _ " WHERE [Type] = 'Arbres'" & _ " AND [fév#] = 'x' " & _ " OR [mars] = 'x'" oRSet.Open sSQL, oCnx With Sheets(2) If .FilterMode = True Then .ShowAllData .Cells.Clear .Range("A2").CopyFromRecordset oRSet For Each oFld In oRSet.Fields .Range("A1").Offset(0, i) = oFld.Name i = i + 1 Next End With oCnx.Close : Set oCnx = Nothing : Set oRSet = Nothing End Function
Car quand on applique AutoFilter sur plusieurs colonnes, cela correspond implicitement à du AND
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 sSQL = "SELECT * FROM [" & sFrom & "]" & _ " WHERE [Type] = 'Arbres'" & _ " AND [fév#] = 'x' " & _ " OR [mars] = 'x'"
Partager