SmartFAQ is developed by The SmartFactory (http://www.smartfactory.ca), a division of InBox Solutions (http://www.inboxsolutions.net)

[mDF] Comment utiliser le mDF XLcalendar sur feuille Excel protégée ?

Q&R publiée par MyDearFriend! le 24-02-2008 (5578 Lectures)

Le mDF XLcalendar permet maintenant l'insertion de dates dans une feuille de calcul protégée et sur les seules cellules non verrouillées.

Une exception toutefois : Excel 2000 ne permet pas cette nouveauté!

Pour pallier à ce problème spécifique Excel 2000, je vous propose une solution de contournement en fin de page ci-dessous.


Permettre le fonctionnement du mDF XLcalendar sur feuilles protégées

Les prérequis
sur Excel 2002 et versions supérieures
:

  • La feuille de calcul peut-être protégée avec ou sans mot de passe.

    Protection d'une feuille Excel

  • Le format prédéterminé de date ou l'ajustement automatique de largeur de colonne seront rendus possibles si vous cochez l'option de protection "Format de cellule" comme ci-dessous :

    Protection d'une feuille Excel





Excel 2000, l'exception à la règle :

Si vous tentez d'utiliser le mDF XLcalendar (ou une ancienne version mDF Calendrier) sur une feuille protégée (avec ou sans mot de passe) et sur Excel 2000, vous obtenez une Erreur d'exécution '1004' et ce, même si la cellule visée n'est pas verrouillée.

La solution consiste à protéger votre feuille de calcul par le code VBA et en utilisant l'argument UserInterfaceOnly. Votre feuille sera ainsi protégée de toute intervention des utilisateurs tout en autorisant les mises-à-jour par macro.

Attention
: ce mode de protection doit obligatoirement être appliqué à chaque ouverture du classeur. Il est donc impératif d'insérer la procédure suivante dans l'évènement Workbook_Open() de l'objet ThisWorkbook.

Dans l'objet ThisWorkbook :
Private Sub Workbook_Open()
       Sheets("Feuil1").Protect Password:="LeMotDePasse", UserInterfaceOnly:=True
End Sub

Ainsi, à chaque ouverture du classeur cette procédure :

  1. Protége automatiquement l'onglet "Feuil1" avec "LeMotDePasse"
  2. Permet au code VBA d'agir sur toutes les cellules de cette feuille protégée, tout en refusant à l'utilisateur la modification des cellules verrouillées.



Comment faire pour insérer cette procédure ?

Le classeur étant ouvert dans Excel :

  • Enlever la protection manuelle de la feuille.
  • Faire ALT + F11 pour se retrouver dans l'éditeur VBE.
  • Puis, CTRL + R pour afficher l'explorateur de projet (s'il n'est pas déjà affiché). L'explorateur de projet c'est la petite fenêtre au haut à gauche.
  • Double-cliquer sur "VBAProject(LeNomDuClasseur)" pour développer l'arborescence.
  • Double-cliquer cette fois sur l'objet ThisWorkbook et le module de code correspondant s'ouvre dans la fenêtre principale.
  • Faire un copier-coller du code ci-dessus à cet endroit (toutes les lignes de Private Sub.... à End Sub incluses)
  • Quitter ensuite l'éditeur VBA, sauvegarder et fermer le classeur.
  • A la prochaine ouverture du document, la protection spécifique sera active. Elle protègera votre feuille des actions de l'utilisateur, tout en permettant l'utilisation du mDF XLcalendar sur les cellules non verrouillées (et seulement celles-ci!)




  Imprimer la Q&R Envoyer la Q&R