Bonjour,
Avec un classeur excel, j'ouvre un autre classeur, je déprotége son
code et je dois supprimer un ensemble de modules préétablis dans
celui-ci avant de les ré-importer (gestion en fait des mises à jour).
Cependant, certains modules du classeur à mettre à jour ont l'air
"vérrouillés" car il faut que j'arrête l'execution de la macro de mise
à jour pour visualiser la suppression effective de ces modules.... je
ne comprends pas le verrouillage d'excel car la suppression manuelle
marche trés bien..... j'ai bien essayé de m'appuyer sur DoEvents mais
cela ne donne rien....
exemple de mon code :
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB
vient de là, suppression effective qu'à l'arrêt de la macro
DoEvents
'on exporte le nouveau module
ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export
tmpModule & nomModule
'on importe le nouveau module dans le classeur à mettre à jour
wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name =
strNomModuleUpdate
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pascal Engelmajer
Salut, pour faire la même chose je ne détruis pas le module de code (Remove). je supprime les lignes. Puis je les ré-écris à partir du fichier texte .bas) un piste vite fait Dim monModule As codeModule Dim nomModule As String Dim nbLignes As Long Dim Wb As Workbook nomModule = "xxxxx" 'module destination Set Wb = Workbooks("wbPAQ") Set monModule = Wb.VBProject.VBComponents(nomModule).codeModule nbLignes = monModule.CountOfLines '.../... With monModule .DeleteLines 1, nbLignes .AddFromFile tmpModule & nomModule & ".bas" ' ne pas oublier la ligne CodePane.Window ... origine possible ton pb ' >le PB vient de là, suppression effective qu'à l'arrêt de la macro .CodePane.Window.Close End With
End With '.../...
-- Amicalement. Pascal "il n'y a pas de vent favorable pour celui qui ne sait pas ou il va." Sénèque. http://www.ilyapa.net/excel "romain" a écrit dans le message de news:
Bonjour,
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB vient de là, suppression effective qu'à l'arrêt de la macro DoEvents 'on exporte le nouveau module ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export tmpModule & nomModule 'on importe le nouveau module dans le classeur à mettre à jour wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name > strNomModuleUpdate
ou WbPAQ représente le classeur à mettre à jour.
Je désespère.... Merci de votre aide. Romain
Salut,
pour faire la même chose je ne détruis pas le module de code (Remove). je
supprime les lignes. Puis je les ré-écris à partir du fichier texte .bas)
un piste vite fait
Dim monModule As codeModule
Dim nomModule As String
Dim nbLignes As Long
Dim Wb As Workbook
nomModule = "xxxxx" 'module destination
Set Wb = Workbooks("wbPAQ")
Set monModule = Wb.VBProject.VBComponents(nomModule).codeModule
nbLignes = monModule.CountOfLines
'.../...
With monModule
.DeleteLines 1, nbLignes
.AddFromFile tmpModule & nomModule & ".bas"
' ne pas oublier la ligne CodePane.Window ... origine possible
ton pb
' >le PB vient de là, suppression effective qu'à l'arrêt de la
macro
.CodePane.Window.Close
End With
End With
'.../...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"romain" <romain@lesbautrait.com> a écrit dans le message de news:
faf3269b.0404060044.c83a7e4@posting.google.com...
Bonjour,
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB
vient de là, suppression effective qu'à l'arrêt de la macro
DoEvents
'on exporte le nouveau module
ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export
tmpModule & nomModule
'on importe le nouveau module dans le classeur à mettre à jour
wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name > strNomModuleUpdate
Salut, pour faire la même chose je ne détruis pas le module de code (Remove). je supprime les lignes. Puis je les ré-écris à partir du fichier texte .bas) un piste vite fait Dim monModule As codeModule Dim nomModule As String Dim nbLignes As Long Dim Wb As Workbook nomModule = "xxxxx" 'module destination Set Wb = Workbooks("wbPAQ") Set monModule = Wb.VBProject.VBComponents(nomModule).codeModule nbLignes = monModule.CountOfLines '.../... With monModule .DeleteLines 1, nbLignes .AddFromFile tmpModule & nomModule & ".bas" ' ne pas oublier la ligne CodePane.Window ... origine possible ton pb ' >le PB vient de là, suppression effective qu'à l'arrêt de la macro .CodePane.Window.Close End With
End With '.../...
-- Amicalement. Pascal "il n'y a pas de vent favorable pour celui qui ne sait pas ou il va." Sénèque. http://www.ilyapa.net/excel "romain" a écrit dans le message de news:
Bonjour,
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB vient de là, suppression effective qu'à l'arrêt de la macro DoEvents 'on exporte le nouveau module ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export tmpModule & nomModule 'on importe le nouveau module dans le classeur à mettre à jour wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name > strNomModuleUpdate
ou WbPAQ représente le classeur à mettre à jour.
Je désespère.... Merci de votre aide. Romain
Frédéric Sigonneau
Bonjour,
Il peut être nécessaire d'insister pour que l'exécution du code soit réellement prise en compte. Dans ce cas, un seul DoEvents ne suffit pas. Je suis parfois obligé, dans le même genre de situation, d'inclure des petites boucles comme celles-ci au lieu d'un DoEvents isolé :
Do: i=i+1: DoEvents: Loop While i<5000
Si tu déprotèges ton projet avec du code avant de supprimer le module, une petite moulinette de DoEvents juste après le code de déprotection (et avant le code de suppression) pourrait aussi être profitable (avec Excel 2000 notamment).
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
romain a écrit:
Bonjour, Avec un classeur excel, j'ouvre un autre classeur, je déprotége son code et je dois supprimer un ensemble de modules préétablis dans celui-ci avant de les ré-importer (gestion en fait des mises à jour). Cependant, certains modules du classeur à mettre à jour ont l'air "vérrouillés" car il faut que j'arrête l'execution de la macro de mise à jour pour visualiser la suppression effective de ces modules.... je ne comprends pas le verrouillage d'excel car la suppression manuelle marche trés bien..... j'ai bien essayé de m'appuyer sur DoEvents mais cela ne donne rien....
exemple de mon code :
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB vient de là, suppression effective qu'à l'arrêt de la macro DoEvents 'on exporte le nouveau module ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export tmpModule & nomModule 'on importe le nouveau module dans le classeur à mettre à jour wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name > strNomModuleUpdate
ou WbPAQ représente le classeur à mettre à jour.
Je désespère.... Merci de votre aide. Romain
Bonjour,
Il peut être nécessaire d'insister pour que l'exécution du code soit réellement
prise en compte. Dans ce cas, un seul DoEvents ne suffit pas. Je suis parfois
obligé, dans le même genre de situation, d'inclure des petites boucles comme
celles-ci au lieu d'un DoEvents isolé :
Do: i=i+1: DoEvents: Loop While i<5000
Si tu déprotèges ton projet avec du code avant de supprimer le module, une
petite moulinette de DoEvents juste après le code de déprotection (et avant le
code de suppression) pourrait aussi être profitable (avec Excel 2000 notamment).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
romain a écrit:
Bonjour,
Avec un classeur excel, j'ouvre un autre classeur, je déprotége son
code et je dois supprimer un ensemble de modules préétablis dans
celui-ci avant de les ré-importer (gestion en fait des mises à jour).
Cependant, certains modules du classeur à mettre à jour ont l'air
"vérrouillés" car il faut que j'arrête l'execution de la macro de mise
à jour pour visualiser la suppression effective de ces modules.... je
ne comprends pas le verrouillage d'excel car la suppression manuelle
marche trés bien..... j'ai bien essayé de m'appuyer sur DoEvents mais
cela ne donne rien....
exemple de mon code :
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB
vient de là, suppression effective qu'à l'arrêt de la macro
DoEvents
'on exporte le nouveau module
ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export
tmpModule & nomModule
'on importe le nouveau module dans le classeur à mettre à jour
wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name > strNomModuleUpdate
Il peut être nécessaire d'insister pour que l'exécution du code soit réellement prise en compte. Dans ce cas, un seul DoEvents ne suffit pas. Je suis parfois obligé, dans le même genre de situation, d'inclure des petites boucles comme celles-ci au lieu d'un DoEvents isolé :
Do: i=i+1: DoEvents: Loop While i<5000
Si tu déprotèges ton projet avec du code avant de supprimer le module, une petite moulinette de DoEvents juste après le code de déprotection (et avant le code de suppression) pourrait aussi être profitable (avec Excel 2000 notamment).
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
romain a écrit:
Bonjour, Avec un classeur excel, j'ouvre un autre classeur, je déprotége son code et je dois supprimer un ensemble de modules préétablis dans celui-ci avant de les ré-importer (gestion en fait des mises à jour). Cependant, certains modules du classeur à mettre à jour ont l'air "vérrouillés" car il faut que j'arrête l'execution de la macro de mise à jour pour visualiser la suppression effective de ces modules.... je ne comprends pas le verrouillage d'excel car la suppression manuelle marche trés bien..... j'ai bien essayé de m'appuyer sur DoEvents mais cela ne donne rien....
exemple de mon code :
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB vient de là, suppression effective qu'à l'arrêt de la macro DoEvents 'on exporte le nouveau module ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export tmpModule & nomModule 'on importe le nouveau module dans le classeur à mettre à jour wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name > strNomModuleUpdate
ou WbPAQ représente le classeur à mettre à jour.
Je désespère.... Merci de votre aide. Romain
Alain CROS
Bonjour.
Avant la ligne qui pose problème, mettre
Application.VBE.MainWindow.Visible = True puis la ligne problématique puis Application.VBE.MainWindow.Visible = False
Le fait de rendre visible l'éditeur VBE doit le rappeler à l'ordre dans la mise à jour.
Alain CROS
"romain" a écrit dans le message de news:
Bonjour, Avec un classeur excel, j'ouvre un autre classeur, je déprotége son code et je dois supprimer un ensemble de modules préétablis dans celui-ci avant de les ré-importer (gestion en fait des mises à jour). Cependant, certains modules du classeur à mettre à jour ont l'air "vérrouillés" car il faut que j'arrête l'execution de la macro de mise à jour pour visualiser la suppression effective de ces modules.... je ne comprends pas le verrouillage d'excel car la suppression manuelle marche trés bien..... j'ai bien essayé de m'appuyer sur DoEvents mais cela ne donne rien....
exemple de mon code :
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB vient de là, suppression effective qu'à l'arrêt de la macro DoEvents 'on exporte le nouveau module ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export tmpModule & nomModule 'on importe le nouveau module dans le classeur à mettre à jour wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name > strNomModuleUpdate
ou WbPAQ représente le classeur à mettre à jour.
Je désespère.... Merci de votre aide. Romain
Bonjour.
Avant la ligne qui pose problème, mettre
Application.VBE.MainWindow.Visible = True
puis la ligne problématique puis
Application.VBE.MainWindow.Visible = False
Le fait de rendre visible l'éditeur VBE doit le rappeler à l'ordre dans la mise à jour.
Alain CROS
"romain" <romain@lesbautrait.com> a écrit dans le message de news: faf3269b.0404060044.c83a7e4@posting.google.com...
Bonjour,
Avec un classeur excel, j'ouvre un autre classeur, je déprotége son
code et je dois supprimer un ensemble de modules préétablis dans
celui-ci avant de les ré-importer (gestion en fait des mises à jour).
Cependant, certains modules du classeur à mettre à jour ont l'air
"vérrouillés" car il faut que j'arrête l'execution de la macro de mise
à jour pour visualiser la suppression effective de ces modules.... je
ne comprends pas le verrouillage d'excel car la suppression manuelle
marche trés bien..... j'ai bien essayé de m'appuyer sur DoEvents mais
cela ne donne rien....
exemple de mon code :
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB
vient de là, suppression effective qu'à l'arrêt de la macro
DoEvents
'on exporte le nouveau module
ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export
tmpModule & nomModule
'on importe le nouveau module dans le classeur à mettre à jour
wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name > strNomModuleUpdate
Application.VBE.MainWindow.Visible = True puis la ligne problématique puis Application.VBE.MainWindow.Visible = False
Le fait de rendre visible l'éditeur VBE doit le rappeler à l'ordre dans la mise à jour.
Alain CROS
"romain" a écrit dans le message de news:
Bonjour, Avec un classeur excel, j'ouvre un autre classeur, je déprotége son code et je dois supprimer un ensemble de modules préétablis dans celui-ci avant de les ré-importer (gestion en fait des mises à jour). Cependant, certains modules du classeur à mettre à jour ont l'air "vérrouillés" car il faut que j'arrête l'execution de la macro de mise à jour pour visualiser la suppression effective de ces modules.... je ne comprends pas le verrouillage d'excel car la suppression manuelle marche trés bien..... j'ai bien essayé de m'appuyer sur DoEvents mais cela ne donne rien....
exemple de mon code :
wbPAQ.VBProject.VBComponents.Remove .Item(strNomModuleUpdate) : le PB vient de là, suppression effective qu'à l'arrêt de la macro DoEvents 'on exporte le nouveau module ThisWorkbook.VBProject.VBComponents(strNomModuleUpdate).Export tmpModule & nomModule 'on importe le nouveau module dans le classeur à mettre à jour wbPAQ.VBProject.VBComponents.Import(tmpModule & nomModule).Name > strNomModuleUpdate