Refus de fermeture (workbooks.close)
Résolu
borntobealive
Messages postés
138
Date d'inscription
Statut
Membre
Dernière intervention
-
baladur13 Messages postés 47799 Date d'inscription Statut Modérateur Dernière intervention -
baladur13 Messages postés 47799 Date d'inscription Statut Modérateur Dernière intervention -
slt,
Probleme original pour moi puisque excel ne me balance aucun message d'erreur... il se contente de planter et de quitter.
Situation : je creer des fichier qui sont des comptes mensuels à partir d'un fichier
La suppression marche du tonerre, l'ajout aussi mais quand je veux modifier un module excel ne parvient pas à executer
quelqu'un à une idée ?
d'avance merci
(le code pour les acharnés)
Probleme original pour moi puisque excel ne me balance aucun message d'erreur... il se contente de planter et de quitter.
Situation : je creer des fichier qui sont des comptes mensuels à partir d'un fichier
Template.xlsm, quand je voulais faire une modification des macro contenu dans ce fichier Template je devais aussi le modifier dans chacun de mes fichiers... sauf que maintenant ils sont trops nombreux pour que je le fasse à la main du coup j'ai écris un petit bout de code qui fait des mises à jour.
La suppression marche du tonerre, l'ajout aussi mais quand je veux modifier un module excel ne parvient pas à executer
dec.wk_ComptaMensuel.close(oups). il bloque sur la ligne jusqu'à l'erreur
quelqu'un à une idée ?
d'avance merci
(le code pour les acharnés)
Sub MAJ() If ThisWorkbook.name <> "Template.xlsm" Then Exit Sub Declaration.RAZ_comptaGen Dim cel As Range Dim module As String Dim nom As String Dim faire As String 'donner le nom du module modifier module = "Action" ' que faire ? ' 1 pour ajouter un nouveau module '2 pour supprimer un module '3 pour modifier un module existant faire = 3 For Each cel In Dec.Tab_listeCompte.ListColumns("relevés mensuels").DataBodyRange nom = Month(cel.Value) & "_" & Year(cel.Value) & ".xlsm" cel.Offset(0, -1).Value = "en cours" Application.Workbooks.Open Filename:=Dec.chemin & Application.PathSeparator & nom Declaration.RAZ_ComptaMensuel (Replace(nom, ".xlsm", "")) Select Case faire Case Is = 1 Call AjouterModule(module) Case Is = 2 Call RetirerModule(module) Case Is = 3 Call ModifierModule(module) End Select Application.DisplayAlerts = False Dec.Wk_ComptaMensuel.Save Dec.Wk_ComptaMensuel.Close Next cel End Sub Sub AjouterModule(module As String) Dim S As String With Dec.Wk_ComptaMensuel.VBProject.VBComponents.Add(vbext_ct_StdModule) .name = module End With With ThisWorkbook.VBProject.VBComponents(module).CodeModule S = .Lines(1, .CountOfLines) End With With Dec.Wk_ComptaMensuel.VBProject.VBComponents(module).CodeModule .AddFromString S End With End Sub Sub RetirerModule(module As String) With Dec.Wk_ComptaMensuel.VBProject On Error GoTo fin .VBComponents.Remove .VBComponents(module) End With fin: End Sub Sub ModifierModule(module As String) Dim S As String Stop With ThisWorkbook.VBProject.VBComponents(module).CodeModule S = .Lines(1, .CountOfLines) End With With Dec.Wk_ComptaMensuel.VBProject.VBComponents(module).CodeModule .DeleteLines 1, .CountOfLines End With With Dec.Wk_ComptaMensuel.VBProject.VBComponents(module).CodeModule .AddFromString S End With End Sub
A voir également:
- Refus de fermeture (workbooks.close)
- Sytadin fermeture - Télécharger - Transports & Cartes
- Forcer fermeture application windows - Guide
- Frais de fermeture compte paypal - Guide
- Annuler fermeture onglet chrome - Guide
- Fruitz fermeture - Accueil - Applications & Logiciels
2 réponses
news sur ma demande :
j'ai enlever le application.displayAlert = false , c'était pas lui qui me cachait une option.
J'ai essayer avec un module vide et les 3 actions (ajouter, modifier, retirer) ont parfaitement fonctionner. Je pense que le fait de toucher à un module important de mon classeur ne l'aide pas. je vais creuser dans cette direction.
j'ai enlever le application.displayAlert = false , c'était pas lui qui me cachait une option.
J'ai essayer avec un module vide et les 3 actions (ajouter, modifier, retirer) ont parfaitement fonctionner. Je pense que le fait de toucher à un module important de mon classeur ne l'aide pas. je vais creuser dans cette direction.
Trouvé :
le problème c'est que j'agissait sur des module directement reliés à ThisWorkbook qui contenanait une ribambelle d'évènement.
Je me suis permis de rajouter des petits
Je reste ouvert à toute explication (Ca marche mais je sais toujours pas pourquoi ça ne marchais pas )
Merci de m'avoir regarder faire mon monologue ;-)
(mon nouveau code pour les acharnés)
le problème c'est que j'agissait sur des module directement reliés à ThisWorkbook qui contenanait une ribambelle d'évènement.
Je me suis permis de rajouter des petits
application.enableEvent = falseet paf Ca a fait des chocapic s
Je reste ouvert à toute explication (Ca marche mais je sais toujours pas pourquoi ça ne marchais pas )
Merci de m'avoir regarder faire mon monologue ;-)
(mon nouveau code pour les acharnés)
Sub MAJ() If ThisWorkbook.name <> "Template.xlsm" Then Exit Sub Declaration.RAZ_comptaGen Dim cel As Range Dim module As String Dim nom As String Dim faire As String 'donner le nom du module modifier module = "ThisWorkbook" ' que faire ? ' 1 pour ajouter un nouveau module '2 pour supprimer un module '3 pour modifier un module existant faire = 3 For Each cel In Dec.Tab_listeCompte.ListColumns("relevés mensuels").DataBodyRange nom = Month(cel.Value) & "_" & Year(cel.Value) & ".xlsm" With cel.Offset(0, -1) .Value = "en cours" .Interior.ColorIndex = 4 End With Application.EnableEvents = False Application.Workbooks.Open Filename:=Dec.chemin & Application.PathSeparator & nom Declaration.RAZ_ComptaMensuel (Replace(nom, ".xlsm", "")) 'stop Select Case faire Case Is = 1 Call AjouterModule(module) Case Is = 2 Call RetirerModule(module) Case Is = 3 Call ModifierModule(module) End Select Application.DisplayAlerts = False Dec.Wk_ComptaMensuel.Save 'Stop Dec.Wk_ComptaMensuel.Close With cel.Offset(0, -1) .Value = "" .Interior.ColorIndex = 4 End With Application.EnableEvents = True Next cel End Sub Sub AjouterModule(module As String) Dim S As String With Dec.Wk_ComptaMensuel.VBProject.VBComponents.Add(vbext_ct_StdModule) .name = module End With With ThisWorkbook.VBProject.VBComponents.Item(module).CodeModule S = .Lines(1, .CountOfLines) End With With Dec.Wk_ComptaMensuel.VBProject.VBComponents.Item(module).CodeModule .AddFromString S End With End Sub Sub RetirerModule(module As String) With Dec.Wk_ComptaMensuel.VBProject On Error GoTo fin .VBComponents.Remove .VBComponents.Item(module) End With fin: End Sub Sub ModifierModule(module As String) Dim S As String With ThisWorkbook.VBProject.VBComponents.Item(module).CodeModule If .CountOfLines = 0 Then Exit Sub S = .Lines(1, .CountOfLines) End With With Dec.Wk_ComptaMensuel.VBProject.VBComponents.Item(module).CodeModule .DeleteLines 1, .CountOfLines End With With Dec.Wk_ComptaMensuel.VBProject.VBComponents.Item(module).CodeModule .AddFromString S End With End Sub Sub instalation() If ThisWorkbook.name <> "Template.xlsm" Then Exit Sub Declaration.RAZ_comptaGen Dim cel As Range Dim module As String Dim nom As String Dim vbmod As VBComponent For Each cel In Dec.Tab_listeCompte.ListColumns("relevés mensuels").DataBodyRange nom = Month(cel.Value) & "_" & Year(cel.Value) & ".xlsm" With cel.Offset(0, -1) .Value = "en cours" .Interior.ColorIndex = 4 End With Application.EnableEvents = False Application.Workbooks.Open Filename:=Dec.chemin & Application.PathSeparator & nom Call Declaration.RAZ_ComptaMensuel(Replace(nom, ".xlsm", "")) For Each vbmod In Dec.Wk_ComptaMensuel.VBProject.VBComponents module = vbmod.name Call ModifierModule(module) Next vbmod Application.DisplayAlerts = False Dec.Wk_ComptaMensuel.Save With cel.Offset(0, -1) .Value = "" .Interior.ColorIndex = 4 End With Dec.Wk_ComptaMensuel.Close Application.EnableEvents = True Next cel End Sub
Bonjour
A toutes fins utiles ==> https://www.commentcamarche.net/infos/25917-marquer-un-fil-de-discussion-comme-etant-resolu/
A toutes fins utiles ==> https://www.commentcamarche.net/infos/25917-marquer-un-fil-de-discussion-comme-etant-resolu/