Bonjour,

J'ai lu Lire et écrire dans les classeurs Excel fermés de SilkyRoad. Plus particulièrement la section IV-A.
Le code sous la ligne : Vous pouvez également lire une cellule spécifique, ou une plage de cellules, en utilisant la méthode ADO. fonctionne très bien.

Ce que j'aimerais, c'est qu'au lieu d'envoyer la valeur dans une feuille, je voudrais l'avoir dans la variable de sorti extractionValeurCelluleClasseurFerme

la ligne a changer est : Range("A2").CopyFromRecordset Rst

Voilà le code complet :

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
36
37
38
Sub extractionValeurCelluleClasseurFerme()
    Dim Source As ADODB.Connection
    Dim Rst As ADODB.Recordset
    Dim ADOCommand As ADODB.Command
    Dim Fichier As String, Cellule As String, Feuille As String
 
    'Adresse de la cellule contenant la donnée à récupérer
    Cellule = "B4:B4"
      'Pour une plage de cellules, utilisez:
      'Cellule = "A4:C10"
 
    Feuille = "Feuil1$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
    'Chemin complet du classeur fermé
    Fichier = "C:\Base.xls"
 
    Set Source = New ADODB.Connection
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
 
    Set ADOCommand = New ADODB.Command
    With ADOCommand
        .ActiveConnection = Source
        .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
    End With
 
    Set Rst = New ADODB.Recordset
    Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
 
    Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
 
    Range("A2").CopyFromRecordset Rst
 
    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing
End Sub
Merci d'avance pour vos réponses