verrouillage cellule avec exception.

yodec

XLDnaute Nouveau
Bonjour à tous

Tout d'abord merci à tous en cette fin d'année pour les nombreuses réponses que j'ai pu trouver ici.

Mais voilà une petite question que je n'ai pas réussi à solutionner :

j'ai un fichier que je vais partager avec mes collègues.
J'ai verrouiller la plupart des cellules, à l'exception bien sûr de celles qui doivent être renseignées.
Jusque là pas de problème.

je cherche maintenant à pouvoir laisser disponible à la sélection (pas à la modification) certaines cellules, et seulement certaines.

Dans le fichier en question, en pièce jointe, j'ai déverrouillé la seconde feuille pour plus de compréhension, la première feuille est verrouillée et je souhaiterai que soit disponible à la sélection par tous les cellules J48 et N55 par exemple.


Par avance, merci de votre aide.

A bientôt

johan D.
 

Pièces jointes

  • calculth-uw-sw_58_10-09.xls
    582.5 KB · Affichages: 61

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : verrouillage cellule avec exception.

Bonsoir yodec,

Les cellules sélectionnable sont sans doute J48 et M55 (N55 est vide).

Un essai dans le fichier joint.
Sur chaque feuille, ne pas verrouiller J48 et M55 puis protéger la feuille

Dans le module de code de ThisWorkbook, saisir le code suivant dans la procédure évènementielle Workbook_SheetChange.
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Application.EnableEvents = False
  If Not Intersect(Sh.Range("J48,M55"), Target) Is Nothing Then Application.Undo
  Application.EnableEvents = True
End Sub

Les modifications des cellules J48 ou M55 sont automatiquement annulées mais elles restent sélectionnables. La seconde feuille a été protégée avec le mot de passe vide.
 

Pièces jointes

  • calculth-uw-sw_58_10-09 v1.xls
    574.5 KB · Affichages: 39

Goosse_Clement

XLDnaute Nouveau
Re : verrouillage cellule avec exception.

Bonjour yodec,

Je pense avoir trouver une solution. Je ne sais pas si elle te conviendra.

En fait tu protèges toute ta feuille sauf les cellules que tu souhaites laisser consultables.

Ensuite, tu sélectionnes toutes les cellules consultables et tu vas dans l'onglet Données/Validation de données. Tu choisis l'option personnalisée. Dans la partie formule, tu tapes: ="azerty" ou un autre mot qui ne sera jamais utiliser par l'utilisateur.

J'espère que ca t'aidera. Bonne fin de journée et bonne année ;)
 

yodec

XLDnaute Nouveau
Re : verrouillage cellule avec exception.

Bonsoir,

merci pour cette réponse rapide. c'est exactement ce que je veux.
Par contre, je suis vraiment une buse en VBA, je tente de reproduire ce que vous avez fait sur la première feuille mais n'y arrive pas.

Quelques petites questions pour m'aider à mieux comprendre :
comment a été insérer ThisWorkBook ?
Est-il lié seulement à la deuxième feuille, ou est-il lié à l'ensemble du fichier avec une subtilité de langage que je ne comprends pas qui le rends valable seulement pour la seconde feuille ?

Par avance, merci,

Cordialement,

Johan D.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : verrouillage cellule avec exception.

Re

(...) Est-il lié seulement à la deuxième feuille, ou est-il lié à l'ensemble du fichier avec une subtilité de langage que je ne comprends pas qui le rends valable seulement pour la seconde feuille ?
(...)

ThisWorkbook désigne le classeur où se trouve la macro. Un certain nombre d'évènements sont gérés au niveau du classeur.

Par exemple un des plus célèbres est l'évènement ouverture du classeur qui, quand il est détecté, exécute le code de la procédure Workbook_Open() comme son nom l'indique (si on y a mis du code) .

Il existe d'autres évènements comme la détection de changement valeur au sein d'une d'une feuille. Dans ce cas, on exécute la procédure: Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Contrairement à la précédente, on voit que cette procédure passe deux paramètres qu'on peut utiliser dans le code qu'on y programme.
  • Sh désigne la feuille au sein de laquelle des cellules ont été modifiées
  • Target contient l'ensemble des cellules qui ont été modifiées au sein de la feuille Sh (souvent une seule cellule)

Cet évènement se produit pour toutes les feuilles du classeur. Ce sont les paramètres Sh et Target qui permettent de savoir de quelle feuille il s'agit et quelles cellules ont été modifiées. Il faut néanmoins pour chaque feuille ne pas protéger les cellules J48 et M55 avant de protéger de la feuille elle-même.

C'est cet évènement qui a été utilisé pour le code. Il est donc valable pour toutes les feuilles du classeur.



(...) comment a été insérer ThisWorkBook ? (...)

Pour saisir le code:
  • Cliquer droit sur le nom d'un onglet (peu importe lequel) et choisir le menu "Visualiser le code". On peut aussi utiliser la combinaison des touches Alt+F11. L'environnement VBE s'ouvre.
  • Dans le panneau de projet (généralement à gauche) repérer le nom de votre classeur (si ce panneau n'apparait pas, sélectionner le menu "Affichage/Explorateur de projet" pour le faire apparaître)
  • Développer, si ce n'est pas déjà fait, l'arborescence de votre classeur jusqu'à voir le terme ThisWorkbook.
  • Double-cliquer sur ThisWorkbook. La fenêtre pour le code (correspondant à ThisWorkbook) va s'ouvrir.
  • Cette fenêtre possède deux listes déroulantes vers le haut de la fenêtre. Une liste (à gauche) qui contient (Général) et une autre (à droite) qui contient (Déclarations)
  • Dans la liste qui contient (Général), sélectionner Workbook
  • Effacer ce qui est dans la fenêtre (par défaut il s'agit du code à exécuter quand le classeur s'ouvre mais nous n'utilisons pas cet évènement)
  • Coller dans cette fenêtre, le code qui suit:
VB:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Application.EnableEvents = False
  If Not Intersect(Sh.Range("J48,M55"), Target) Is Nothing Then Application.Undo
  Application.EnableEvents = True
End Sub
  • Enregistrer votre fichier sous le format .xlsm

Le fichier joint comporte une feuille supplémentaire "Toto" pour montrer que le code est valable pour toutes les feuilles du classeur.

Nota: Quand on protège la feuille, il faut bien entendu, cocher l'option autoriser la sélection des cellules déverrouillées.
 

Pièces jointes

  • calculth-uw-sw_58_10-09 v2.xls
    578 KB · Affichages: 41
Dernière édition:

Discussions similaires

Réponses
31
Affichages
1 K

Statistiques des forums

Discussions
312 495
Messages
2 088 964
Membres
103 992
dernier inscrit
Christine 974