Suppression Macro

N

nanor

Guest
Salut le forum,

J'aimerais avoir un bouton qui supprime la ligne dans ThisWorkbook qui exécute une macro à l'ouverture de mon fichier.

J'ai ete voir ce fil mais je n'arrive pas à le faire fonctionner chez moi:
[a href="http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=17616&t=17440]ICI[/a]

Merci d'avance.

nanor
 
V

Vériland

Guest
Bonjour Nanor et le Forum,

En supposant que ta macro se nomme "A_Retirer" et qu'elle se trouve dans le module "Module1" voici le code qui permet de la retirer :


' supprimer une macro dans un module, à l'aide d'une macro

Sub supprimer_macro()
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
debut = .ProcStartLine("A_Retirer", vbext_pk_Proc)
nblignes = .ProcCountLines("asupprimer", vbext_pk_Proc)
.deleteLines debut, nblignes
End With
End Sub


maintenant de le faire dans ThisWorkbook je n'ai pour l'instant la parade...ceci serait d'autant plus embêtant puisque la macro serait perdue à chaque ouverture de fichier...(si le document est enregistré)...le principe même de ThisWorkbook est d'y appliquer des macros qui s'enclenchent dès l'ouverture...genre Private Sub Workbook_Open()...alors de les supprimer je ne vois pas trop l'utilité...

en attendant bonne continuation...

j'me sauve...hi hi hi

A+ Vériland
 
@

@+Thierry

Guest
Re: Suppression Macro (Sélectivement) dans Private Module, ou Standard

Bonjour Vériland, Nanor et tout le Forum

Un petit passage furtif pour féliciter Vincent, car je ne connaissais pas "ProcStartLine" qui est très pratique.

Pour Nanor, donc, ben il suffit de faire comme dans ce fil

mais au lieu de "VBComponents(ActiveWorkbook.Sheets("Feuil1").CodeName).CodeModule" donc pour un Private Module de Sheet, il faut changer pour :

Sub Supprime_ThisWorkBookMacro()
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.deleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
End Sub

Mais la tu vireras toutes les macros du Private Module ThisWorkBook...
Maintenant en appliquant la méthode "made in Vériland" (héhéhé) voici ce que celà donne pour virer une macro précise dans le même Private Module :

Sub supprimer_evenementielle()
Dim vbext_pk_Proc As Long
Dim debut As Integer
Dim nblignes As Integer

With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
debut = .ProcStartLine("Workbook_Open", vbext_pk_Proc)
nblignes = .ProcCountLines("Workbook_Open", vbext_pk_Proc)
.deleteLines debut, nblignes
End With
End Sub

Ici c'est l'évènementielle "Workbook_Open", mais donc on peut choisir une autre :

Sub supprimer_evenementielle()
Dim vbext_pk_Proc As Long
Dim debut As Integer
Dim nblignes As Integer

With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
debut = .ProcStartLine("Workbook_BeforeClose", vbext_pk_Proc)
nblignes = .ProcCountLines("Workbook_BeforeClose", vbext_pk_Proc)
.deleteLines debut, nblignes
End With
End Sub

Super génial, Vériland, je ne sais pas encore à quoi ça va me servir..... Mais ça va me servir !!!

Bonne Appétit
@+Thierry
 
V

Vériland

Guest
Re: Suppression Macro (Sélectivement) dans Private Module, ou Standard

Re...

Bonjour Not' Thierry...hi hi hi...je vois que c'est la pleine forme là...çà fait plaisir de te revoir dans cet état, après le mal dont tu as souffert...
bouche8.gif
...lol

Je ne doute pas de l'usage non moins utile que tu pourrais faire de cette macro...on peut avec ça effacer toute trace dans VBA...mais bon après y'a plus rien...lol...Par contre ce que je retiendrais pour le coup c'est le numéro de ce fil...

alors attends...kes ky fo ke j'fasse...

...mince...comment çà marche...il me faut le mode d'emploi...

...bon j'vais regarder Lien supprimé...

alors bla bla bla...ah oui il est long ce fil...bla bla bla...

...oups...voilà...donc le plus petit numéro...pffff...fastoche...ici c'est 20854...

Alors pourquoi je dis cela...mais tout simplement que ce fil est à lui seul une réponse précise à la question de suppression d'une macro...tout y est...le mot clé le thème etc...y'a pas plus simple...

Donc vous avez compris ? on colle ce lien dans Lien supprimé puis on passe à une autre recherche...

Voilà...bon j'vous laisse...Thierry tu peux à nouveau manger autre chose que de la soupe maintenant...mdr...bon appétit aussi...

ben quoi...y'a pas d'heure pour en manger du "Just'un bri doo"...lol

A+ Vériland
 

Discussions similaires