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"
Partager