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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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
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