Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
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
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")
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
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
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
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
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) 😉
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
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD