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 :

Récupération variables de niveau classeur en utilisant ADODB


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur vba sur Excel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur vba sur Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Récupération variables de niveau classeur en utilisant ADODB
    Bonjour, j'utilise depuis longtemps ADODB pour récupérer des données provenant d'un "named range" que nous appellerons "dataRange" ici mais maintenant je voudrais pouvoir aussi récupérer la valeur de variables définies au niveau du classeur lui même. Je dois avouer que je ne sais pas si cela est possible mais en tout cas ma requête bloque au niveau de sa partie FROM.

    Séquences essayées sans succès
    => "FROM C:\...\classeur.xls "
    => "FROM `C:\...\classeur.xls` "

    Séquence utilisée depuis longtemps sur des named range => "FROM `C:\...\classeur.xls`.dataRange dataRange "

    Merci pour vos éventuelles contributions.

    Cordialement
    Alain

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 389
    Points : 2 024
    Points
    2 024
    Par défaut
    Citation Envoyé par desaivresa Voir le message
    mais maintenant je voudrais pouvoir aussi récupérer la valeur de variables définies au niveau du classeur lui même.
    C'est à dire ?
    Tu peux nous donner un exemple ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur vba sur Excel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur vba sur Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Je peux expliciter la création de variables de type Classeur si c'est ce qui est demandé. Donc dans un classeur quelconque, tu ouvres le Name Manager, tu fais New pour accéder à la création d'un "New Name" et après avoir donné un nom à ce nouveau "Name" (cette nouvelle variable), au lieu de faire référence à une cellule d'une feuille, tu entres directement ta valeur dans la zone "Refers to". La "variable" ainsi créée est par défaut de niveau classeur et tu pourras l’atteindre en faisant appel à la collection des "names" sous le classeur. Il est aussi possible de créer des variables de type "Worksheet" en changeant le "scope" dans la fenêtre de création de "New Name" Dans ce cas en vba tu trouveras ces variables entre autre en faisant appel à la collection des "names" de la feuille en question.

    Ma question centrale pour y revenir était de savoir si il était possible de récupérer les valeurs de ces variables en passant par l'ADODB qui présente entre autre le grand avantage de ne pas imposer l'ouverture du classeur. Mais en fait ce qui m'importe le plus serait de savoir récupérer sa valeur sans avoir à ouvrir le classeur qui l'héberge.

    Cordialement
    Alain

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 389
    Points : 2 024
    Points
    2 024
    Par défaut
    A ma connaissance, utiliser une connection ADODB vers un classeur excel, conssiste a considerer ce dernier comme une base de donnée très basique.
    Chaque feuille est considerée comme une simple table sur lesquels on peut effectuer des requetes, on n'accède qu'aux données présentes dans les cellules.

    Acceder aux variables / propriétés enregistrées dans le classeur necessite VBA.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur vba sur Excel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur vba sur Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Acceder aux variables / propriétés enregistrées dans le classeur necessite VBA.
    C'est bien en utilisant le vba que j'espère pouvoir accéder à ces variables mais cela sans ouvrir le classeur - vous pensez que c'est possible ? Lire les "propriétés" d'un classeur fermé tel que Auteur mais aussi des propriétés spécifiques, ça je l'ai déjà fait mais à ma connaissance cela ne donne pas accès aux variables internes déclarées dans le classeur... Me tromperais-je ?

    Cordialement
    Alain

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur vba sur Excel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur vba sur Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    J'ai cru trouver mon bonheur en procédant comme décrit ci-dessous mais cela ne fonctionne pas non plus... Tristesse... Quelqu'un est-il en mesure de me dire pourquoi ?

    J'ai placé dans mon code vba cette instruction dans le but de récupérer dans une variable locale la valeur d'une variable située dans un autre classeur (non ouvert)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Names.Add "Temp01" RefersTo:="='C:\Path\fichier.xls'!nomVariable"
    Mais cela ne fonctionne pas, le plus étrange étant que si je défini manuellement le même genre de variable locale, disons "Temp02" en faisant référence à la même chaîne de définition cette seconde définition fonctionne alors que la première générée en vba ne donne rien... Par contre si j'ouvre le classeur source alors la variable définie par le vba se met à marcher... !

    Alain

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur vba sur Excel
    Inscrit en
    Janvier 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur vba sur Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Mes derniers essais tournent autour de l'utilisation de Application.ExecuteExcel4Macro

    Application.ExecuteExcel4Macro('C:\Path\[fichier.xls]nomFeuille'!R1C1) => fonctionne !!!! mais ne me sert à rien

    Application.ExecuteExcel4Macro('C:\Path\fichier.xls'!nomVariable) => ne fonctionne pas et c'est pourtant de celle-ci dont j'aurais besoin

    A plus
    Alain

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 389
    Points : 2 024
    Points
    2 024
    Par défaut
    Si par "classeur fermé", cela implique que l'utilisateur ne voit pas le 2nd classeur, tu peux instancier une application excel en tâche de fond (donc non visible), ouvrir le classeur et lire les propriétés (il n'y aura pas d'ADODB dans ce cas).
    Par contre, si l'ouvrir même en tâche n'est pas à l'ordre du jour, je ne voit pas de solution.

  9. #9
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut



    Bonjour, bonjour !

    Il est inutile d'instancier une deuxième application Excel, ce serait dommage de gâcher inutilement des ressources !

    A partir de l'application Excel normale, désactiver le rafraîchissement de l'écran suffit amplement (ScreenUpdating) …



    __________________________________________________________________________________________________
    Tous unis, tous Charlie

Discussions similaires

  1. Pb Variable saisie à l'ouverture du classeur pour utilisation ultérieure
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/01/2008, 00h57
  2. Réponses: 5
    Dernier message: 16/05/2006, 10h23
  3. Architecture d'un serveur multijoueurs niveau emmission avec utilisation thread
    Par goof_22 dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 22/04/2006, 16h26
  4. Réponses: 9
    Dernier message: 15/03/2006, 11h46
  5. [VBA excel] une variable pour 2 classeurs
    Par totoche dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/01/2006, 10h42

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