Bonjour à tous,
J'ai essayé d'utiliser les connections ADO pour récupérer des données dans des classeurs fermés et cela marche très bien.
J'ai vu sur certains fils concerant ADO que l'utilisation des plages dynamiques ne fonctionnait pas, mais je voudrais savoir si je pouvais combiner ADO avec un copier / coller qui me permette de ne pas écraser les valeurs déjà récupérées dans d'autres classeurs.
J'ai mis un classeur en exemple : TEST => c'est le fichier de destination; à partir de la 9ième ligne il y a déjà des données, normalement le copier coller (du fichier source : "A2:Y137"devrait s'opérer à la suite mais ca ne fonctionne pas
Je vous mets le code :
Sub COPY_ADO()
End Sub
Dim Source As Object, Requete As Object
Dim Onglet As String, Plage As String, fichier As String
Dim Texte_SQL As String
'détermination de la plage à extraire
fichier = "chemin fichier + nom.xlsx"
Onglet = "TOTO" '
Plage = "A2:Y137"
'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
Range("A2", "A" & Plage).CopyFromRecordset Requete ' colle les données de la plage extraite
'libère les pointeurs
Set Requete = Nothing
Set Source = Nothing
Et je mets le fichier en exemple
Merci de votre aide,
BlouBlou
J'ai essayé d'utiliser les connections ADO pour récupérer des données dans des classeurs fermés et cela marche très bien.
J'ai vu sur certains fils concerant ADO que l'utilisation des plages dynamiques ne fonctionnait pas, mais je voudrais savoir si je pouvais combiner ADO avec un copier / coller qui me permette de ne pas écraser les valeurs déjà récupérées dans d'autres classeurs.
J'ai mis un classeur en exemple : TEST => c'est le fichier de destination; à partir de la 9ième ligne il y a déjà des données, normalement le copier coller (du fichier source : "A2:Y137"devrait s'opérer à la suite mais ca ne fonctionne pas
Je vous mets le code :
Sub COPY_ADO()
End Sub
Dim Source As Object, Requete As Object
Dim Onglet As String, Plage As String, fichier As String
Dim Texte_SQL As String
'détermination de la plage à extraire
fichier = "chemin fichier + nom.xlsx"
Onglet = "TOTO" '
Plage = "A2:Y137"
'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
Range("A2", "A" & Plage).CopyFromRecordset Requete ' colle les données de la plage extraite
'libère les pointeurs
Set Requete = Nothing
Set Source = Nothing
Et je mets le fichier en exemple
Merci de votre aide,
BlouBlou