XL 2016 AllowEditRanges.Add erreur

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 !

JoanneDCB

XLDnaute Nouveau
Bonjour,

Dans une macro je souhaite déverrouiller une plage précise de ma feuille, j'utilise :
ActiveSheet.Protection.AllowEditRanges.Add Title:="plage1", Range:=Range("AR6", "AY6")
J'ai plusieurs macros sur un même fichier et cette fonction apparaît dans presque chacune d'elles.

Mon problème est que, parfois les macros buggent sur cette ligne mais je n'arrive pas à définir quand ni pourquoi. Si je change le nom de la plage le problème est résolu ...
J'en ai déduis qu'il y avait conflit avec le nom qui existe surement déjà dans le fichier : comment effacer les noms précédents pour être sûre de ne plus rencontrer ce problème ? y a t il une fonction "plage = Nothing" ou quelque chose comme ça, mais qui n'effacerait pas l'autorisation de modification bien sûr 😉

Je vous remercie pour votre aide 🙂
 
C'est un idée ... mais cela m'obligerai à noter ce chiffre dans mon tableau Excel, non ? Ces fichiers (car il y en a un certain nombre utilisant le même code.xlam) sont utilisés par plusieurs personnes chaque jours ... je ne vois pas comment incrémenter mon nom de plage directement dans le code, cela est possible ? Est ce que ça ne va pas créer des conflits entre tous les utilisateurs et tous les fichiers ?
 
Regarde si ce code te convient. Maintenant, à toi de voir s'il est compatible avec ton application :

VB:
Dim Ctr As Long
With ActiveSheet.Protection.AllowEditRanges
  Ctr = .Count + 1
  .Add Title:="plage" & Ctr, Range:=Range("AR6", "AY6")
End With

Daniel
 
Bonjour à tous

...comment effacer les noms précédents...

pour répondre à cette question, un essai:

VB:
If ActiveSheet.Protection.AllowEditRanges.Count > 0 Then
    ActiveSheet.Unprotect
    For i = 1 To ActiveSheet.Protection.AllowEditRanges.Count
        'MsgBox ActiveSheet.Protection.AllowEditRanges(i).Title
        ActiveSheet.Protection.AllowEditRanges(i).Delete
    Next
    ActiveSheet.Protect
End If

A+
 
Regarde si ce code te convient. Maintenant, à toi de voir s'il est compatible avec ton application :

VB:
Dim Ctr As Long
With ActiveSheet.Protection.AllowEditRanges
  Ctr = .Count + 1
  .Add Title:="plage" & Ctr, Range:=Range("AR6", "AY6")
End With

Daniel

Merci pour cette option : mais je ne suis pas sûre que cela fonctionne pour mon application précise ...
Je vais quand même tester et je me le garde sous le coudeau cas où 🙂
 
Bonjour à tous



pour répondre à cette question, un essai:

VB:
If ActiveSheet.Protection.AllowEditRanges.Count > 0 Then
    ActiveSheet.Unprotect
    For i = 1 To ActiveSheet.Protection.AllowEditRanges.Count
        'MsgBox ActiveSheet.Protection.AllowEditRanges(i).Title
        ActiveSheet.Protection.AllowEditRanges(i).Delete
    Next
    ActiveSheet.Protect
End If

A+

J'ai déjà une ligne avec ActiveSheet.Protection.AllowEditRanges(1).Delete ... effectivement c'est une autre plage qui bloque : je n'avais pas pensé à mettre une variable dans la suppression ! Je teste de suite cette solution qui me parait être bien adaptée 🙂

Merci encore, je vous tiens au courant en cas de pb

Bonne journée
 
Bon ... aucune des deux solutions n'a fonctionné
Finalement je m'en suis sortie en contournant le problème :

On Error Resume Next
ActiveSheet.Protection.AllowEditRanges.Add Title:="plage1", Range:=Range("AR6", "AY6")
ActiveSheet.Protection.AllowEditRanges.Add Title:="plage2", Range:=Range("AR6", "AY6")
On Error GoTo 0


Ce qui revient à lui dire "nomme la plage "1", si tu n'y arrives pas : nomme la "2"". Pas très propre mais ça à l'air de fonctionner comme solution provisoire. J'espère trouver quelque chose de plus stable comme solution et surtout arriver à comprendre pourquoi parfois cela fonctionne et d'autres fois non !

Merci pour votre aide,
Je suis preneuse de toute autre suggestion 🙂

Bonne journée !
 
- 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
Retour