Salut @Xtof@, Fabrice, Nicko et le Forum
Cher ami @Xtof@
Premièrement je dois mettre en garde ceux/celles qui essaieraient ce code "EffaceMacro"...
C'est un radical !!!!!!!!! [/b] Il n'y aura plus rien !!! Tout votre Projet est éradiqué[/b]... ATTENTION DONC ! à tester sur un fichier bidon avant, ou alors sauver votre travail, car il n'y aura pas de "Undo" ...
Humm, pour ce qui est de ton interprétation à la question de Nicko, je me permets de diverger un tant soit peu.
Est-il vraiment nécessaire de virer le macro ? enfin çà me parait bien compliquer pour faire suite à la demande de Nicko..... Pour Fab peut-être... Dans lequel cas il y a aussi toute la panoplie des instructions pour "jongler" dans les modules en suivant le guide :
Fil de Discussion Recencé pour Database XLD
Numéro 21649
(connaissant Fab çà évitera des questions !! lol)
Mais revenos à Nicko, disons que moi je verrai bien plus simple puisque Nicko veut simplement éviter que le User active une deuxième fois cette macro...
Il suffit d'écrire quelque part... Même un Label caché, ou une cellule IV65536 d'une feuille "VeryHidden" une condition True ou False...
La macro qui devra ne s'éxécuter qu'une fois aura un test dans ce style à l'ouverture :
Sub LaMacroOneTime ()
Dim Test As Boolean
Test = Sheets("X").Range("IV65536")
If Test = True Then Exit Sub 'ou on peut coller un MsgBox...
Sheets("X").Range("IV65536") = False
ThisWorBook.Save
Blah Blah blah la macro...........
End Sub
Of Course, on aura pris soin de sauver la première fois le classeur avec la Sheets("X").Range("IV65536") avec la valeur False...
Voilà c'est une autre approche...
D'ailleurs Nicko n'explique pas tout à fait clairement si il veut ceci "temporairement" ce bloquage, ... Pendant l'usage... Alors à ce moment là il y a aussi la possibilité de mettre cette vraiable en Publique et pas l'écrire en dur sur IV65536... Bon on part du principe qu'il le veut en dûr ! (plus c'est dûr plus c'est bon comme dirait l'autre !!)
Mais ensuite, là où çà diverge totalement, et où (je me demande) va finir ce pauvre Nicko si il a détruit toutes les macros... C'est qu'il veut récupérer la possibilité de cette macro si on fait un SaveAs sous un autre nom....
Dis nous un peu comment qu'il fait après avoir fait tourné ton truc de destruction pire qu'Atila ??? lol
Moi je sais !! lol
Il met ceci dans le Private Module de ThisWorkBook...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI Then
Sheets("X").Range("IV65536").Formula = True
End If
End Sub
Et hop !!
))
Bonne Soirée à toi @Xtof@ et à vous Fab et Nicko et le Forum !!
@+Thierry