Bonjour a tous
Grace à ce site merveilleux, je pense avoir trouvé une macro pour recuperer des cellules dans des dossiers ferme, mais j'ai besoin de votre aide pour l'adapter.
j'aimerais que la cellule d5 du fichier ferme soit dans c14 du fichier requette
d6 du fichier ferme soit dans d14 du fichier requette
d7 du fichier ferme soit dans e14 du fichier requette
d8 du fichier ferme soit dans f14 du fichier requette
m6 du fichier ferme soit dans g14 du fichier requette
m7 du fichier ferme soit dans h14 du fichier requette
m9 du fichier ferme soit dans i14 du fichier requette
m10 du fichier ferme soit dans j14 du fichier requette
ensuite on passe au fichier ferme n+1 qui irra à la ligne 15 et ainsi de suite
si joint la macro de michelxld:
Option Explicit
Option Base 1
Sub importerDonneesClasseursFermes()
'michelxld le 31.05.2005
'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library
'necessite d 'activer la reference Microsoft ADO Ext 2.7 for DLL ans Security
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Cat As ADOX.Catalog
Dim xConnect As String, Cible As String
Dim Fichier As String, Champ As String, Feuille As String
Dim Tableau()
Dim i As Byte, NumRec As Byte, j As Byte
Fichier = Dir(ThisWorkbook.Path & "\*.xls") 'adapter chemin
Do While Len(Fichier) > 0 'boucler sur les fichiers du repertoire
If Fichier <> ThisWorkbook.Name Then
xConnect = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
"ReadOnly=1;DBQ=" & ThisWorkbook.Path & "\" & Fichier
j = j + 1
Set Cat = CreateObject("ADOX.Catalog")
Set Cn = CreateObject("ADODB.Connection")
Cn.Open xConnect
Set Cat.ActiveConnection = Cn
Feuille = Cat.Tables(0).Name 'nom de la 1ere feuille du classeur fermé
Champ = Cat.Tables(0).Columns(5).Name ' nom d'entete de la 6eme colonne du classeur fermé
Tableau = Array(11, 13, 17, 19, 21, 30, 109) 'les valeurs doivent etre dans l'ordre croissant
NumRec = 2 '2 car l'index du 1er champ =0 et la 1ere ligne dans le classeur fermé
'correspond à l'entete
Cible = "SELECT " & Champ & " FROM [" & Feuille & "];"
Set Rs = New ADODB.Recordset
Rs.Open Cible, xConnect, adOpenStatic, adLockOptimistic, adCmdText
If Not Rs.EOF Then
For i = 1 To UBound(Tableau)
If Rs.RecordCount >= Tableau(i) - NumRec Then
Rs.Move Tableau(i) - NumRec
Cells(j, i) = Rs.Fields(0).Value
NumRec = Tableau(i)
End If
Next i
End If
Cn.Close
Rs.Close
Set Cn = Nothing
Set Rs = Nothing
End If
Fichier = Dir()
Loop
End Sub
Merci de votre aide
@+
Grace à ce site merveilleux, je pense avoir trouvé une macro pour recuperer des cellules dans des dossiers ferme, mais j'ai besoin de votre aide pour l'adapter.
j'aimerais que la cellule d5 du fichier ferme soit dans c14 du fichier requette
d6 du fichier ferme soit dans d14 du fichier requette
d7 du fichier ferme soit dans e14 du fichier requette
d8 du fichier ferme soit dans f14 du fichier requette
m6 du fichier ferme soit dans g14 du fichier requette
m7 du fichier ferme soit dans h14 du fichier requette
m9 du fichier ferme soit dans i14 du fichier requette
m10 du fichier ferme soit dans j14 du fichier requette
ensuite on passe au fichier ferme n+1 qui irra à la ligne 15 et ainsi de suite
si joint la macro de michelxld:
Option Explicit
Option Base 1
Sub importerDonneesClasseursFermes()
'michelxld le 31.05.2005
'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library
'necessite d 'activer la reference Microsoft ADO Ext 2.7 for DLL ans Security
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Cat As ADOX.Catalog
Dim xConnect As String, Cible As String
Dim Fichier As String, Champ As String, Feuille As String
Dim Tableau()
Dim i As Byte, NumRec As Byte, j As Byte
Fichier = Dir(ThisWorkbook.Path & "\*.xls") 'adapter chemin
Do While Len(Fichier) > 0 'boucler sur les fichiers du repertoire
If Fichier <> ThisWorkbook.Name Then
xConnect = "DRIVER={Microsoft Excel Driver (*.xls)};" & _
"ReadOnly=1;DBQ=" & ThisWorkbook.Path & "\" & Fichier
j = j + 1
Set Cat = CreateObject("ADOX.Catalog")
Set Cn = CreateObject("ADODB.Connection")
Cn.Open xConnect
Set Cat.ActiveConnection = Cn
Feuille = Cat.Tables(0).Name 'nom de la 1ere feuille du classeur fermé
Champ = Cat.Tables(0).Columns(5).Name ' nom d'entete de la 6eme colonne du classeur fermé
Tableau = Array(11, 13, 17, 19, 21, 30, 109) 'les valeurs doivent etre dans l'ordre croissant
NumRec = 2 '2 car l'index du 1er champ =0 et la 1ere ligne dans le classeur fermé
'correspond à l'entete
Cible = "SELECT " & Champ & " FROM [" & Feuille & "];"
Set Rs = New ADODB.Recordset
Rs.Open Cible, xConnect, adOpenStatic, adLockOptimistic, adCmdText
If Not Rs.EOF Then
For i = 1 To UBound(Tableau)
If Rs.RecordCount >= Tableau(i) - NumRec Then
Rs.Move Tableau(i) - NumRec
Cells(j, i) = Rs.Fields(0).Value
NumRec = Tableau(i)
End If
Next i
End If
Cn.Close
Rs.Close
Set Cn = Nothing
Set Rs = Nothing
End If
Fichier = Dir()
Loop
End Sub
Merci de votre aide
@+