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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
Dim TblVals()
Private Sub ConnectCLasseur(ConnectCL As Object, _
Fichier As String, _
Optional Rs)
Set ConnectCL = CreateObject("ADODB.Connection")
If Not IsMissing(Rs) Then
Set Rs = CreateObject("ADODB.Recordset")
End If
ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""
End Sub
Sub RecupNoms(Classeur As String, _
Feuille As String, _
Plage As String, _
NumColonne As Integer)
Dim ConnectCL As Object
Dim Rs As Object
Dim Champ As Object
Dim DerCel As Integer
Dim I As Integer
'ouvre la connexion
ConnectCLasseur ConnectCL, Classeur, Rs
'ouvre le jeu
With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & Feuille & "$" & Plage & "` ", ConnectCL
.MoveFirst
Do While Not .EOF
I = I + 1
TblVals(NumColonne, I) = .Fields(0).Value
.MoveNext
Loop
End With
'ferme la connexion
ConnectCL.Close
Set Rs = Nothing
Set ConnectCL = Nothing
End Sub
Function Fichiers(Chemin As String) As String()
Dim TableauFichiers() As String
Dim Fichier As String
Dim I As Integer
Fichier = Dir(Chemin)
Do While (Len(Fichier) > 0)
I = I + 1
ReDim Preserve TableauFichiers(1 To I)
TableauFichiers(I) = Fichier
Fichier = Dir()
Loop
Fichiers = TableauFichiers()
End Function
Sub Recup()
Dim Tbl() As String
Dim Dossier As String
Dim NomFeuille As String
Dim Plage As Range
Dim I As Integer
Dim J As Integer
'dossier des fichiers
Dossier = "C:\Documents and Settings\coralieb\Bureau\CA\"
'feuille où récupérer les valeurs
NomFeuille = "Feuil2"
'plage des valeurs
Set Plage = Range("E4:E46")
'stocke dans un tableau le nom des différents fichiers
Tbl = Fichiers(Dossier)
'redimensionne le tableau où seront stockées les valeurs
ReDim TblVals(1 To UBound(Tbl), 1 To Plage.Cells.Count)
'boucle sur les fichiers pour récupérer les valeurs
For I = 1 To UBound(Tbl)
RecupNoms Dossier & Tbl(I), NomFeuille, Plage.Address(0, 0), I
Next I
'inscrit les valeurs en "Feuil1" à partir de "B2" dans le classeur "macro données ca 2009.xls"
With Workbooks("macro données ca 2009.xls").Worksheets("Feuil1")
For I = 1 To UBound(TblVals, 1)
For J = 1 To UBound(TblVals, 2)
.Cells(J + 1, I + 1) = TblVals(I, J)
Next J
Next I
End With
End Sub |
Partager