Bonjour à tous,
J'utilise ADO connection pour importer des données à partir de classeurs fermés.
Je réalise juste un copier coller de lignes.
Je voudrais savoir si on pouvait simplifier le code qui est devenu très lourd.
Pour chaque fichier source j'utilise ce code, sachant que j'en ai une vingtaine. Cela me fait répéter 20 blocs comme celui - ci :
Sub TEST()
Dim Source As Object, Requete As Object
Dim Onglet As String, Plage As String, fichier As String
Dim Texte_SQL As String
'***********************************************************************************
'******************** IMPORT ****************************************************
'***********************************************************************************
'détermination de la plage à extraire
fichier = "chemin + nom du fichier"
Onglet = "TOTO" '
Plage = "A1:F250"
'connexion ADO
Set Source = CreateObject("ADODB.Connection")
Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"data source=" & fichier & ";Extended Properties=""Excel 12.0;HDR=No;"";"
'exerce la requete ADO sur les donnée à recopier
Texte_SQL = "SELECT * FROM [" & Onglet & "$" & Plage & "]"
Set Requete = CreateObject("ADODB.Recordset")
Set Requete = Source.Execute(Texte_SQL)
'restitue sur ton classeur
Cells(Rows.Count, 1).End(xlUp)(2).CopyFromRecordset Requete '(merci à Hasco)
'libère les pointeurs
Set Requete = Nothing
Set Source = Nothing
End Sub
J'aimerai savoir si on pouvait simplifier ce code en mettant le nom des fichiers les uns à la suite des autres
ou le simplifier d'une autre manière que je n'ai pas à copier coller ce bloc d'instructions 20 fois ?
Merci beaucoup de votre aide,
BlouBlou
J'utilise ADO connection pour importer des données à partir de classeurs fermés.
Je réalise juste un copier coller de lignes.
Je voudrais savoir si on pouvait simplifier le code qui est devenu très lourd.
Pour chaque fichier source j'utilise ce code, sachant que j'en ai une vingtaine. Cela me fait répéter 20 blocs comme celui - ci :
Sub TEST()
Dim Source As Object, Requete As Object
Dim Onglet As String, Plage As String, fichier As String
Dim Texte_SQL As String
'***********************************************************************************
'******************** IMPORT ****************************************************
'***********************************************************************************
'détermination de la plage à extraire
fichier = "chemin + nom du fichier"
Onglet = "TOTO" '
Plage = "A1:F250"
'connexion ADO
Set Source = CreateObject("ADODB.Connection")
Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"data source=" & fichier & ";Extended Properties=""Excel 12.0;HDR=No;"";"
'exerce la requete ADO sur les donnée à recopier
Texte_SQL = "SELECT * FROM [" & Onglet & "$" & Plage & "]"
Set Requete = CreateObject("ADODB.Recordset")
Set Requete = Source.Execute(Texte_SQL)
'restitue sur ton classeur
Cells(Rows.Count, 1).End(xlUp)(2).CopyFromRecordset Requete '(merci à Hasco)
'libère les pointeurs
Set Requete = Nothing
Set Source = Nothing
End Sub
J'aimerai savoir si on pouvait simplifier ce code en mettant le nom des fichiers les uns à la suite des autres
ou le simplifier d'une autre manière que je n'ai pas à copier coller ce bloc d'instructions 20 fois ?
Merci beaucoup de votre aide,
BlouBlou