Bonjour à tous,

Dans l'application que je suis occupé à développer, l'utilisateur doit sans arrêt masquer et afficher des lignes ou des colonnes via une procédure VBA.
Je dois maintenir la protection de la feuille de travail pour éviter qu'il ne modifie son contenu et sa présentation (notamment le format des lignes et colonnes).
Je me suis aperçu que déclencher les méthodes "Unprotect" et "Protect" avant et après chaque affichage ou masquage de lignes ou colonnes ralenti de manière sensible l'exécution du code.

J'ai découvert dans l'aide VBA la macro ci-dessous qui peut autoriser seulement le masquage ou l'affichage des colonnes tout en maintenant les autres protections données par la méthode "Protect" .

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Sub ProtectionOptions()
    ActiveSheet.Unprotect
   ' Allow columns to be formatted on a protected worksheet.
    If ActiveSheet.Protection.AllowFormattingColumns = False Then  ActiveSheet.Protect AllowFormattingColumns:=True 
    MsgBox "Columns can be formatted on this protected worksheet."
End Sub
Il me semble que Microsoft a écrit là une erreur puisque la macro n'a pas de sens si elle commence par l'instruction "Unprotect"

Sans cet instruction, la méthode permet bien la manipulation des colonnes mais non des ligne, bien entendu.

Ce qui est bizarre c'est que l'instruction AllowFormattingRows = False supprime l'autorisation de manipuler les colonnes !
Ce n'est pas dérangeant, au contraire, cela permet après une série de dérogations d'annuler simplement la dernière.
Sauf erreur, celle-ci pourrait être : ActiveSheet.Protect AllowFormattingRows:=FalseQuelqu'un peut-il me confirmer cela ?

D'avance, merci