Refus de fermeture (workbooks.close)
Résolu
borntobealive
Messages postés
167
Statut
Membre
-
baladur13 Messages postés 50040 Statut Modérateur -
baladur13 Messages postés 50040 Statut Modérateur -
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/