Problème de récupération de donnée dans classeur fermé

pedrofabien1986

XLDnaute Nouveau
Hello tout le monde.

Voilà comme le titre l'indique, j'ai des problèmes quand à la récupération de donnée dans un classeur fermé.

J'ai cherché partout sur le web des réponses sur des post existant mais je n'ai rien trouvé qui fonctionnait.

Ce que je veux faire c'est via un fonction, copier la valeur d'une cellule d'un classeur fermé et coller celle-ci dans la cellule activé.

Voici mon
Code:
Function 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 = "D6:D6"
      'Pour une plage de cellules, utilisez:
      'Cellule = "A4:C10"
      
    Feuille = "Informations Diverses$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
    'Chemin complet du classeur fermé
    Fichier = "N:\Projets en cours\1301001 Villa Fabien à Minergie\1301001 Villa Fabien à Minergie-Checkliste.xlsm"
    
    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 & "]")
     
    'Ecrit le résultat de la requête dans la cellule A2
    Range("J45").CopyFromRecordset Rst
            
    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing
    
End Function

Je travail avec la version 2007 de excel.

Merci d'avance de vos réponses.
 

Pierrot93

XLDnaute Barbatruc
Re : Problème de récupération de donnée dans classeur fermé

Bonjour,

une autre approche pour la cellule A1 du classeur / feuille en question :
Code:
ActiveCell ExecuteExcel4Macro("'C:\MesDocs\Excel\[NomClasseur.xls]NomFeuille'!R1C1")
bonne journée
@+
 

pedrofabien1986

XLDnaute Nouveau
Re : Problème de récupération de donnée dans classeur fermé

Merci de ta réponse.

Elle fonctionne bien mais ce n'est pas exactement ça que je cherche.

Je me suis mal exprimé au début. Ce que j'essai de faire, c'est de créer une Fonction dans la cellule L5 de mettre la Fonction "=DONNECLASSEURFERME()"
et que cette fonction aille me chercher la valeur qui se trouve dans le classeur fermé dans la cellule D6.

Car en fait ce que je suis en train de faire, est un fichier récapitulatif que à scanner certain dossier et m'afficher des données de fichier checkliste (tous identiques) afin de pouvoir avoir une vision global de l'avancement des dossiers en cours.
 

pedrofabien1986

XLDnaute Nouveau
Re : Problème de récupération de donnée dans classeur fermé

Il est là le problème. ça ne marche pas. Et je ne comprend pas pourquoi.

Je sais pas si peux aider mais dans mes références VBA j'ai activé :

Microsoft ActiveX Data Objects 6.0 Library

Mais ça de marche toujours pas...:mad:
 

Pierrot93

XLDnaute Barbatruc
Re : Problème de récupération de donnée dans classeur fermé

Re,

Il est là le problème. ça ne marche pas. Et je ne comprend pas pourquoi.

cela veut dire quoi ? pas le résultat attendu ou message d'erreur ?? pas testé, mais remarque il me semble avoir déjà lu qu'on ne pouvait utiliser des macros excel4 dans des fonctions personnalisées...
 

pedrofabien1986

XLDnaute Nouveau
Re : Problème de récupération de donnée dans classeur fermé

Et en ce qui concerne mon code départ ?

Car là aussi j'ai une erreur dans ma cellule #VALEUR!

Si je suis dans la mauvaise voix, pourriez-vous m'indiqué quelle voix choisir car je ne sais vraiment plus quoi faire.
 

pedrofabien1986

XLDnaute Nouveau
Re : Problème de récupération de donnée dans classeur fermé

J'ai trouvé un nouveau code vba sur le net qui devrait fonctionner mais ça ne vas toujours pas .

Code:
Function LireCellule_ClasseurFerme( _
        Chemin As String, _
        Fichier As String, _
        Feuille As String, _
        Cellule As Variant) As Variant
    
    Application.Volatile
    
    Dim Source As Object, Rst As Object, ADOCommand As Object
    Dim Cible As String
    
    Feuille = Feuille & "$"
    Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
        Cellule.Address(0, 0, xlA1, 0)
      
    Set Source = CreateObject("ADODB.Connection")
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Chemin & "\" & Fichier & _
        ";Extended Properties=""Excel 8.0;HDR=No;"";"
                
    Set ADOCommand = CreateObject("ADODB.Command")
    With ADOCommand
        .ActiveConnection = Source
        .CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
    End With
                  
    Set Rst = CreateObject("ADODB.Recordset")
    '1 = adOpenKeyset, 3 = adLockOptimistic
    Rst.Open ADOCommand, , 1, 3
    Set Rst = Source.Execute("[" & Feuille & Cible & "]")
     
    LireCellule_ClasseurFerme = Rst(0).Value
            
    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing
End Function

Si quelqu'un pourrai m'aider, ce serai vraiment sympa. ça fait depuis hier matin que je bloque sur cette fonction.:confused:
 

pedrofabien1986

XLDnaute Nouveau
Re : Problème de récupération de donnée dans classeur fermé

Bon Finalement j'ai trouvé une solution qui me va.

Cependant j'aimerai améliorer mon code car quand le programme trouve un fichier. il m'ouvre un boite de dialogue qui m'est inutile. Comme puis-je la supprimé.

La boîte de dialogue s'ouvre avec cette fonction
Code:
Range("A3").Offset(I - 1, 0) = "=" & Chemin

Qui met dans ma cellule
Code:
='N:\Projets en cours\1301001 Villa Fabien à Minergie\[1301001 Villa Fabien à Minergie.xlsm]Informations Diverses'!C3
 

pedrofabien1986

XLDnaute Nouveau
Re : Problème de récupération de donnée dans classeur fermé

Re-Hello.

Maintenant que je croyais que tout allais bien, je me rend compte que j'ai un problème avec mon lien.

Le lien se met correctement dans la cellule, mais il me met un #REF!

Par contre si je vais sur ma cellule => F2 => Enter, une fenêtre s'ouvre, là je vais chercher mon fichier que je sélectionne, et à partir de maintenant ça fonctionne même si je relance mon calcul et cette cellule ai été effacé auparavant.

Y aurait-il un moyen de faire cette manip via vba car j'ai plus de 200 lien de ce style.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson