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

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

  • EXEMPLE SELECTION.xlsx
    10.6 KB · Affichages: 9

job75

XLDnaute Barbatruc
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

  • EXEMPLE SELECTION(1).xlsm
    17.7 KB · Affichages: 13

Valter

XLDnaute Occasionnel
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

  • EXEMPLE SELECTION.xlsx
    116.7 KB · Affichages: 4

job75

XLDnaute Barbatruc
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

  • EXEMPLE SELECTION(2).xlsm
    124.5 KB · Affichages: 10

Valter

XLDnaute Occasionnel
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.
 

job75

XLDnaute Barbatruc
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

  • EXEMPLE SELECTION(3).xlsm
    126.3 KB · Affichages: 7

job75

XLDnaute Barbatruc
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

  • Classeur(1).xlsm
    19.4 KB · Affichages: 13

Discussions similaires

Réponses
26
Affichages
378

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87