Modifier les attributs du texte d'une cellule dans un document protégé.

Anonyme
2016-03-18T10:12:35+00:00

Bonjour,

J'espère que vous pourrez m'aider à comprendre pourquoi ma macro ne fonctionne pas comme je voudrais et que faire pour y arriver.

J'ai une feuille excel qui me sert de "formulaire" pour  enregistrer les réponses à un certain nombre de questions.

Certaines cellules sont utilisées pour des choix multiples alors que d'autres font appel à des réponses ouvertes.

Ces cellules "ouvertes"  sont "unlock" et je veux y faire apparaître un texte consigne: "Insert comments here" qui disparaît dès que l'on introduit son texte de réponse.

Le texte consigne a une taille et une couleur propre, le texte de la réponse a une autre couleur et une autre taille. 

Tout cela fonctionne avec un code VBA.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target = Range("D1") Then

        If Target.Text = "" Then

            Target.Value = "Insert Application's Name Here"

            Target.Font.Size = 14

            Target.Font.ColorIndex = 48

            Target.Font.Italic = True

        Else

            Target.Font.Size = 18

            Target.Font.Color = vbBlack

        End If        

    End If

    If Target = Range("D17") Then       

        If Target.Text = "" Then

            Target.Value = "Insert comments here"

            Target.Font.Size = 14

            Target.Font.ColorIndex = 48

            Target.Font.Italic = True

        Else

            Target.Font.Size = 14

            Target.Font.Color = vbBlack

        End If       

    End If

    If Target = Range("D19") Then      

        If Target.Text = "" Then

            Target.Value = "Insert comments here"

            Target.Font.Size = 14

            Target.Font.ColorIndex = 15

            Target.Font.Italic = True

        Else

            Target.Font.Size = 14

            Target.Font.Color = vbBlack

        End If       

    End If

    If Target = Range("D35") Then      

        If Target.Text = "" Then

            Target.Value = "Insert comments here"

            Target.Font.Size = 14

            Target.Font.ColorIndex = 15

            Target.Font.Italic = True

        Else

            Target.Font.Size = 14

            Target.Font.Color = vbBlack

        End If      

    End If

End Sub

Tout roule (presque) tant que je n'ai pas protégé la feuille.

Dès que je met la protection, j'ai un message d'erreur :

" Run-time error '1004':

Unable to set the Size property of the Font class."

Ce message n'apparait plus si j'autorise l'accès au format des cellules dans la boîte de dialogue de protection de la feuille, ce que je ne souhaite pas car cela donne la possibilité de modification du format de toutes les cellules par l'utilisateur.

Je voudrais donc pouvoir uniquement autoriser le formatage de la cellule (ou du Font dans la cellule) par mon code VBA lorsque la cellule concernée est sélectionnée.

J'ai un deuxième problème:

Le changement de couleur et d'attributs de Font fonctionne très bien sur 2 cellules (D1 et D35) et, par contre, pour les 2 autres, j'ai un premier changement qui s'effectue lors de la frappe de texte, puis lors de l'effacement, la cellule ne reprend pas les attributs de départ... 

Merci de m'aider à comprendre...

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

91 réponses

Trier par : Les plus récents
  1. Anonyme
    2016-04-11T13:07:53+00:00

    A nouveau bonjour Droopy,

    J'attends ta réaction pour t'envoyer:

    • un PDF de description de l'appli V3,
    • une V4 qui a passé mes tests, mais que tu devras valider (elle résout peut-être le problème de l'appel réentrant à l'évènement Change)

    Quand tu auras testé la V3 et que tu n'auras pas de contre-indication, fais-moi signe et je t'envoie le colis...

    Bon courage

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2016-04-11T06:22:40+00:00

    Bonjour Droopy,

    On l'aura mérité! (quand on aura fini par l'avoir...)

    Je te propose une nouvelle version suivante au bout du fil: http://dl.free.fr/fBwEqV8Ns

    Caractéristiques particulières:

    • les champs en texte libre (D1, D17, D19 et D35) ont une mise en forme conditionnelle en fonction du contenu, que tu pourras modifier toi-même
    • j'ai pour l'instant mis de côté la modification de taille par programme, parce qu'elle pose toujours problème: c'est aussi un évènement Change qui interagit avec l'évènement en cours, et je n'arrive pas à gérer correctement l'erreur (il y a de l'espoir cependant)
    • Globalement, je crois que la cinématique va te convenir.

    Comme la logique globale ne devrait plus être gravement remise en cause, je suis en train de te rédiger la doc, pour -je pense- la fin de la matinée.

    Cordialement

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2016-04-08T13:59:07+00:00

    Bonsoir Droopy,

    Je te cueille au vol pour constater qu'il y a tout de même un peu de bon...

    Dans l'ordre:

    • si dans les champs en texte libre tu utilises la touche "Valider" de la zone de formule, la mise en forme se fait
    • avec la protection, l'utilisateur ne peut sélectionner que les cellules de saisie; il peut cliquer, mais en utilisant la touche Tabulation, il valide sa saisie et se déplace à la cellule suivante
    • dans cette situation, le clic dans les cellules avec validation active la liste.

    "Je suis en train de chercher" (entre guillemets parce que je n'arrive pas à trouver le temps) une solution pour la saisie / validation des champs variables.

    Pour l'instant, à part certains détails qu'on peut fignoler, je te propose de parcourir le truc dans toutes les directions, tu risque de tomber sur des idées que je n'ai pas eues.

    J'attends la suite, mais sois certain que ce truc me démange assez pour que j'y plonge dès que je peux.

    Je vais te faire une doc un peu moins sommaire.

    Je crois que tu as mérité un bon week-end

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2016-04-08T13:44:11+00:00

    Bonjour Patrick,

    Désolé, je n'ai pas été très assidu cette semaine, mais beaucoup de boulot...

    Comme je ne "travaille" sur le fichier qu'au bureau, cela ne m'a pas laissé beaucoup de temps à lui consacrer.

    Bref... j'ai regardé ce que tu proposes et... je n'ai pas vraiment vu de changement par rapport à ce que tu avais déjà proposé précédement.

    En plus, j'ai l'impression que ça fonctionne un peu "à l'envers", en ce sens que, à l'ouverture du document, le texte explicatif dans les cellules est en gris, la couleur ne change pas lorsque j'y entre du texte, par contre, si je "delete" le texte inscrit, le message explicatif apparaît en noir... et à partir de là, tout reste en noir, que j'écrive quelque chose ou pas.

    J'ai essayé feuille protégée ou pas, le comportement est identique.

    Cela semble par contre signifier que le problème de capacité de modification du format de la cellule lorsque la feuille est protégée pourrait être solutionné...

    Je ne sais effectivement plus avoir accès à la commande "Format Cells" une fois que la feuille est protégée.

    Le changement de format arrive donc à se faire dans le cadre de la macro, mais pas au bon moment et pas dans les deux sens...!?

    Je constate aussi que, si je déprotège la feuille manuellement puis que je clique dasn une des cellules et que j'y inscrit quelque chose ou que je sélectionne dans un "Drop down", la feuille se re-protège automatiquement. 

    Cela semble indiquer que les commandes de protection:déprotection semblent fonctionner correctement.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Anonyme
    2016-04-07T06:54:08+00:00

    Bonjour Droopy,

    Une petite précision: le bouton Quizz Start n'était là que pour me permettre des vérifications; il n'est pas nécessaire pour démarrer le quizz.

    A plus tard

    Bon courage

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire