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é de support Microsoft. Vous pouvez voter pour savoir si c’est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ou suivre la question.

0 commentaires Aucun commentaire

91 réponses

Trier par : Plus récent
  1. Anonyme
    2016-05-10T17:26:44+00:00

    Bonsoir Droopy,

    Je pressentais bien le redoutable négociateur!

    Bravo, et merci; c'était passionnant.

    Au plaisir d'une autre rencontre.

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

    0 commentaires Aucun commentaire
  2. Anonyme
    2016-05-10T11:47:00+00:00

    Bonjour les amis,

    Comme promis, j'ai pris un peu de temps ce weekend pour jeter un oeil à vos propositions.

    @ Cloopy:

    Ta proposition est bien complète et même impressionnante par la qualité du travail de présentation. On sent le professionnel de la formation là derrière!

    Je ne l'ai pas vraiment mise en oeuvre car assez compliquée, mais cela me donne plein d'idées et de pistes pour d'autres choses...! Je suis entre autres occupé sur un programme de calcul automatique des résultats pour rallye automobile, avec temps de parcours, points de pénalisation pour arrivée trop tôt ou tardive, contrôle de passage, ...

    Je pense pouvoir utiliser certaines fonctionnalités qui m'étaient inconnues pour améliorer mon fichier.

    Par contre, dans le cas présent, ta proposition rend la solution relativement lourde.

    J'en serais certainement passé par là si rien d'autre n'avait pu fonctionné, mais Daniel m'a fourni une solution répondant mieux à mes attentes.

    Merci pour tes efforts, quoi qu'il en soit.

    @ Daniel:

    Je suis bluffé... ta solution semble parfaitement fonctionner et est finalement très simple.

    J'avais pourtant déjà expérimenté ce type de solution, mais j'avais manifestement loupé quelque chose qui faisait que ça ne fonctionnait pas.

    Je n'ai pas encore implémenté ta solution sur mon fichier de travail, mais le résultat obtenu avec le fichier fourni répond parfaitement au besoin.

    Je vais étudier cela de près afin de comprendre pourquoi cela ne fonctionnait pas lors de mes essais précédents.

    Merci beaucoup à toi aussi pour avoir continué à suivre les débats et évolutions et, finalement, proposé une solution fonctionnelle, simple et légère.

    Un grand merci à vous de partager ainsi vos connaissances et expériences avec la communauté.

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

    0 commentaires Aucun commentaire
  3. Anonyme
    2016-05-04T16:56:53+00:00

    Bonsoir Droopy,

    Je suis fier de t'avoir procuré de quoi organiser un week-end studieux...!

    Si ma V4 te convient, je tiens à ta disposition une V5 dans laquelle tu pourras protéger le code contre les utilisateurs vraiment vicieux!

    Bon week-end

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

    0 commentaires Aucun commentaire
  4. Anonyme
    2016-05-04T13:01:43+00:00

    Bonsoir Droopy,

    Bon, je suis assez sûr de la conformité avec tes demandes initiales pour anticiper un peu avec la doc (je ne vais pas être très réactif les prochains jours)

    Un peu de lecture à l'adresse suivante: http://dl.free.fr/kNKeoFYnW

    J'espère que ça te redonnera le moral.

    Tiens bon!

    Bon courage

    Merci Cloopy,

    J'espère avoir le temps de regarder à cela ce weekend.

    Je te tiens au courant la semaine prochaine.

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

    0 commentaires Aucun commentaire
  5. Anonyme
    2016-05-04T12:59:05+00:00

    Bonsoir,

    Essaie :

    http://www.cjoint.com/c/FDEtstt6iMv

    Daniel

    Merci Daniel,

    A la veille d'un long weekend, j'espère avoir un peu de temps pour tester cela.

    Je te donne des nouvelles la semaine prochaine.

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

    0 commentaires Aucun commentaire