Import module VBA

treza88

XLDnaute Occasionnel
Bonjour a tous,

j'utilise le code si dessous pour remplacer deux modules dans certains de mes fichiers pour faire une mise ajour, mais le soucis c'est que quand j'importe le module1 il est renommé en module11 et le module4 en module41.
Pourtant je supprime bien le module1 et module4 avant l'importation, alors pourquoi me le renomme t il ainsi?

VB:
Sub ImportModule_1_4()
    Dim Fichier As String, Repertoire As String
    Dim Wb As Workbook
    Dim i As Byte

    Application.ScreenUpdating = False

    With ActiveWorkbook.VBProject.VBComponents
        .Remove .Item("Module1")
        .Remove .Item("Module4")
    End With


        Set Wb = ActiveWorkbook
    
        '----------------------------------
        'La procédure ne gère pas les erreurs si le nom des modules existe déja
        'dans les classeurs.
    
                Wb.VBProject.VBComponents.Import "C:\mod\Module 1_4\Module1.bas"
                Wb.VBProject.VBComponents.Import "C:\mod\Module 1_4\Module4.bas"
        

    Application.ScreenUpdating = True

    MsgBox "Opération terminée."
End Sub

Si quelqu'un de vous a la réponse, merci d'avance
 
Dernière édition:

treza88

XLDnaute Occasionnel
Bonjour et merci de ta réponse Staple1600
Oui tu as raison sur un classeur vierge je n'ai pas de problème.
par contre sur mon classeur ou j'ai mes macro et mes données le phénomène ce produit.
Pourrait tu avoir une piste de réponse, je sais que c'est pas évident quant on ne peut pas voir le problème.
 

Staple1600

XLDnaute Barbatruc
Re

Suggestions
1) Renomme tes modules pour voir
exemple: Module1 en M_odule1 etc..
•Testes ta macro d'import

2) A partir d'un classeur vierge, reconstruit ton classeur
Ensuite Insertion/Module
(à faire 4 fois)
Puis copie/colle manuellement le contenu VBA de ton classeur actuel dans les modules que tu viens d'insérer dans le nouveau classeur.
•Testes ta macro d'import​

Cela change la donne? Le phénomène se produit toujours?
 

Theze

XLDnaute Occasionnel
Bonjour,

Et de cette façon ? En enregistrant le classeur après suppression :
Code:
Sub ImportModule_1_4()
    Dim Fichier As String, Repertoire As String
    Dim Wb As Workbook
    Dim i As Byte

    Application.ScreenUpdating = False

    Set Wb = ActiveWorkbook
   
    With ActiveWorkbook.VBProject.VBComponents
        .Remove .Item("Module1")
        .Remove .Item("Module4")
    End With

    Wb.Save
    DoEvents
    '----------------------------------
    'La procédure ne gère pas les erreurs si le nom des modules existe déja
    'dans les classeurs.
   
    Wb.VBProject.VBComponents.Import "C:\mod\Module 1_4\Module1.bas"
    Wb.VBProject.VBComponents.Import "C:\mod\Module 1_4\Module4.bas"


    Application.ScreenUpdating = True

    MsgBox "Opération terminée."
   
End Sub
 

treza88

XLDnaute Occasionnel
Bonsoir,
Merci Staple1600 pour ta proposition, mais comme c'est juste pour faire une mise a jour sur des classeurs qui vont devenir obsolète dans quelques mois, cela me fera trop de travail sur chaque classeur qui ne seront plus utilisé par la suite.
Merci a toi aussi Theze, mais l'enregistrement après suppression ne change rien j'ai toujours le problème qui se produit.
Ce n'est pas catastrophique mais j'aurais voulu comprendre pourquoi.
 

Discussions similaires

Réponses
2
Affichages
113

Statistiques des forums

Discussions
312 166
Messages
2 085 889
Membres
103 019
dernier inscrit
Eliot_1