Protection de cellules - Excel 2013 -

JL00700 Messages postés 90 Date d'inscription   Statut Membre Dernière intervention   -  
 jl00700 -
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

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    débuter la macro par
    Activesheet.unprotect
    la terminer par
    Activesheet.protect

    crdlmnt
    0
    1. jl00700
       
      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
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  3. jl00700
     
    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
    0