Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Locked zone en VBA sans la sélectionner

2 réponses
Avatar
StDonat
Bjr
Je souhaiterais déverrouiller une zone nommée mais sans la sélectionner..
Voici un bout de mon code
Qui me génère une erreur 1004

Sur Feuil 1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect ("toto")

If ActiveCell.Address = Range("Protege").Address Then protection
If ActiveCell.Address = Range("DeProtege").Address Then enleveprotection
End If
End sub

Dans module1
Sub protection()
Range("zoneprotegee").Locked = True
End sub
Sub enleveprotection()
Range("zoneprotegee").Locked = False
End sub

Or si je modifie ainsi
Sub protection()
Range("zoneprotegee").Select
Selection.Locked = True
End sub
Le range .select me renvoi dans le Worksheet_SelectionChange….

Merci de votre aide comme d’hab très précieuse
Bonne journée

2 réponses

Avatar
Daniel.C
Bonjour.
J'ai testé ton code. Deux erreurs :
- "protection" est une propriété VBA. Tu ne peux donc pas l'utiliser.
- il y a un "end if" en trop.
Sinon le code fonctionne sans sélection.
Pour éviter de déclencher un nouvel évènement, il faut ajouter les
lignes :
Application.EnableEvents = False
en début de macro, et :
Application.EnableEvents = True
à la fin.
Cordialement.
Daniel
Bjr
Je souhaiterais déverrouiller une zone nommée mais sans la sélectionner..
Voici un bout de mon code
Qui me génère une erreur 1004

Sur Feuil 1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Unprotect ("toto")

If ActiveCell.Address = Range("Protege").Address Then protection
If ActiveCell.Address = Range("DeProtege").Address Then enleveprotection
End If
End sub

Dans module1
Sub protection()
Range("zoneprotegee").Locked = True
End sub
Sub enleveprotection()
Range("zoneprotegee").Locked = False
End sub

Or si je modifie ainsi
Sub protection()
Range("zoneprotegee").Select
Selection.Locked = True
End sub
Le range .select me renvoi dans le Worksheet_SelectionChange….

Merci de votre aide comme d’hab très précieuse
Bonne journée


Avatar
StDonat
Merci je m'en sort grace a Application.EnableEvents = False...
Tu as raison Il y a des erreurs dans mon code mais copier/coller/couper pour
simplifier genere quelques oublies!

"Daniel.C" wrote:

Bonjour.
J'ai testé ton code. Deux erreurs :
- "protection" est une propriété VBA. Tu ne peux donc pas l'utiliser.
- il y a un "end if" en trop.
Sinon le code fonctionne sans sélection.
Pour éviter de déclencher un nouvel évènement, il faut ajouter les
lignes :
Application.EnableEvents = False
en début de macro, et :
Application.EnableEvents = True
à la fin.
Cordialement.
Daniel
> Bjr
> Je souhaiterais déverrouiller une zone nommée mais sans la sélectionner..
> Voici un bout de mon code
> Qui me génère une erreur 1004
>
> Sur Feuil 1
>
> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> ActiveSheet.Unprotect ("toto")
>
> If ActiveCell.Address = Range("Protege").Address Then protection
> If ActiveCell.Address = Range("DeProtege").Address Then enleveprotection
> End If
> End sub
>
> Dans module1
> Sub protection()
> Range("zoneprotegee").Locked = True
> End sub
> Sub enleveprotection()
> Range("zoneprotegee").Locked = False
> End sub
>
> Or si je modifie ainsi
> Sub protection()
> Range("zoneprotegee").Select
> Selection.Locked = True
> End sub
> Le range .select me renvoi dans le Worksheet_SelectionChange….
>
> Merci de votre aide comme d’hab très précieuse
> Bonne journée