Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

supprimer userform et module par macro

2 réponses
Avatar
Rejete
Bonjour à tous,

je souhaite supprimer un userform et un module par du code. Pour ce faire,
j'ai trouvé ces codes, mais je ne parviens pas à les faire fonctionner :

- pour les userforms

Sub EffaceUserForm(MonUserForm As String)
ActiveWorkbook.VBProject.VBComponents.Remove
ActiveWorkbook.VBProject.VBComponents(MonUserForm)
End Sub

- pour les modules

Sub SuppModule(nModule As String)
Dim VBC As VBComponent
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Name = nModule Then .VBComponents.Remove VBC
Next VBC
End With
End Sub

J'en appel aux pros pour que lon m'explique où placer ces codes et de quelle
façon doit on compléter les arguments.

NB : est il possible d'autosupprimer un module avec ce dernier code ?

Merci d'avance à tous

2 réponses

Avatar
michdenis
Bonjour Rejete,

Je te propose la procédure suivante : Elle est valide
pour tous les types de modules qu'un projet VBA
peut contenir.

Les userform, module standard, module de classe, la
procédure les supprime.

Pour le code contenu dans les modules feuilles et dans le
ThisWorkbook, elle fait disparaître tout le code.


Pour appeler la procédure principale, tu exécutes
la procédure Test.
'----------------------------
Sub Test()

'ThisWorkbook = le classeur en cours ( actif)
'Si c'est un autre classeur ouvert, tu écris :
SupprimeCode Workbooks("Classeur.xls"), "userform1"
'userform1 -> est le nom du module ou du formulaire à supprimer

SupprimeCode ThisWorkbook, "userform1"

End Sub

'----------------------------
Sub SupprimeCode(Wk As Workbook, Module As String)

Dim VBComps As Object
Set VBComps = Wk.VBProject.VBComponents
With VBComps(Module)
Select Case .Type
Case 100
With .CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComps(Module)
End Select
End With

End Sub
'----------------------------


Salutations!




"Rejete" a écrit dans le message de news:
Bonjour à tous,

je souhaite supprimer un userform et un module par du code. Pour ce faire,
j'ai trouvé ces codes, mais je ne parviens pas à les faire fonctionner :

- pour les userforms

Sub EffaceUserForm(MonUserForm As String)
ActiveWorkbook.VBProject.VBComponents.Remove
ActiveWorkbook.VBProject.VBComponents(MonUserForm)
End Sub

- pour les modules

Sub SuppModule(nModule As String)
Dim VBC As VBComponent
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Name = nModule Then .VBComponents.Remove VBC
Next VBC
End With
End Sub

J'en appel aux pros pour que lon m'explique où placer ces codes et de quelle
façon doit on compléter les arguments.

NB : est il possible d'autosupprimer un module avec ce dernier code ?

Merci d'avance à tous
Avatar
Rejete
Merci infiniment !
ça fonctionne nickel.


"michdenis" a écrit dans le message de news:

Bonjour Rejete,

Je te propose la procédure suivante : Elle est valide
pour tous les types de modules qu'un projet VBA
peut contenir.

Les userform, module standard, module de classe, la
procédure les supprime.

Pour le code contenu dans les modules feuilles et dans le
ThisWorkbook, elle fait disparaître tout le code.


Pour appeler la procédure principale, tu exécutes
la procédure Test.
'----------------------------
Sub Test()

'ThisWorkbook = le classeur en cours ( actif)
'Si c'est un autre classeur ouvert, tu écris :
SupprimeCode Workbooks("Classeur.xls"), "userform1"
'userform1 -> est le nom du module ou du formulaire à supprimer

SupprimeCode ThisWorkbook, "userform1"

End Sub

'----------------------------
Sub SupprimeCode(Wk As Workbook, Module As String)

Dim VBComps As Object
Set VBComps = Wk.VBProject.VBComponents
With VBComps(Module)
Select Case .Type
Case 100
With .CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComps(Module)
End Select
End With

End Sub
'----------------------------


Salutations!




"Rejete" a écrit dans le message de news:

Bonjour à tous,

je souhaite supprimer un userform et un module par du code. Pour ce faire,
j'ai trouvé ces codes, mais je ne parviens pas à les faire fonctionner :

- pour les userforms

Sub EffaceUserForm(MonUserForm As String)
ActiveWorkbook.VBProject.VBComponents.Remove
ActiveWorkbook.VBProject.VBComponents(MonUserForm)
End Sub

- pour les modules

Sub SuppModule(nModule As String)
Dim VBC As VBComponent
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Name = nModule Then .VBComponents.Remove VBC
Next VBC
End With
End Sub

J'en appel aux pros pour que lon m'explique où placer ces codes et de
quelle
façon doit on compléter les arguments.

NB : est il possible d'autosupprimer un module avec ce dernier code ?

Merci d'avance à tous