IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fonction développée par Silkyroad ne fonctionne pas (récupérer valeur d'un fichier fermé).


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut Fonction développée par Silkyroad ne fonctionne pas (récupérer valeur d'un fichier fermé).
    Bonjour,

    Je dois récupérer dans un fichier EXCEL des valeurs situées dans un autre fichier EXCEL mais celui-ci fermé.

    J'ai pour cela utilisé la fonction proposée par Silkyroad (source https://excel.developpez.com/faq/ind...tClasseurFerme).

    Le fichier dans lequel je veux récupérer le résultat se nomme "titi.xlsm". Le résultat apparait en cellule E12 de ce fichier (onglet Feuil1).
    Le fichier fermé dans lequel se trouve l'information se nomme "Entry_Form_ID4353.xlsm". La valeur à récupérer se situe dans l'onglet "ADD_INFOS" en cellule C8.

    La fonction me retourne le résultat : #VALEUR!

    La fonction me retourne la bonne valeur si le fichier "Entry_Form_ID4353.xlsm" est ouvert. Or je veux récupérer le résultat SANS ouvrir ce fichier (c'est l'objet de la fonction développée par Silkyroad).

    Pouvez-vous m'indiquer ce que je dois modifier pour que cette fonction fonctionne correctement ? Merci par avance.

    Cdlt.
    Jérôme.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut
    (Re)bonjour,

    J'ai trouvé les infos complémentaires suivantes, peut-être ? à l'origine de mon pb. En effet Silkyroad mentionne :

    Vous devez préalablement activer la référence Microsoft ActiveX Data Objects x.x Library pour utiliser les exemples présentés dans ce tutoriel.

    Dans l'éditeur de macros:
    Menu Outils.
    Références.
    Cochez la ligne "Microsoft ActiveX Data Objects x.x Library".
    Cliquez sur le bouton OK pour valider.

    x.x dépend de la version installée sur votre poste.


    Certains exemples proposés permettent de manipuler les tables et nécessitent d'activer la référence Microsoft ADO ext x.x for DLL and Security.


    Sachant que j'utilise MS Office 2013 (15.0.5075.1000) et qu'il y a de nombreuses références lesquelles dois-je activer SVP ?

    Cdlt.
    Jérôme.

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir licpegpon, la forum
    ici la plupart n'ouvre pas par mesure de sécurité les fichiers joints
    Pour espérer de l'aide affiche le code entre balise (#) et indique ou se trouve l'erreur !
    Bonne continuation

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut
    (Re)bonjour,

    Voici le code proposé par Silkyroad. En fait il s'agit d'une fonction :


    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
    39
    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

    Etant débutant je ne sais pas comment on peut afficher le lieu de l'erreur. Quoi qu'il en soit j'ai le message #VALEUR!.

    Merci par avance.

    Cdlt.
    Jérôme.

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ta chaine de connexion semble être dédiée aux versions antérieure à 2007

    j'ai celle-ci qui traine dans un vieux classeur d'où je requêtais des paquets de lignes


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Source.Open "Provider = Microsoft.ACE.OLEDB.12.0;data source=" & LeFichier & ";extended properties=""Excel 12.0;HDR=YES"""
    attention au paramètre HDR qui est à YES chez moi et que tu dois probablement passer à NO

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Août 2017
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2017
    Messages : 363
    Par défaut
    (Re)bonjour,

    Voici le code modifié qui donne également le résultat #VALEUR!

    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
    39
    40
    41
    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;"";"
     
        Source.Open "Provider = Microsoft.ACE.OLEDB.12.0;data source=" & LeFichier & ";extended properties=""Excel 12.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
    Cdlt.
    Jérôme.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/08/2018, 16h25
  2. La fonction eye (512*512) ne fonctionne pas
    Par Verboz dans le forum MATLAB
    Réponses: 6
    Dernier message: 01/03/2007, 00h26
  3. La fonction "source" de MySQL ne fonctionne pas
    Par muad'dib dans le forum JDBC
    Réponses: 14
    Dernier message: 15/01/2007, 17h25
  4. Fonction Quoted printable qui ne fonctionne pas.
    Par leCcsympas dans le forum C
    Réponses: 3
    Dernier message: 13/01/2007, 18h54
  5. fonctions remove et rename ne fonctionnent pas ?
    Par FamiDoo dans le forum MFC
    Réponses: 29
    Dernier message: 30/06/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo