XL pour MAC Interdire la sélection de certaines cellules ou autoriser la sélection de cellules verouillées

  • Initiateur de la discussion Initiateur de la discussion Valter
  • Date de début Date de début

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 !

Valter

XLDnaute Occasionnel
Bonjour le forum,
Dans une feuille verrouillée en choisissant l'option sélectionner que les cellules déverrouillés, je voudrais pouvoir quand-même sélectionner une plage de cellules bien spécifique... ou alors à l'envers, dans une feuille verrouillée avec l'option : sélectionner cellules verrouillés et déverrouillées, je voudrais pouvoir interdire la sélection d'une plage de cellules bien spécifique.

Je ne sais pas si c'est possible.

Je joins un fichier d'exemple avec 2 feuilles et les explications pour chaque feuille.
Merci pour votre aide
 

Pièces jointes

Bonsoir Valter, Dudu2,

Dans ThisWorkbook :
VB:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim P As Range, Q As Range
Set P = Sh.[D3:H4]: Set Q = Sh.[D6:H23]
If Intersect(Target, Union(P, Q)) Is Nothing Then
    P(1).Select
ElseIf Not Intersect(Target, P) Is Nothing Then
    Intersect(Target, P).Select
ElseIf Not Intersect(Target, Q) Is Nothing Then
    Intersect(Target, Q).Select
End If
End Sub
Si l'on protège les feuilles cocher les 2 cases relatives à la sélection des cellulles.

A+
 

Pièces jointes

Merci Job75, j'aurai voulu que cette macro s'effectue uniquement sur une feuille et non pas dans tout le classeur .... j'ai un peu réfléchi et j'aimerai faire le contraire, ça serait plus adapté.. je joins de nouveau un fichier d'exemple ou c'est explique en détail...
 

Pièces jointes

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim P As Range, Q As Range
Set P = [B2:F3]: Set Q = [B5:F16]
If Intersect(Target, Union(P, Q)) Is Nothing Then
    P(1).Select
ElseIf Not Intersect(Target, P) Is Nothing Then
    Intersect(Target, P).Select
ElseIf Not Intersect(Target, Q) Is Nothing Then
    Intersect(Target, Q).Select
End If
End Sub
 

Pièces jointes

Bonjour job75, bonjour le forum, cela fonctionne parfaitement comme j'avais demandé, il persiste cependant un problème, si je veux sélectionner la plage en jaune, c'est pour pouvoir y copier le contenu des cellules par macro et aller les coller dans une autre plage, la macro me déverrouille la feuille et ensuite me la re-verouille en fin de macro, or dans l'exemple, cela fonctionne en permanence , que la feuille soit verrouillée ou pas. Y à t'il une possible de désactiver ce code quand la feuille est déverrouillée et le réactiver automatiquement quand la feuille sera verrouillée ? sinon la macro ne peut pas copier les données qui sont dans la cellule sélectionnée car le code va toujours me changer la cellule selectionnée.
 
De toute façon pour coller pas besoin de sélectionner, fichier (3) avec :
VB:
Sub Copier_la_selection_sur_B20()
Me.Protect Password:="", UserInterfaceOnly:=True 'protège la feuille sans mot de passe
[B20:F31].Clear
If TypeName(Selection) = "Range" Then Selection.Copy [B20]
End Sub
 

Pièces jointes

Voyez le fichier joint et ces 2 macros :
VB:
Private Sub Workbook_Open()
Feuil1.ScrollArea = "D7:I22" 'délimite la zone de sélection
End Sub
VB:
Sub CopierLigne()
Feuil1.Activate 'CodeName de la feuille
If Not Intersect([D7:I22], ActiveCell) Is Nothing Then _
    [D4:I4] = Intersect([D7:I22], ActiveCell.EntireRow).Value 'copie-colle les valeurs
End Sub
 

Pièces jointes

- 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

Discussions similaires

Retour