IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

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


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 30
    Par défaut Modifier les attributs du texte d'une cellule dans un document protégé.
    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    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 = 15
                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 = 15
                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...

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 129
    Par défaut
    Est-ce envisageable de mettre cette ligne au début de ton code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        ActiveSheet.Unprotect
    Puis celle ci à la fin (check les paramètres avec l'enregitreur de macro)?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour

    Et bien .....je partage mon avis:

    - La partie gestion du format: passer par un format conditionnel!
    - Pour la partie code: utiliser ce type de code avec trois tests pour toutes les cellules me parait bien long ..... Sans traiter de la partie protection, voici un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Dim RefRng As Range
     
        Set RefRng = Union(Range("D1"), Range("D17"), Range("D19")) 'A adapter
        Debug.Print RefRng.AddressLocal
     
        If Intersect(Target, RefRng) Is Nothing Then Exit Sub   'On sort tout de suite si ce n'est pas une des cellules qui nous intéresse
     
        If IsEmpty(Target) Then
     
            With Target
                .Value = "Insert Application's Name Here"
                .Font.Size = 14
                .Font.ColorIndex = 15
                .Font.Italic = True
            End With
     
            Else:
                With Target.Font
                    .Size = 18
                    .Color = vbBlack
                    .Italic = True
                End With
     
        End If
     
    End Sub

  4. #4
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 30
    Par défaut
    @mathspountz

    Bonjour,
    Merci pour la réponse rapide.
    J'ai effectivement déjà testé ActiveSheet Protect et Unprotect mais cela n'a pas fonctionné!
    Peut être parce que je ne mettais pas les instruction au bon endroit dans le code... je ne sais pas.
    La commande Unprotect était pourtant bien disposée en début de code, avant le premier If, et la commande Protect après le dernier Endif.
    Je n'ai pas compris pourquoi ça ne voulait pas focntionner.

    Je n'aurai pas la possibilité de travailler sur le projet d'ici lundi, ne vous inquiétez donc pas de mon silence si vous avez des suggestions. Je reviendrai dès lundi matin.

    @vinc_bilb

    Bonjour,
    Merci pour votre suggestion.
    Je testerai cela dès que possible.
    Je ne m'attendais pas à avoir des réponses aussi rapidement...
    Je n'aurai cependant pas la possibilité de travailler sur le projet d'ici lundi, ne vous inquiétez donc pas de mon silence. Je reviendrai dès lundi matin.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/03/2016, 14h08
  2. [XL-2007] Modifier la couleur de texte d'une cellule sous condition
    Par LoInd dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/07/2012, 13h32
  3. [WD14] Modifier les attributs du titre d'une colonne de table
    Par mogwai162 dans le forum WinDev
    Réponses: 2
    Dernier message: 12/03/2010, 10h12
  4. Modifier la couleur du texte d'une cellule d'un tableviewer.
    Par tatemilio2 dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 27/06/2008, 08h28
  5. [VBA] Problème récup texte d'une cellule dans un tableau
    Par Marco le Pouillot dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 30/01/2006, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo