[RÉSOLU] Enregistrement par VBA ça bug

un internaute

XLDnaute Impliqué
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
 

Pièces jointes

  • Test.xls
    23 KB · Affichages: 12

un internaute

XLDnaute Impliqué
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
 

un internaute

XLDnaute Impliqué
Ben chez moi oui et 2 potes également
Voilà

1030073
 

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 Impliqué
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
 

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

Statistiques des forums

Discussions
311 735
Messages
2 082 023
Membres
101 873
dernier inscrit
excellllll