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-03-30T12:18:03+00:00

    Bonjour Daniel,

    Je vous rassure tout de suite, je n'ai aucune intention d'acheter quoi que ce soit et je ne crois pas que le but de Patrick soit de me vendre sa solution.

    Je reste également totalement ouvert à toute autre proposition et, si j'arrive a trouver la solution qui fonctionne, il est clair que le code sera publié ici même afin d'en faire profiter les autres membres du forum, et cela quelle que soit la manière dont je serai arrivé à la solution: par moi-même ou avec l'aide d'un ou plusieurs autres membres.

    Je ne vais pas tergiverser sur la manière dont Patrick met ses propositions à disposition, chacun fait comme il le sent.

    Mais je suis d'accord sur le principe de l'esprit d'un forum qui est le partage ouvert et transparent, les codes mis en ligne devenant de facto publiques...

    Merci de votre intérêt et de votre aide.

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

    0 commentaires Aucun commentaire
  2. Anonyme
    2016-03-30T12:09:04+00:00

    Bonjour Droopy,

    Le nouveau dossier zippé est disponible sous le lien http://dl.free.fr/mJviU0tta

    Bonjour Patrick,

    La solution avec formulaire est assez sympa mais ne conviendra pas à l'usage que je veux en faire...

    Merci quand même pour l'effort.

    L'autre code fonctionne bien, mais avec toujours la même problématique que le format des cellules n'est pas protégé!

    Et dès que je désélectionne l'option lors de la protection de la feuille, la macro donne une erreur car elle ne sait pas formater le texte ainsi que c'est demandé dans le code.

    Pour peut être plus de clarté:

    J'utilise cette feuille Excel  comme questionnaire pour déterminer le niveau d'un projet par rapport à une fonction donnée.

    Les cellules en colonne C comportent une question, la colonne D propose les réponses possibles sous forme de "dropdown list". Seule certaines questions sont ouvertes et demandent l'introduction par l'utilisateur d'un commentaire en cellule de colonne D.

    Il faut donc que l'utilisateur puisse introduire du texte dans ces cellules spécifiques mais qu'il ne puisse rien faire d'autre sur les autres cellules que de sélectionner une réponse dans la liste proposée.

    Les couleurs et formats des cellules sont déterminés en fonction de leur contenu et il ne faut donc pas que l'utilisateur puisse y changer quoi que ce soit.

    Dans l'état actuel des choses, ce n'est pas encore au point...! ;-)

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

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2016-03-30T10:47:28+00:00

    Comme j'ai quelques soupçons de plagiat, le code est protégé; ça se craque, mais il faut un peu de temps.

    Si vous pensez que la version supplémentaire pourrait vous convenir, indiquez (demain seulement) une boîte mail à laquelle je pourrai vous adresser le code.

    Moi, j'ai vraiment des soupçons de tentative de commercialisation d'une solution. PW_67201 représente une société de conseil (voir logo sur le document pdf). Pourquoi réserver une solution à Droopyougo et en priver les autres utilisateurs ? C'est absolument contraire à l'esprit d'un forum.

    Cet individu a un comportement atypique :

    • changement de pseudo en cours de discussion (PW_67200 devenu  PW_67201 ?)
    • code verrouillé
    • mise en ligne de classeur pour un temps limité.
    • tentative d'évincer les autres intervenants :

    Merci Daniel,

    c'est ce que nous sommes en train de mettre au point...

    Comment un utilisateur peut-il dans ces conditions trouver une solution à un problème similaire ?

    Méfiance.

    Daniel

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

    0 commentaires Aucun commentaire
  4. Anonyme
    2016-03-30T06:49:50+00:00

    Bonjour Droopy,

    Le nouveau dossier zippé est disponible sous le lien http://dl.free.fr/mJviU0tta

    Comme j'ai quelques soupçons de plagiat, le code est protégé; ça se craque, mais il faut un peu de temps.

    Si vous pensez que la version supplémentaire pourrait vous convenir, indiquez (demain seulement) une boîte mail à laquelle je pourrai vous adresser le code.

    Je serai probablement absent toute la journée: si je "réponds", ce n'est pas moi.

    Cordialement

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

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2016-03-29T14:28:34+00:00

    Essaie ce classeur (j'ai utilisé ton code initial) :

    https://www.dropbox.com/s/8841iyv1k41gkx8/Droopyougo.xlsm?dl=0

    Daniel

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

    0 commentaires Aucun commentaire