Bonjour,

En essayant de me connecter à un autre classeur Excel via ADO, j'obtiens une erreur automation, voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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