[RÉSOLU] Enregistrement par VBA ça bug

un internaute

XLDnaute Occasionnel
Bonsoir le forum
Dans le fichier joint (exemple) si on enregistre par la feuille ça fonctionne
Si on enregistre par le VBA ça bug (voir message)
Macro dans ThisWorkbook
Merci pour vos éventuels retours
 

Fichiers joints

un internaute

XLDnaute Occasionnel
Bonsoir Staple1600,
Si j'enregistre par la "biscotte" du VBA message suivant
Erreur d'exécution 1004
Erreur définie par l'application ou par l'objet
Bug sur cette ligne
VB:
 For Each Cel In .Range("E9:E13,E15:E28,E37:E41,E43:E56,E65:E69,E71:E84,E93:E97,E99:E112")
Merci à toi
 

Staple1600

XLDnaute Barbatruc
Re

OK, je l'ai
L'erreur survient quand dans VBE, on clique sur Enregistrer
Mais pourquoi le faire, puisque la macro Sub Workbook_BeforeSave s’exécute à la fermeture du classeur?

Si tu veux tester et/ou modifier ta macro (sans message d'erreur), testes-là dans un module standard
Exemple, dans le Module1, mettre ainsi ta macro
VB:
Sub Test_Macro()
Dim Cel As Range
  With ActiveSheet
      For Each Cel In .Range("E9:E13,E15:E28,E37:E41,E43:E56,E65:E69,E71:E84,E93:E97,E99:E112")
          If Cel = "" Then Cel.EntireRow.Hidden = True
      Next Cel
  End With
End Sub
 

un internaute

XLDnaute Occasionnel
Comme tu dis ça fonctionne mais quelques fois j'enregistre par le VBA comme très souvent par erreur et ce message
Sur le nombre de fichiers (un paquet) c'est une première et j’aimerais bien trouver d'où ça vient
Merci à toi
Bonne fin de soirée
 

Staple1600

XLDnaute Barbatruc
Re

En attendant le pourquoi, tu peux toujours faire sommairement ainsi.
(mais il faudrait peaufiner la chose)
Avec cette modification, plus de message d'erreur quand tu enregistres dans VBE ;)
VB:
Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Cel As Range
On Error Resume Next
  With ActiveSheet
      For Each Cel In .Range("E9:E13,E15:E28,E37:E41,E43:E56,E65:E69,E71:E84,E93:E97,E99:E112")
          If Cel = "" Then Cel.EntireRow.Hidden = True
      Next Cel
  End With
End Sub
 

un internaute

XLDnaute Occasionnel
Re
Super
Oui si tu peux peaufiner le truc mais l'astuce est par là
Mais ne passe pas trop de temps quand même
Je ne met pas RÉSOLU volontairement
Bonne fin de WE
Cordialement
 

Staple1600

XLDnaute Barbatruc
Re,

Je ne compte pas peaufiner la chose car comme dit précédemment, il suffit de ne pas enregistrer dans VBE mais dans Excel. ;)
Et c'est très rapide ;)
ALT+X puis CTRL+S

PS: En plus, ce soir, j'ai télé :
La Chute (sur Arte)
;)
 

un internaute

XLDnaute Occasionnel
Re
C'est tout simplement pour éviter le débogage car il faut ABSOLUMENT passer par la feuille pour faire Afficher / Masquer les lignes
Bonne semaine à toi
Cordialement
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Je ne vois pas le rapport avec VBE
Les lignes sont masquées à la fermeture par la macro événementielle Workbook_BeforeSave

Et pour afficher/masquer, il n'est pas absolument nécessaire de passer par la feuille
Une petit macro sait trés bien le faire
VB:
Sub AfficheMasque()
Columns.EntireColumn.Hidden = Not Columns.EntireColumn.Hidden
Rows.EntireRow.Hidden = Not Rows.EntireRow.Hidden
End Sub
 

Discussions similaires


Haut Bas