Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

procédure de C. PEARSON pour supprimer le code VBA qui bloque !

82 views
Skip to first unread message

François

unread,
Feb 3, 2009, 11:18:22 AM2/3/09
to
Bonjour à tous,
 
J'essaie d'exploiter une procédure proposée par C. PEARSON pour supprimer le code VBA contenu dans une feuille (seulement, et non de toutes les feuilles ou dans les modules) -> http://www.cpearson.com/excel/vbe.aspx
-> en fait, il s'agit d'une feuille (non protégée, pas plus que les autres ou le fichier) où il y a un sendKey pour faire afficher automatiquement la validation sur certaines cellules... qui est copiée par VBA
Worksheet_SelectionChange ... If Not Intersect(Target, [B15:B22]) Is Nothing Then SendKeys "%{DOWN}"
 
L'auteur précise bien qu'il faut activer Microsoft Visual Basic For Applications Extensibility 5.3,
et dans la Sécurité/Macro , cocher "faire confiance ... " avec une signature numérique que j'ai déclarée par SelfCert.exe
(cf. en fin de message ... l'avertissement de C. PEARSON)
 
Le problème : quand je lance la macro qui fonctionnait bien, elle bloque avec le rajout de :
Dim NomFichier As String, NomFeuille As String
    NomFichier = ActiveWorkbook.Name
    NomFeuille = ActiveSheet.Name
With ActiveWorkbook.VBProject.VBComponents(Workbooks(NomFichier).Sheets(NomFeuille).CodeName).CodeModule
    .DeleteLines 1, .CountOfLines
    .CodePane.Window.Close
End With
A chaque fois, j'ai un message : "Microft Excel a rencontré un problème et doit fermer. Veuillez ...", sans que le débogueur ne s'affiche ...
Pourtant l'extension "Référence" est bien cochée, ainsi que la source fiable dans le projet vba et dans la sécurité de Excel ...
 
Auriez-vous une idée de ce qui bloque le système ?
 
Merci pour votre aide
 
François

You can write code in VBA that reads or modifies other VBA projects, modules, or procedures. This is called extensibility because extends the editor -- you can used VBA code to create new VBA code. You can use these features to write custom procedures that create, change, or delete VBA modules and code procedures.

In order to use the code on this page in your projects, you must change two settings.

  • First, you need to set an reference to the VBA Extensibililty library. The library contains the definitions of the objects that make up the VBProject. In the VBA editor, go the the Tools menu and choose References. In that dialog, scroll down to and check the entry for Microsoft Visual Basic For Applications Extensibility 5.3. If you do not set this reference, you will receive a User-defined type not defined compiler error.

  • Next, you need to enable programmatic access to the VBA Project. In Excel 2003 and earlier, go the Tools menu (in Excel, not in the VBA editor), choose Macros and then the Security item. In that dialog, click on the Trusted Publishers tab and check the Trust access to the Visual Basic Project setting.

    In Excel 2007, click the Developer item on the main Ribbon and then click the Macro Security item in the Code panel. In that dialog, choose Macro Settings and check the Trust access to the VBA project object model.

The VBA Project that you are going to change with these procedures must be unlocked. There is no programmatic way to unlock a VBA project (other than using SendKeys). If the project is locked, you must manually unlock. Otherwise, the procedures will not work.

François

unread,
Feb 3, 2009, 11:39:35 AM2/3/09
to
J'ai oublié de préciser sous Excel 2000 et XP !


François

unread,
Feb 3, 2009, 12:39:33 PM2/3/09
to
Bonjour MichDenis,
 
Merci pour ta réponse,
dans la sécurité de la feuille Excel sous Excel 2000, je n'ai qu'une seule case à cocher qui est :
"Faire confiance à tous les modèles et compléments installés" qui est cochée !
 
Si tu souhaites voir, j'ai fait une copie d'écran sous Word :
 
François
 
 
"michdenis" <mich...@hotmail.com> a écrit dans le message de news: 0BCD8218-43E1-43DF...@microsoft.com...
Le bout de code que tu as affiché devrait fonctionner sans ajout
de bibliothèque.. regarde si tu as dans la fenêtre suivante :
barre des menus de la feuille de calcul / outils / macros / sécurité /
éditeurs approuvés /les 2 cases à cocher dans le bas de la fenêtre
de cocher... sinon coche les.
 
"François" <nos...@nospam.fr> a écrit dans le message de groupe de discussion : OAbTTshh...@TK2MSFTNGP03.phx.gbl...

François

unread,
Feb 3, 2009, 1:53:02 PM2/3/09
to
Pardon pour l'erreur sur le site (et l'auteur) de la macro
(j'ai cherché par google et ai trouvé différents exemples et je me suis mélangé entre les sources ...)
celle que j'essayais d'exploiter n'est pas issue de PEARSON , mais de ce site :
 
Je vais essayer d'exploiter ce que PEARSON propose.
 
Merci pour ton aide et avec mes excuses pour l'erreur
 
François
 
"michdenis" <mich...@hotmail.com> a écrit dans le message de news: A8FE1BFC-859E-437A...@microsoft.com...
Dans le bout de code que toi tu as publié, la bibliothèque
n'est pas nécessaire. Cependant, dans les exemples du site
les variables sont déclarées comme ceci :
Dim VBAEditor As VBIDE.VBE
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
 
Vbide est le nom de la bibliothèque qui est chargé par la référence:
Microsoft Visual Basic for Applications Extensibility 5.3
Comme il fait référence à cette bibliothèque, évidemment il faut qu'elle
soit chargée.
 
 
 
"François" <nos...@nospam.fr> a écrit dans le message de groupe de discussion : e0E%23fZihJ...@TK2MSFTNGP06.phx.gbl...
0 new messages