Bonjour à tous,

Après plusieures recherches infructueuses je me lance à poser ma question.

J'ai actuellement un fichier excel contant des modules et des userform nommé "décompte" qu'une 20 aines d'utilisateurs possèdent.

j'ai crée un nouveau classeur pour injecter des mises à jour dans le fichier décompte qui sera envoyé a chaque collaborateur qui contiens les nouveaux userform et nouveaux modules.

Lors de la mise à jour les deux classeurs sont ouverts, le classeur de mise à jour est "thisworkbook" et le classeur à mettre à jour est "Activeworkbook".

J'arrive à exporter les userform sur le bureau pour préparer à l'importation mais lorsque je tente la procédure un message d'erreur arrive

erreur du genre "Erreur au cours du chargement .. " avec renvoi à un fichier log qui dit ceci
"Ligne 2 : Le nom userform1 de la feuille ou de la feuille MDI est déjà utilisé ; impossible de charger cette feuille."

la procédure bloque à cet endroit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Nomfich = ThisWorkbook.Path & "\" & "UserForm1.frm")
 
ActiveWorkbook.VBProject.VBComponents.import
¨


Il semblerait que l'userform du fichier à mettre à jour ne se soit pas correctement supprimé avec cette procédure:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim VBComps As Object
Set VBComps = ActiveWorkbook.VBProject.VBComponents
With VBComps("Vacances")
Select Case .Type
Case 100
With .CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComps("Vacances")
 
End Select
End With


voici mon code au total pour toute la procédure

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
Sub maj
Dim VBComps As Object
Set VBComps = ActiveWorkbook.VBProject.VBComponents
With VBComps("Vacances")
Select Case .Type
Case 100
With .CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComps("Vacances")
 
End Select
End With
 
 
ThisWorkbook.VBProject.VBComponents("Vacances").Export _
ThisWorkbook.Path & "\UserForm1.frm"
 
 
ActiveWorkbook.VBProject.VBComponents.Import ThisWorkbook.Path & "\UserForm1.frm"