Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Effacement de module semi-reussi

  • Initiateur de la discussion Initiateur de la discussion linked
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

linked

Guest
Bonjour,

J'ai essayé par tout les moyens et je ne comprend vraiment pas. Voici le code que j'utilise:

Code:
With ActiveWorkbook.VBProject.VBComponents
.Remove .Item("equipement_magasin")
End With

En fait je part d'un fichier qui doit faire une mise à jour de beaucoup d'autres fichiers. Arrivé à ce bout de code je ne sait pas pourquoi mais il ne veut pas l'effacer ce module bien precis.
Et ensuite plus loin dans mon code je lui dit d'importer le nouveau module mais comme il n'a pas effacé l'ancien il me l'apel equipement_magasin1...

Je fait donc un pas a pas pour deboguer et je passe le code ci dessus, le module ne disparait pas alors que si j'essaye avec equipement_magasin1 (le doublon crée du premier essai) cela disparait bien.
Je refait un pas a pas et repasse sur le code ci dessus et apres je clique sur le carré pour arreter la macro et ohhh la fenetre se rafraichit et le module disparait !

Donc le code marche bien mais il y a un probleme de rafraichissement on dirait, excel ne voit pas que le module a été effacé tant que je reste dans ma macro ce qui n'est pas pratique pour une mise a jour automatique d'une suite de fichiers...

Manquerait il juste une ligne genre update quelque chose pour bien prendre en compte ? Et pourquoi avec les doublons crée cela marche t'il ????

J'y comprend vraiment plus rien....
 
Re : Effacement de module semi-reussi

J'ai essayé en mettant Application.ScreenUpdating = True avant et apres le mocreau de code qui doit effacer le module mais ca ne marche pas.
Par contre j'ai remarque que ca le fait avec tout mes modules sauf ceux que vba ajoute lui meme en doublon....

edit: cela à t'il un rapport avec le fait que j'essaye d'effacer un module d'un autre classeur ?

edit2: j'ai mis le code d'effacement dans le classeur meme et j'ai le meme resultat... je vois le module disparaitre uniquement quand le code arrive à sa fin....

edit3: j'ai essayé de supprimer un module de la meme façon mais cette fois ci dans un classeur vierge qui n'a rien du tout a voir avec les fichiers crées à partir du modele et cela fonctionne. Ca viendrait donc de quelque chose propre à tout les fichiers crées avec ce modele, et avec le modele lui meme aussi, mais quoi ???
 
Dernière modification par un modérateur:
Re : Effacement de module semi-reussi

Je pense avoir trouvé la source du probleme mais pas vraiment de solution. Pensant que mon modele etait buggé j'ai copier toutes les feuilles dans un nouveau classeur et importé toutes les macros.
Deja la il a perdu 100ko, ensuite j'ai refait un test d'effacement de module mais toujours le meme probleme. J'ai donc regardé de plus pres mes modules et ils commencent tous par:

Option Explicit
Public .... et ainsi de suite

J'ai juste supprimé "Option Explicit", enregistré, fermé puis reouvert le fichier en question. Et la du coup la macro a fonctionné !!! Le module s'est bien supprimé comme normal sans que je soit obligé d'arreter la macro pour voir le resultat.

Le probleme c'est comment faire pour automatiser la mise a jour de ce module sur plusieur centaines de fichiers vu qu'ils ont tous "Option Explicit" en debut de module ?
 
Re : Effacement de module semi-reussi

Bonjour Linked

as tu essayé comme ceci :

Code:
With ActiveWorkbook.VBProject.VBComponents
.Remove ActiveWorkbook.VBProject.VBComponents("equipement_magasin")
End With

en sortant la 2ème partie du bloc with.... je ne peux t'en dire plus ne pouvant reproduire le cas...

bonne journée
@+
 
Re : Effacement de module semi-reussi

Oui j'avais essayé comme ça aussi, j'ai tout essayé... Et la j'ai enfin trouvé la solution, pas vraiment tres elegante mais ca marche bien. Voici la solution pour ceux qui serait dans le meme cas que moi:

Code:
If Nom_macros(I) = "equipement_magasin.bas" Then
  For Each vbcomp In ActiveWorkbook.VBProject.VBComponents
    If vbcomp.Name = "equipement_magasin" Then
         With vbcomp.CodeModule
         .DeleteLines 1, 1
         End With
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Application.EnableEvents = False
    Workbooks.Open (F)
    Application.EnableEvents = True
        With ActiveWorkbook.VBProject.VBComponents
        .Remove .Item("equipement_magasin")
        .Remove .Item("equipement_magasin1")
        End With
    Exit For
    End If
  Next vbcomp

End If

Ce bout de code me sert à supprimer la 1ere ligne avec "Option explicite", puis je sauvegarde, ferme le classeur, le reouvre pour ensuite supprimer le module.
Ensuite avec un autre bout de code tout a fait standard, j'ajoute mon module mis à jour 🙂

Sacré gymnastique hein ! Mais ça fonctionne c'est l'essentiel 😎
 
Re : Effacement de module semi-reussi

Bonjour à tous,

ma question est : pourquoi mettre un module à jour, ou l'effacer ...?
J'ai déja fait des milliers de lignes de code en VBA, jamais eu besoin de faire ce genre de manip :-(
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Réponses
7
Affichages
511
Réponses
32
Affichages
1 K
T
  • Résolu(e)
Microsoft 365 pb effacement macro
Réponses
8
Affichages
795
Themax
T
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…