Protection de cellules - Excel 2013 -

Bonsoir,
Toujours sur mon appli Excel où je rencontre un nouveau PB…
J’ai protégé la feuille (Formulaire) de manière à ce que l’utilisateur ne puisse pas naviguer ailleurs que dans les cellules dédiées : E9 – E11 – E13 – E15 – E17 – E19 – E21 – E23 (champs enregistrés dans la base lors de la validation sauf E19)
Mais sur cette feuille j’ai également trois autres cellules (A1 – E8 - G19) que j’utilise comme suit :
- A1 : Enregistre le dernier n° d’ordre enregistré dans la base
- E8 : Champ calculé = A1 + 1 (champs enregistré dans la base lors de la validation)
- G19 : Acronyme dérivé à partir de la saisie E19 (champs enregistré dans la base lors de la validation)
Ces trois champs n’ont pas à être accessibles par l’utilisateur mais sont exploités dans ma macro d’enregistrement.
De ce fait… lorsque je lance la macro d’enregistrement des données du formulaire  Plantage.
En réfléchissant bien, je crois comprends pourquoi ; la macro ne peut s’exécuter correctement car les zones ne sont plus accessibles.
Mais comment faire pour remédier à cela ???
Je suis preneur de toutes suggestions.
Merci par avance de votre attention.
Cordialement
Jean

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour
    débuter la macro par
    Activesheet.unprotect
    la terminer par
    Activesheet.protect

    crdlmnt
    1. Bj Vaucluse,
      Merci de votre réponse...
      J'ai déjà ces commandes dans ma macro !
      Je vais regarder si il ne serait pas nécessaire d'intégrer d'autres fonctions dans ma macro.
      Cordialement
  2. Contributeur
    Bonjour,

    Plantage ce n'est pas très précis...
    Ligne de code en erreur n° et libellé du message et tout ce qui peut être utile.
    eric
    1. Bonjour,
      J'ai réfléchi à mon problème et trouvé la solution suivante :
      Je supprime ma cellule verrouillée et l'information qui y figure (3caractères) je l'intègre dans le libellé de la cellule visible par l'utilisateur :
      EXEMPLE : J'avais contrat durée indéterminé (E19) que je traduisait par CDI (G19) et je transférais dans ma base G19.
      Afin de rester dans ma logique initiale, je supprime la cellule G19 et modifie les libellés en E19, ce qui me donne dans l'exemple précédent CDI - contrat durée indéterminémais à ce moment là je ne doit transférer que les 3 caractères gauche de E19 dans ma base...
      Comment écrire cette fonction dans ma macro, je n'y arrive pas !Pourriez-vous m’aider.
      Merci par avance.
      Cordialement
      Jean

      NB : Tous mes libellés courts sont de 3 caractères.

      Macro actuelle (extrait) :

      Sheets("CréOp").Select
      Range("G19").Select
      Application.CutCopyMode = False
      Selection.Copy
      Sheets("Base").Select
      Range("H2").Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False