Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Élucubrations du dimanche matin et encore besoin de vos lumières 🙂
Je reprends tous mes classeurs qui contiennent bcp de codes tous venus du forum
et adaptés selon mes petites connaissances.
Un grand à vous toutes et tous car sans vous, je n'aurais pas pu travailler dans de bonne conditions.
J'ai besoin pour tout reprendre et nettoyer plus vite d'un code supprimant d'un coup tous les modules du classeur ouvert.
Ne sachant pas faire cela, j'ai beaucoup cherché cette nuit sur le net.
Tout ce que j'ai pu essayer et/ou tenter d'adapter n'a pas pas réussi.
Sub supprimerUnModule()
With ThisWorkbook.VBProject.VBComponents
.Remove .Item("Module2")
End With
End Sub
Sub SupprimeTout()
'supprime la totalité des procédures
Dim VbComp As VBComponent
For Each VbComp In ThisWorkbook.VBProject.VBComponents
Select Case VbComp.Type
Case 1 To 3
ThisWorkbook.VBProject.VBComponents.Remove VbComp
Case Else
With VbComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next VbComp
End Sub
Si vous aviez la solution, ça me ferait gagner beaucoup de temps.
Je joins un fichier test.
Avec mes remerciements,
Je vous souhaite à toutes et à tous un beau dimanche,
Amicalement,
lionel,
Avec le fichier du post #13, pour que l'accès au VBAProject soit possible par macro il faut avoir coché l'option :
- sur Excel 2003 et versions antérieures Faire confiance au projet Visual Basic (menu Outils-Macro-Sécurité-Editeurs approuvés)
- sur Excel 2007 et versions suivantes Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros).
Par ailleurs pour les 2ème et 3ème macros écrire : Dim VbComp As Object
arthour
Mes deux macros étaient juste là pour t'aider à trouver où était l'erreur par rapport à FullName...
Pas sûr qu'elles furent sur ton PC testées 😉
Normalement, la première macro doit afficher un Msgbox "vide"
Par contre la seconde affiche un MsgBox avec une information qui peut ne pas être inutile
Partant de là, il était simple de voir ce qui clochait, non ? (surtout pour un Barbatruc 😉 )
"Par ailleurs pour les 2ème et 3ème macros écrire : Dim VbComp As Object"
J'ai donc transformé comme suit :
VB:
Sub SupprimeTout()
'supprime la totalité des procédures
Dim VbComp As Object
'Dim VbComp As VBComponent
For Each VbComp In ThisWorkbook.VBProject.VBComponents
Select Case VbComp.Type
Case 1 To 3
ThisWorkbook.VBProject.VBComponents.Remove VbComp
Case Else
With VbComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
End Select
Next VbComp
End Sub
For Each VbComp In ThisWorkbook.VBProject.VBComponents
Mais ça beug erreur 1004 - la méthode de l'objet a échoué.
Normalement, la première macro doit afficher un Msgbox "vide"
Par contre la seconde affiche un MsgBox avec une information qui peut ne pas être inutile
Partant de là, il était simple de voir ce qui clochait, non ? (surtout pour un Barbatruc 😉 )
LOL quel barbatruc ??? 🙂
Il est vrai qu'il faudrait revoir les bases des classifications car le nombre de messages ne fait pas de moi un expert malheureusement 🙂
En tout cas, je confirme: pas de bug chez moi avec la macro SupprimeTout
NB: Ma seconde macro affichait le chemin et le nom du classeur actif par cette ligne
MsgBox ActiveWorkBook.FullName
alors que
Msgbox FullName renvoie une chaine vide
Donc le code de Job75, il était écrit
Me.FullName
et dans tes essais et modifications tu as supprimé le Me.
C'est fois-ci, c'est plus clair?
Souvent, mon honorifique titre de "Barbatruc" fait penser aux ténors du vba que je devrais connaître un tas de choses et que mes réponses ne sont pas du niveau que je suis censé être ...
Cela occasionne des réflexions et échanges auxquels je ne suis pas insensible.
Certainement que d'autres sont dans le même cas.
Comme je le dis plus haut : il faudrait revoir les bases des classifications car le nombre de messages ne fait pas de moi un expert malheureusement .
Même si grâce à vous tous, j'ai acquis quelques connaissances, je suis loin du niveau d'un "barbatruc".
Toutefois, souvent, je pourrais, à ma façon répondre à certains mais je m'abstiens car les ténors que vous êtes ont toujours de meilleurs codes faits dans les règles de l'art 🙂
Calimero, sors de ce corps.
PS: ma prose n'est jamais méchante ou malveillante sur le forum, juste ironiquement amicale voir amicalement ironique quand l'envie m'en prends.
Bref ta question est résolue (bien qu'elle l'était déjà avant d'être posée, cf le début du fil 😛)
Mon cher Staple1600,
Je n'ai jamais dit ça... bien au contraire 🙂
Je sais que tu es bienveillant et amical .. et de bons conseils 🙂
Bref, comme tu dis, mais non, c'était pas résolu avant d'être posé mais c'est bon maintenant.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD