Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/11/2011, 02h18   #1
Candidat au titre de Membre du Club
 
Homme Martin
Inscription : juillet 2008
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Martin
Localisation : Etats-Unis

Informations forums :
Inscription : juillet 2008
Messages : 49
Points : 13
Points : 13
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 :
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...
martinmacfly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 19h25   #2
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
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 :
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 :
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 20h56   #3
Candidat au titre de Membre du Club
 
Homme Martin
Inscription : juillet 2008
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Martin
Localisation : Etats-Unis

Informations forums :
Inscription : juillet 2008
Messages : 49
Points : 13
Points : 13
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 ?
martinmacfly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 21h09   #4
Candidat au titre de Membre du Club
 
Homme Martin
Inscription : juillet 2008
Messages : 49
Détails du profil
Informations personnelles :
Nom : Homme Martin
Localisation : Etats-Unis

Informations forums :
Inscription : juillet 2008
Messages : 49
Points : 13
Points : 13
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:
Citation:
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.
martinmacfly est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h49.


 
 
 
 
Partenaires

Hébergement Web