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 :

Ajout d'une reference


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut Ajout d'une reference
    Bonjour a tous,

    Je souhaite faire la chose suivante avec VBA :
    • Tester qu'une reference VBA est bien activee (en l'occurence, le Solver)
    • Si elle ne l'est pas, l'activer via VBA

    Je devrais pouvoir me debrouiller avec ce post pour activer et tester l'activation de la reference, mais il me manque sa GUID.

    Pour la connaitre, j'ai teste le code presente dans l'article ci-dessus, ainsi que d'autres, qui sont en gros equivalents. Pour plus de clarte, voila le code (il doit permettre de lister toutes les references du projet) :
    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
    Sub Grab_References() 
     
        Dim n As Integer 
     
        Sheets.Add 
        ActiveSheet.Name = "GUIDS" 
     
        On Error Resume Next 
        For n = 1 To ActiveWorkbook.VBProject.References.Count 
            Cells(n,1) = ActiveWorkbook.VBProject.References.Item(n).Name 
            Cells(n,2) = ActiveWorkbook.VBProject.References.Item(n).Description 
            Cells(n,3) = ActiveWorkbook.VBProject.References.Item(n).GUID 
            Cells(n,4) = ActiveWorkbook.VBProject.References.Item(n).Major 
            Cells(n,5) = ActiveWorkbook.VBProject.References.Item(n).Minor 
            Cells(n,6) = ActiveWorkbook.VBProject.References.Item(n).fullpath 
        Next n 
     
    End Sub
    Seulement, mon probleme, qui est arrive avec tous les codes que j'ai testes et qui reveneient plus ou moins au precedent, est que le nombre de references donne par VBA (avec ActiveWorkbook.VBProject.References.Count) est 0, ce qui n'est pas le cas en realite, mais cela fait qu'aucune propriete n'est listee...

    Quelqu'un aurait-il une idee de comment faire marcher cette procedure ?

    Merci d'avance,

    Martin

    PS : Toutes mes excuses pour l'absence d'accents et de cedilles, les claviers QWERTY ne sont pas vraiment les allies de la langue de Moliere...

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut
    Le code ne pose pas de problème chez moi.
    Attention si tu as plusieurs classeurs d'ouvert de bien travailler sur le bon classeur, mais tu devrais tout de même avoir des références...

    Essai en pointant sur les feuilles et les classeurs
    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
    Sub Grab_References()
    Dim NewFeuille As Worksheet
    Dim TheWB As Workbook
    Dim n As Integer
     
        'On crée une nouvelle feuille est on pointe dessus dans une variable
        Set NewFeuille = ThisWorkbook.Sheets.Add
        NewFeuille.Name = "GUIDS"
     
        'On pointe le classeur sur lequel on va travailler
        'Si c'est sur un classeur autre que le classeur ou se trouve la macro il faudra adapter
        Set TheWB = ThisWorkbook
     
       ' On Error Resume Next 'Pas tant que le code n'est pas debogé comme il faut
        For n = 1 To TheWB.VBProject.References.Count
            NewFeuille.Cells(n, 1) = TheWB.VBProject.References.Item(n).Name
            NewFeuille.Cells(n, 2) = TheWB.VBProject.References.Item(n).Description
            NewFeuille.Cells(n, 3) = TheWB.VBProject.References.Item(n).GUID
            NewFeuille.Cells(n, 4) = TheWB.VBProject.References.Item(n).Major
            NewFeuille.Cells(n, 5) = TheWB.VBProject.References.Item(n).Minor
            NewFeuille.Cells(n, 6) = TheWB.VBProject.References.Item(n).fullpath
        Next n
     
    End Sub
    Sinon il serait peut-être interessant de placer un espion sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TheWB.VBProject.References
    pour voir ce que la méthode contient.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut
    Salut Qwazerty,

    Merci pour la reponse, malheureusement ca ne marche pas chez moi, et je ne comprends absolument pas pourquoi.

    En placant des espions, j'ai les reponses suivantes:
    • Pour TheWB.VBProject, j'ai Programmatic access to Visual Basic Project is not trusted
    • Pour TheWB.VBProject.References et TheWB.VBProject.References.Count, j'ai Method 'VBProject' of object '_Workbook' failed (un peu normal que ca ne marche pas si VBProject fail)

    Je n'arrive pas non plus a expliquer ca, aurais-tu une idee ?

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Juillet 2008
    Messages : 50
    Par défaut
    Je viens de trouver une reponse partielle : j'utilise aussi ce code sous Excel 2010, qui est plus severe sur l'acces au modele VBA par les macros que 2007. Il faut donc regler un parametre (voir quote ci-dessous) pour que ca marche.

    La macro fonctionne donc, MAIS j'ai un nouveau probleme... Je ne comprends pas pourquoi, il ne me donne pas la GUID du Solver (un espion me dit bien qu'il trouve une string vide pour lui), quelau'un aurait-il une idee a ce propos ?


    Voila ce que dit l'Aide d'Office sur l'acces au modele VBA:
    About Automating the Visual Basic Editor

    In Office 2010, when calling the features of the Microsoft Visual Basic for Applications Extensibility object model, you might receive an error message that programmatic access to the Visual Basic project is not trusted. To prevent this message from appearing, click the File tab, click Options, click the Trust Center tab, and then click Trust Center Settings. Next, click the Macro Settings tab and then select the Trust access to the VBA project object model box. By checking this box, you make it possible for macros in any macro-enabled documents that you open to access the core Microsoft Visual Basic objects, methods, and properties. Setting the option represents a possible security hazard. The recommended behavior is to check the Trust access to the VBA project object model box only for the duration of a macro that accesses the Visual Basic object model. Make sure that you clear the Trust access to the VBA project object model box after the macro has finished running.

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/03/2014, 12h04
  2. Probleme avec l'ajout d'une nouvelle reference
    Par sayfouche dans le forum C#
    Réponses: 1
    Dernier message: 24/05/2008, 03h57
  3. Ajouter une reference
    Par seb_cba dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/03/2008, 21h56
  4. Ajouter une reference à Access par le code dans un programme VB ?
    Par Chekov dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 12/12/2007, 00h23
  5. [VBA-E] Ajouter une reference par le code
    Par mustang-ffw02 dans le forum Installation, Déploiement et Sécurité
    Réponses: 12
    Dernier message: 21/11/2006, 19h28

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