Mise en forme conditionnelle de la taille de police en VBA

  • Initiateur de la discussion Initiateur de la discussion Amilo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Amilo

XLDnaute Accro
Bonjour le forum,

Je souhaiterais modifier la taille d'une cellule fusionnée en (B20:E20) selon une liste déroulante en F5 contenant 2 choix (Texte 1 et Texte 2)

Si F5="Texte 1" alors pas de modification de la taille et si F5="Texte 2" alors modification de la taille à 14

La mise en forme conditionnelle classique ne permet a priori pas de faire cela sur la taille des polices.

Ne maitrisant pas trop VBA, pouvez-vous svp me proposer une solution en VBA ?

Je vous joins un fichier en exemple, (je possède Office 2013)

Merci d'avance

Cordialement
 

Pièces jointes

Dernière édition:
Re : Mise en forme conditionnelle de la taille de police en VBA

Bonjour amilo,

avec ce code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F5")) Is Nothing Then
If Target = "Texte 2" Then
Range("B20").Font.Size = 14
Else
Range("B20").Font.Size = 11
End If
End If
End Sub

à+
Philippe
 

Pièces jointes

Dernière édition:
Re : Mise en forme conditionnelle de la taille de police en VBA

Bonjour le forum,

Je souhaite protéger mon fichier par mot de passe mais une erreur est signalée par VBA dans le code,
J'ai ajouté au code à Philippe les 2 lignes en rouge comme ci-dessous :
Cela fonctionne, mais à chaque fois je dois entrer le mot de passe pour déprotéger,

Y-a-t-il une astuce ou un code qui permette d'éviter de taper le mot de passe dans un document protégé ??

Merci d'avance pour votre aide

Cordialement
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Nom de la feuille").Unprotect
If Not Intersect(Target, Range("F5")) Is Nothing Then
If Target = "Texte 2" Then
Range("B20").Font.Size = 14
Else
Range("B20").Font.Size = 11
End If
End If
Sheets("Nom de la feuille").Protect
End Sub
 
Re : Mise en forme conditionnelle de la taille de police en VBA

Bonjour à tous.
Re...

(...)

Y-a-t-il une astuce ou un code qui permette d'éviter de taper le mot de passe dans un document protégé ??

(...)
Oui. Utilisez la paramètre UserInterfaceOnly de la méthode Protect.

Par exemple, protégez la feuille avec ce code :​
VB:
Sub Protéger()
    Me.Protect Password:=InputBox("Mot de passe :"), UserInterfaceOnly:=True
End Sub
Les procédures s’exécuteront alors dans la feuille protégée. Par exemple :​
VB:
Private Sub Worksheet_Change(ByVal Cible As Range)
    If Not Intersect(Cible, Range("F5")) Is Nothing Then
        With Range("B20").Font
            If Cible = "Texte 2" Then .Size = 14 Else .Size = 11
        End With
    End If
End Sub



ROGER2327
#6810


Dimanche 8 Absolu 141 (Absinthe, ci devant Saint Alfred - fête Suprême Tierce)
29 Fructidor An CCXXI, 4,5272h - marron
2013-W37-7T10:51:55Z
 
Re : Mise en forme conditionnelle de la taille de police en VBA

Bonjour ROGER2327,

Merci pour votre réponse,
mais malheureusement je ne parviens pas à l'appliquer à mon fichier,
Certainement que j'ai omis une opération, je vous joins le fichier exemple avec le nouveau code,

Merci d'avance
Cordialement
 

Pièces jointes

Re : Mise en forme conditionnelle de la taille de police en VBA

Re...


Quel est le mot de passe ?​



ROGER2327
#6811


Dimanche 8 Absolu 141 (Absinthe, ci devant Saint Alfred - fête Suprême Tierce)
29 Fructidor An CCXXI, 6,2464h - marron
2013-W37-7T14:59:29Z
 
Re : Mise en forme conditionnelle de la taille de police en VBA

Re...


Oups,

Mille excuses pour cette maladresse,
Mot de passe : AZERT
Par contre dans le code, je l'ai indiqué en minuscule mais dans tous les cas cela ne fonctionnait pas,
  1. Rouvrez votre classeur.
  2. Ôtez la protection de la feuille.
  3. Utilisez la procédure Protéger pour protéger la feuille.

Après quoi ça devrait fonctionner. Au moins l'espéré-je...


ROGER2327
#6813


Lundi 9 Absolu 141 (Descente du Saint Esprit de Vin - fête Suprême Quarte)
30 Fructidor An CCXXI, 0,4986h - panier
2013-W38-1T01:11:48Z
 
Re : Mise en forme conditionnelle de la taille de police en VBA

Bonjour ROGER2327,

Merci pour ces précisions,
effectivement, cela fonctionne par ce biais mais le temps que le classeur reste ouvert et dès que je le ferme et le rouvre, il faut à chaque fois passer par la procédure que vous proposez,

Sinon voici, le message d'erreur lorsque je rouvre le classeur et que je modifie la cellule F5 (le même message d'erreur que celui avec la protection normale du classeur sans passer par l'instruction "Me.Protect") :

Erreur d’exécution ‘1004’:
Impossible de définir la propriété Size de la classe Font.

Merci d'avance

Cordialement
 
Re : Mise en forme conditionnelle de la taille de police en VBA

Re...


Je n'ai pas de solution pour l'instant. J'espère que d'autres vont s'y coller !​



ROGER2327
#6814


Lundi 9 Absolu 141 (Descente du Saint Esprit de Vin - fête Suprême Quarte)
30 Fructidor An CCXXI, 5,3358h - panier
2013-W38-1T12:48:21Z
 
Re : Mise en forme conditionnelle de la taille de police en VBA

Bonjour à tous,

est-ce bien nécessaire de rentrer un (nouveau) mot de passe à chaque ouverture du classeur
en activant le code: Sub Protéger()

perso, je n'en voit pas l'utilité

à+
Philippe

à+
Philippe
 
Re : Mise en forme conditionnelle de la taille de police en VBA

Re...


Bonjour à tous,

est-ce bien nécessaire de rentrer un (nouveau) mot de passe à chaque ouverture du classeur
en activant le code: Sub Protéger()

perso, je n'en voit pas l'utilité

à+
Philippe

à+
Philippe
L'idée n'était pas de fournir un nouveau mot de passe à chaque ouverture du classeur.

Je pensais utiliser la procédure Protéger() lors de la protection initiale de la feuille en espérant que le paramètre UserInterfaceOnly de la méthode Protect serait conservé lors des ouvertures suivantes. Ce n'est apparemment pas le cas... (La propriété de feuille ProtectionMode est en lecture seule, et je ne sais pas comment la modifier.)


Bonne journée.



ROGER2327
#6816


Lundi 9 Absolu 141 (Descente du Saint Esprit de Vin - fête Suprême Quarte)
30 Fructidor An CCXXI, 5,7104h - panier
2013-W38-1T13:42:18Z
 
Dernière édition:
Re : Mise en forme conditionnelle de la taille de police en VBA

Bonjour Philippe,

Effectivement, comme indiqué par Roger, je n’ai pas à saisir à chaque fois « un nouveau » mot de passe mais l’obligation de lancer à chaque ouverture du fichier, « à nouveau » la procédure « Me.protect » et rentrer le mot de passe désiré (il peut effectivement être différent à chaque ouverture) et ceci avant toute modification de la cellule F5, sinon j’ai droit au message d’erreur.

Mais finalement, compte tenu de l’importance du fichier et de l’utilisation par une seule personne, je m’orienterais vers un fichier protégé sans mot de passe avec votre code ou celui à Roger,
Et en ajoutant les 2 lignes ci-dessous dans un des 2 codes cela fonctionne très bien dans un fichier protégé sans mot de passe et sans l’instruction « Me.Protect » :

Sheets("Nom de la feuille").Unprotect
Sheets("Nom de la feuille").Protect

Merci encore à vous de vous être penchés sur ce sujet,

Cordialement
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
103
Réponses
4
Affichages
133
Réponses
6
Affichages
159
Réponses
25
Affichages
613
Retour