ADO + copier coller

bloublou

XLDnaute Occasionnel
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
 

Pièces jointes

  • TEST.xlsm
    14.2 KB · Affichages: 41
  • TEST.xlsm
    14.2 KB · Affichages: 51
  • TEST.xlsm
    14.2 KB · Affichages: 47

Discussions similaires

Réponses
7
Affichages
512
Réponses
12
Affichages
801
Réponses
3
Affichages
311

Statistiques des forums

Discussions
314 450
Messages
2 109 731
Membres
110 553
dernier inscrit
loic55