Bonjour,
En essayant de me connecter à un autre classeur Excel via ADO, j'obtiens une erreur automation, voici le code :
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
| Sub extraire_ado()
Dim Source As Object, Requete As Object
Dim chemin As String
Dim Onglet As String, Plage As String
Dim Texte_SQL As String
chemin = "D:\"
Fichier = "code.xlsm"
Onglet = "Feuil5"
Onglet = Onglet & "$"
Plage = "B2:B10000"
Set Source = CreateObject("ADODB.Connection")
With Source
.Provider = "Microsoft.Jet.OLEDB.2.8"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& chemin & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
Texte_SQL = "SELECT * FROM [" & Onglet & Plage & "]"
Set Requete = CreateObject("ADODB.Recordset")
Set Requete = Source.Execute(Texte_SQL)
Range("C3").CopyFromRecordset Requete
Requete.Close
Set Requete = Nothing
Source.Close
Set Source = Nothing
End Sub |
Il bloque au niveau de
Set Requete = Source.Execute(Texte_SQL)
Je vous informe d'ailleurs que la propriété State de la connexion ADO est sur 1. Le fichier n'est pas non plus protégé.
Celà est mon premier problème.
Mon deuxième problème est que dans la l'instruction
Texte_SQL = "SELECT * FROM [" & Onglet & Plage & "]"
, je voudrais pouvoir selectionner qu'une seule cellule (pas une plage) qui est elle-même variable (boucle avec do). Le but est de comparer la valeur de la cellule 1 d'un classeur ouvert à celle d'un classeur fermé (cellule 2) (en parcourant une colonne), d'arreter quand les deux valeurs sont égales et enfin d'utiliser la valeur de la cellule 3 (dans le classeur fermé) et la multiplier par la cellule 4 (dans le classeur ouvert), le resultat sera affiché dans une cellule 5 du classeur ouvert. J'espère que c'est compréhensible.
Dans l'attente de résoudre le 20éme problème de Hilbert (lol), merci
Partager