Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." <caroland@videotron.ca> a écrit dans le message de news:
ZPj0e.116889$cQ3.1917590@weber.videotron.net...
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." <caroland@videotron.ca> a écrit dans le message de news:
ZPj0e.116889$cQ3.1917590@weber.videotron.net...
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" a écrit dans le message de news:
uRw8uX#Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de lafeuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sontréputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tudois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manièredont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
cliquen'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
ledébogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
uRw8uX#LFHA.3616@TK2MSFTNGP09.phx.gbl...
Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." <caroland@videotron.ca> a écrit dans le message de news:
ZPj0e.116889$cQ3.1917590@weber.videotron.net...
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" a écrit dans le message de news:
uRw8uX#Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de lafeuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sontréputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tudois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manièredont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
cliquen'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
ledébogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" a écrit dans le message de news:
uRw8uX#Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de lafeuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sontréputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tudois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manièredont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
cliquen'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
ledébogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
uRw8uX#LFHA.3616@TK2MSFTNGP09.phx.gbl...
Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." <caroland@videotron.ca> a écrit dans le message de news:
ZPj0e.116889$cQ3.1917590@weber.videotron.net...
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" a écrit dans le message de news:
uRw8uX#Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de lafeuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sontréputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tudois utiliser la référence "Feuille" à laquelles ces objets appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent à
la feuille du module feuille . De la manièredont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
cliquen'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
ledébogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
toi aussi, caroline?
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
toi aussi, caroline?
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
toi aussi, caroline?
re,
je ne constate aucune erreur particulière. J'ai copié tant ton code que
le mien sur plusieurs fichiers différents et il ne se plante pas.
Par ailleurs Me désigne ici la feuille mais de toute façon si on
n'écrit pas Me, il faudra écrire la désignation d'un objet Feuille (
activesheet bien souvent) donc je ne vois pas vraiment le gain à
l'enlever.
Dans quelle conditions exactement ce code te plante t-il ?
A+Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie
dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des
problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire
pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" a écrit dans le message de news:
uRw8uX#Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de lafeuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sontréputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tudois utiliser la référence "Feuille" à laquelles ces objets
appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent
à
la feuille du module feuille . De la manièredont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux
la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
cliquen'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je
ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
ledébogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
re,
je ne constate aucune erreur particulière. J'ai copié tant ton code que
le mien sur plusieurs fichiers différents et il ne se plante pas.
Par ailleurs Me désigne ici la feuille mais de toute façon si on
n'écrit pas Me, il faudra écrire la désignation d'un objet Feuille (
activesheet bien souvent) donc je ne vois pas vraiment le gain à
l'enlever.
Dans quelle conditions exactement ce code te plante t-il ?
A+
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie
dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des
problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire
pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
uRw8uX#LFHA.3616@TK2MSFTNGP09.phx.gbl...
Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets
appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent
à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." <caroland@videotron.ca> a écrit dans le message de news:
ZPj0e.116889$cQ3.1917590@weber.videotron.net...
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux
la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je
ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
re,
je ne constate aucune erreur particulière. J'ai copié tant ton code que
le mien sur plusieurs fichiers différents et il ne se plante pas.
Par ailleurs Me désigne ici la feuille mais de toute façon si on
n'écrit pas Me, il faudra écrire la désignation d'un objet Feuille (
activesheet bien souvent) donc je ne vois pas vraiment le gain à
l'enlever.
Dans quelle conditions exactement ce code te plante t-il ?
A+Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie
dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des
problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire
pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" a écrit dans le message de news:
uRw8uX#Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de lafeuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sontréputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tudois utiliser la référence "Feuille" à laquelles ces objets
appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent
à
la feuille du module feuille . De la manièredont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux
la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
cliquen'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je
ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
ledébogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour AnonymousA,
Juste pour être certaine, je dois placer le code dans la feuille concernée,
n'est-pas ? (pas dans un module)
Voici le moment où ça plante. J'ouvre un nouveau classeur que je nomme par
exemple Classeur1. L'onglet Feuil1 est renommé "Gestion".
J'ai le fichier Horaire dans lequel la macro fonctionne très bien. Le code
est placé dans la feuille Gestion.
Donc, nous sommes dans le fichier Horaire, sur la feuille Gestion (pas dans
le VBA). Je sélectionne tout et je fais un copier de l'onglet Gestion (la
mise en forme, le texte et tout) et je colle dans la feuille Gestion du
fichier Classeur1. Comme le code le prévoit, il y a une plage qui ne doit
jamais être modifiée (avec ou sans la protection de la feuille). Là je vais
dans ALT-F11 et je copie le code de la feuille Gestion du fichier Horaire et
je "colle" ce code dans l'espace code de la feuille Gestion du fichier
Classeur1. Je ferme le ALT-F11 et je reviens dans Excel. Lorsque je clique
sur n'importe laquelle des cellules, là il y a le message d'erreur.
Hum... j'espère que mes explications sont claires. Si tu as des questions,
n'hésite pas.
Pour ce qui est du "Me", c'est MichDenis qui l'a ajouté (tu peux lire son
point de vue et explications en début de lignée). Donc, j'utilise le code
qui est dans ma question initiale.
Merci
Caroline
"anonymousA" a écrit dans le message de news:
4241ea8f$0$3134$re,
je ne constate aucune erreur particulière. J'ai copié tant ton code que
le mien sur plusieurs fichiers différents et il ne se plante pas.
Par ailleurs Me désigne ici la feuille mais de toute façon si on
n'écrit pas Me, il faudra écrire la désignation d'un objet Feuille (
activesheet bien souvent) donc je ne vois pas vraiment le gain à
l'enlever.
Dans quelle conditions exactement ce code te plante t-il ?
A+Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie
dansun autre fichier. C'est dans les autres fichiers qu'elle créé des
problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire
pourquoiceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" a écrit dans le message de news:
uRw8uX#Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de lafeuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sontréputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tudois utiliser la référence "Feuille" à laquelles ces objets
appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent
à
la feuille du module feuille . De la manièredont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux
lacopier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
cliquen'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je
nevois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
ledébogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour AnonymousA,
Juste pour être certaine, je dois placer le code dans la feuille concernée,
n'est-pas ? (pas dans un module)
Voici le moment où ça plante. J'ouvre un nouveau classeur que je nomme par
exemple Classeur1. L'onglet Feuil1 est renommé "Gestion".
J'ai le fichier Horaire dans lequel la macro fonctionne très bien. Le code
est placé dans la feuille Gestion.
Donc, nous sommes dans le fichier Horaire, sur la feuille Gestion (pas dans
le VBA). Je sélectionne tout et je fais un copier de l'onglet Gestion (la
mise en forme, le texte et tout) et je colle dans la feuille Gestion du
fichier Classeur1. Comme le code le prévoit, il y a une plage qui ne doit
jamais être modifiée (avec ou sans la protection de la feuille). Là je vais
dans ALT-F11 et je copie le code de la feuille Gestion du fichier Horaire et
je "colle" ce code dans l'espace code de la feuille Gestion du fichier
Classeur1. Je ferme le ALT-F11 et je reviens dans Excel. Lorsque je clique
sur n'importe laquelle des cellules, là il y a le message d'erreur.
Hum... j'espère que mes explications sont claires. Si tu as des questions,
n'hésite pas.
Pour ce qui est du "Me", c'est MichDenis qui l'a ajouté (tu peux lire son
point de vue et explications en début de lignée). Donc, j'utilise le code
qui est dans ma question initiale.
Merci
Caroline
"anonymousA" <anonymousA@wanadoo.fr> a écrit dans le message de news:
4241ea8f$0$3134$8fcfb975@news.wanadoo.fr...
re,
je ne constate aucune erreur particulière. J'ai copié tant ton code que
le mien sur plusieurs fichiers différents et il ne se plante pas.
Par ailleurs Me désigne ici la feuille mais de toute façon si on
n'écrit pas Me, il faudra écrire la désignation d'un objet Feuille (
activesheet bien souvent) donc je ne vois pas vraiment le gain à
l'enlever.
Dans quelle conditions exactement ce code te plante t-il ?
A+
Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie
dans
un autre fichier. C'est dans les autres fichiers qu'elle créé des
problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire
pourquoi
ceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
uRw8uX#LFHA.3616@TK2MSFTNGP09.phx.gbl...
Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de la
feuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sont
réputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tu
dois utiliser la référence "Feuille" à laquelles ces objets
appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.
'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent
à
la feuille du module feuille . De la manière
dont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))
Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." <caroland@videotron.ca> a écrit dans le message de news:
ZPj0e.116889$cQ3.1917590@weber.videotron.net...
Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux
la
copier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
clique
n'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je
ne
vois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
le
débogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline
Bonjour AnonymousA,
Juste pour être certaine, je dois placer le code dans la feuille concernée,
n'est-pas ? (pas dans un module)
Voici le moment où ça plante. J'ouvre un nouveau classeur que je nomme par
exemple Classeur1. L'onglet Feuil1 est renommé "Gestion".
J'ai le fichier Horaire dans lequel la macro fonctionne très bien. Le code
est placé dans la feuille Gestion.
Donc, nous sommes dans le fichier Horaire, sur la feuille Gestion (pas dans
le VBA). Je sélectionne tout et je fais un copier de l'onglet Gestion (la
mise en forme, le texte et tout) et je colle dans la feuille Gestion du
fichier Classeur1. Comme le code le prévoit, il y a une plage qui ne doit
jamais être modifiée (avec ou sans la protection de la feuille). Là je vais
dans ALT-F11 et je copie le code de la feuille Gestion du fichier Horaire et
je "colle" ce code dans l'espace code de la feuille Gestion du fichier
Classeur1. Je ferme le ALT-F11 et je reviens dans Excel. Lorsque je clique
sur n'importe laquelle des cellules, là il y a le message d'erreur.
Hum... j'espère que mes explications sont claires. Si tu as des questions,
n'hésite pas.
Pour ce qui est du "Me", c'est MichDenis qui l'a ajouté (tu peux lire son
point de vue et explications en début de lignée). Donc, j'utilise le code
qui est dans ma question initiale.
Merci
Caroline
"anonymousA" a écrit dans le message de news:
4241ea8f$0$3134$re,
je ne constate aucune erreur particulière. J'ai copié tant ton code que
le mien sur plusieurs fichiers différents et il ne se plante pas.
Par ailleurs Me désigne ici la feuille mais de toute façon si on
n'écrit pas Me, il faudra écrire la désignation d'un objet Feuille (
activesheet bien souvent) donc je ne vois pas vraiment le gain à
l'enlever.
Dans quelle conditions exactement ce code te plante t-il ?
A+Bonjour MichDenis,
oh, là je suis pas mal étourdi par tes explications !
La macro m'a été fourni par un membre de ce groupe discussion (je le
remercie)... elle fonctionnait très bien... jusqu'à ce que je la copie
dansun autre fichier. C'est dans les autres fichiers qu'elle créé des
problèmes.
Puisque je ne suis pas l'auteure de cette macro, je ne peux dire
pourquoiceci ou cela est utilisé.
J'ai essayé avec tes modifications (avec le Me) mais non, encore le même
message d'erreur. Est-ce que les deux lignes suivantes doivent être là ?
Dim ws As Worksheet
Set ws = ActiveSheet
merci,
Caroline
"MichDenis" a écrit dans le message de news:
uRw8uX#Bonjour Caroline,
Lorsque tu écris du code dans un événement de la feuille module, si ton
code fait référence à des objets "Range" de lafeuille auquel il appartient, tu n'as pas besoin de faire référence à la
feuille, les objets nommés dans ce code sontréputés "appartenir" à cette feuille. Si tu fais référence à des objets
Range qui appartiennt à une autre feuille, tudois utiliser la référence "Feuille" à laquelles ces objets
appartiennent.
à cet égard ton code n'est pas clair :
L'Utilisation du mot Me fait référence à l'objet du module Feuil dans
lequel le code est inscrit.'---------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
'Ta variable plage fait référence à des objets "Range" qui appartiennent
à
la feuille du module feuille . De la manièredont tu as utilisé la variable WS , cette dernière ne sert à rien !
Set plage = Union(Range("B1"), Range("D9:J22"),
Range("D26:J39"),Range("D43:J45"))Set plage = Union(Range("B1"), Range("D9:J22"), _
Range("D26:J39"), Range("D43:J45"))
If Me.ProtectContents Then
Me.Unprotect "1234"
plage.Locked = True
Me.Protect "1234"
Else
plage.Locked = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Application.EnableEvents = False
Range("D9").Select
Application.EnableEvents = True
End If
Application.EnableEvents = True
End If
'---------------------------
Salutations!
"Caroline L." a écrit dans le message de news:
ZPj0e.116889$Bonjour à tous,
J'ai une macro qui fonctionne très bien. Le problème c'est que je veux
lacopier dans un autre fichier et voilà que le message d'erreur suivant
s'affiche toujours :
Erreur d'exécution '1004'
Impossible de définir la propriété Locked de la classe Range.
En cliquant sur Débogage, la ligne suivante est en jaune :
plage.Locked = False
Le message d'erreur apparaît lorsque je suis sur la feuille et que je
cliquen'importe où (n'importe quelle cellule). Je cherche dans l'aide mais je
nevois pas.
Voici la macro :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ws As Worksheet
Set ws = ActiveSheet
Set plage = Union(Range("B1"), Range("D9:J22"), Range("D26:J39"),
Range("D43:J45"))
If ws.ProtectContents Then
ws.Unprotect "1234"
plage.Locked = True
ws.Protect "1234"
Else
plage.Locked = False <------------------------ligne en jaune (dans
ledébogage)
Application.EnableEvents = False
If Not Intersect(Target, plage) Is Nothing Then
' MsgBox "vous êtes autorisé à selectionner ces cellules"
Else
' MsgBox "vous n'êtes pas autorisé à selectionner ces cellules"
Range("D9").Select
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Set ws = ActiveSheet
If ws.ProtectContents Then
ws.Unprotect "1234"
Target.ClearContents
ws.Protect "1234"
End If
End Sub
Merci beaucoup de m'aider...
Caroline