OVH Cloud OVH Cloud

Suppression d'un module par VBA

1 réponse
Avatar
Sébastien
Hello.

J'ai essayé le code suivant sur un classeur tout simple et çà marche. Le but
étant de remplacer un vieux module par un nouveau. Mon problème est que je
n'arrive pas à mettre à jour un classeur plus complexe contenant des userform
avec activeX, des liens vers un classeur de macro complémentaires etc... Si
quelqu'un à une idée sur le sujet je suis preneur ?

La ligne qui ne fonctionne pas c'est la suppression du composant. L'import
marche parfaitement dans tous les cas ! (si je ne supprime pas l'ancien
module, le nouveau est bien ajouté au projet avec un nom identique et 1 au
bout)
Lorsque j'arrête la macro en débug juste après la suppression, le module
disparait du projet mais pas pendant l'exécution ! Mystère !!!

Le tout sous Office XP et windows 2000

Extrait du code :

Set v = Workbooks("Classeur.xls").VBProject.VBComponents("Module1")
If Err.Number <> 0 Then
Err.Clear
Else
'Si le module existe, on le supprime avant d'importer la mise à jour
Workbooks("Classeur.xls").VBProject.VBComponents.Remove v
End If

Workbooks("Classeur.xls").VBProject.VBComponents.Import("c:\Temp\Module1").Name = "Module1"


Grand merci à vous.

--
Sébastien.

Pour me répondre directement, remplacer nospam par s.millereux

1 réponse

Avatar
isabelle
bonjour Sébastien,

Sub SuppModule()
Dim VBC As VBComponent
With Workbooks("Classeur4.xls").VBProject
For Each VBC In .VBComponents
If VBC.Name = "Module1" Then .VBComponents.Remove VBC
Next VBC
End With
End Sub

tu dois charger la bibliothèque
'Microsoft Visual Basic for Applications Extensibility 5.3

et le fichier "Classeur4.xls" doit être enregistré pour faire le test

d'autre exemple ici,
http://www.excelabo.net/xl/macros.php#suppmacro

isabelle


Hello.

J'ai essayé le code suivant sur un classeur tout simple et çà marche. Le but
étant de remplacer un vieux module par un nouveau. Mon problème est que je
n'arrive pas à mettre à jour un classeur plus complexe contenant des userform
avec activeX, des liens vers un classeur de macro complémentaires etc... Si
quelqu'un à une idée sur le sujet je suis preneur ?

La ligne qui ne fonctionne pas c'est la suppression du composant. L'import
marche parfaitement dans tous les cas ! (si je ne supprime pas l'ancien
module, le nouveau est bien ajouté au projet avec un nom identique et 1 au
bout)
Lorsque j'arrête la macro en débug juste après la suppression, le module
disparait du projet mais pas pendant l'exécution ! Mystère !!!

Le tout sous Office XP et windows 2000

Extrait du code :

Set v = Workbooks("Classeur.xls").VBProject.VBComponents("Module1")
If Err.Number <> 0 Then
Err.Clear
Else
'Si le module existe, on le supprime avant d'importer la mise à jour
Workbooks("Classeur.xls").VBProject.VBComponents.Remove v
End If

Workbooks("Classeur.xls").VBProject.VBComponents.Import("c:TempModule1").Name = "Module1"

Grand merci à vous.

--
Sébastien.

Pour me répondre directement, remplacer nospam par s.millereux