none
Module VB en double créé une erreur de compilation "nom ambigu" lors d'une suppression/import pour mise à jour RRS feed

  • Question

  • Bonjour,

    Merci à tous ce qui liront ce message.

    Je rencontre le problème suivant :
    Un fichier Excel possède une dizaine de modules VB.
    Une procédure supprime les modules existants et en charge d'autres mis à jour.
    Cela est fait par les méthodes :
    ThisWorkbook.VBProject.VBComponents.Remove "Nom_du_module" 'supprime l'ancien module
    Puis
    ThisWorkbook.VBProject.VBComponents.Import "Nom_du_fichier" 'Import le module mis à jour

    Le problème : certaines fois, une erreur de compilation : "Nom ambigu détecté" apparait. En cherchant, j'ai remarqué que l'ancien module n'était pas supprimé avant l'import du nouveau. Et c'est la présence des 2 modules en même temps avec une même déclaration de "Enum" qui pose problème.

    J'en conclus que le problème vient du fait : l’exécution du Remove est effective après l'import (malgré le fait que l'instruction remove soit avant l'instruction l'import.)

    De plus, la procédure de "mise à jour" est lancé à chaque ouverture de fichier.
    J'ai remarqué également que cela se produisait à chaque ouverture de fichier si le fichier n'était pas enregistré entre temps. S'il était enregistré au moins une fois, le problème disparait puis réapparait plusieurs enregistrement plus tard.

    Quelqu'un aurait une solution ?

    Pabisiak martin

    • Type modifié Aurel Bera mercredi 13 novembre 2013 09:28 Discussion
    • Type modifié Aurel Bera jeudi 14 novembre 2013 10:56 question
    lundi 4 novembre 2013 13:08

Réponses

  • Bonjour,

    Après de nombreux tests, voici la solution :
    Entre la suppression et l'import des modules, j'ai rajouté le code suivant
    While ExisteMod
    DoEvents
    Application.Wait TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
    Wend
    Avec ExisteMod une fonction renvoyant True si le module existe encore.

    Merci à tous ceux qui ont participé!

    Pabisiak martin

    • Marqué comme réponse Aurel Bera jeudi 14 novembre 2013 10:56
    mercredi 13 novembre 2013 11:22

Toutes les réponses