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 47 48 49 50 51 52 53 54 55 56 57 58
|
Sub importation()
'activer la reference Microsoft ActiveX Data Objects x.x Library
'activer la reference Microsoft ADO Ext 2.7 for DLL ans Security
Dim connect As String
Dim Sql As String, onglet As String
Dim données As ADODB.Recordset
Dim Fichier As String, Direction As String, texte_SQL As String
Dim X As Integer, NbFichiers As Integer, Y As Integer, N As Integer, p As Integer, w As Integer
'On Error Resume Next
Dim Tableau() As String
onglet = "dim$" 'InputBox("Saisissez le nom d'un onglet :")
If onglet = "" Then Exit Sub
Direction = Dir(ThisWorkbook.Path & "\*.xls")
Do While Len(Direction) > 0 'liste tous les classeurs du repertoire
NbFichiers = NbFichiers + 1
ReDim Preserve Tableau(1 To NbFichiers)
Tableau(NbFichiers) = Direction
Direction = Dir()
Loop
If NbFichiers > 0 Then
For X = 1 To NbFichiers 'boucles sur les classeurs
' pour ne pas prendre en compte le classeur contenant la macro (synthese)
If Tableau(X) <> ThisWorkbook.Name Then
Fichier = ActiveWorkbook.Path & "\" & Tableau(X)
N = 0
connect = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
"ReadOnly=1;DBQ=" & Fichier
Set données = New ADODB.Recordset
données.Open Source:="SELECT * FROM [" & onglet & "Q10:Q56]", ActiveConnection:=connect
If Not données.EOF Then
' pour etre synchro avec les colonnes
p = X
Cells(1, 2 + p) = Tableau(X)
Cells(2 + N, 2 + p).CopyFromRecordset données
p = p + 2
N = N + 1
End If
End If
Next X
End If
Application.ScreenUpdating = True
'delete de l'objet recordset
données.Close
Set données = Nothing
End Sub |
Partager