Impossible de choisir la taille de police dans une MFC ?

Bonjour Forum !

Tout est dans le titre : je m'aperçois qu'il n'est pas possible de choisir la taille de police dans une MFC (au moins dans Excel 2003).

Quelqu'un connait-il un moyen de contourner cette limitation ?

Merci !

Bonjour gloub

Il reste possible de modifier la taille de la police avec VBA lorsque la condition de la MFC est vraie ou fausse.

Cordialement

Merci pour ta réponse.

En fait, ce que je voudrais, c'est que la MFC modifie la taille de police (que par exemple la police passe en 9 points si la condition est vraie).

Bonsoir

Un exemple

Cordialement

65classeur1.zip (7.91 Ko)

Merci pour ta réponse.

Ça marche...mais je m'étonne de 2 trucs :

  • contrairement à ce qui se passe d'habitude, la MFC agit en 2 temps : quand je change la valeur de la cellule B8, le fond de la cellule D8 change immédiatement, mais il faut que la cellule B8 redevienne active pour que la taille de police change à son tour ?!
  • sur ma version d'Excel (2003), le paramètre "taille de police" reste inaccessible parmi les différents réglages possibles de la MFC. Comment as-tu fait pour spécifier une taille ?

Bonjour

Le Code de Feuil1 est

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B8")) Is Nothing Then
If UCase([h8]) = "VRAI" Then
    Range("D8").Font.Size = 9
    ElseIf UCase([h8]) = "FAUX" Then
    Range("D8").Font.Size = 16
   End If
   End If  
End Sub

Pour le premier volet de la question, je n'ai pas ce problème car pour cet exercice, j'ai un peu triché et "Déplacer la sélection après validation" n'est pas coché dans mes Options, onglet "Modifications"

Cordialement

Bonjour

Enlève "Selection" dans "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"

Amicalement

Nad

Bonjour Nad

Merci pour la correction, j'en étais, moi, à un Range("B8").Select en fin de Code qui marchait aussi.

Pas de doute, VBA et moi, c'est pas le grand amour.

Cordialement

Merci à tous/toutes pour vos réponses.

Dernière question (du moins je l'espère) :

Mon souhait serait d'appliquer une MFC à plusieurs cellules en fonction d'une condition logique propre à chaque cellule.

Faut-il refaire le code pour correspondre à chaque cellule ou y a-t-il un moyen de spécifier une plage de cellules (du type si condition(LC) = VRAI, alors la MFC s'applique à LC, si condition(LC) = FAUX, alors elle ne s'applique pas ?

Encore mieux, j'aimerais pouvoir créer par ce moyen une "pseudo-MFC" qui applique différents formats suivant différentes conditions :

  • si condition1(LC) = VRAI, alors Format1
  • si condition2(LC) = VRAI, alors Format2
  • si condition3(LC) = VRAI, alors Format3

J'espère ne pas trop vous en demander...

D'avance merci !

Bonjour

Avec des Conditions MFC différentes pour chaque cellule, je pense qu'il serait préférable et plus logique d'écrire les conditions des MFC en VBA.

Mets un exemple sur un fichier xls avec quelques cellules et les MFC que tu souhaites.

Cordialement

Merci pour ta réponse.

Je joins un fichier comme exemple de ce que je veux faire.

L'idée est la suivante : je gère pas mal de listes. Dans certaines cellules, il y a quelques caractères, dans d'autres, des phrases entières (jusqu'à 300 ou 400 caractères).

Pour éviter d'avoir des feuilles de calcul difficiles à lire, imprimer, manipuler, je change manuellement la taille de police des cellules dont le texte occupe plusieurs lignes.

J'aimerais automatiser cette opération qui me prend du temps.

Les petits malins vont me dire : il suffit de choisir le format "ajuster" dans l'onglet "alignement" du format de cellule.

Ils auront tort, car Excel ne fixe pas de limite basse à la diminution de la taille de police pour que le texte s'ajuste à la cellule, ce qui fait que les textes trop longs deviennent illisibles une fois imprimés.

J'ai essayé de contourner cette faiblesse d'Excel en créant une MFC qui ajuste la taille de police en fonction du nombre de caractères, sans descendre au-dessous d'une certaine taille de police, mais les MFC de la version 2003 ne permettent pas d'agir sur la taille de police.

Peut-être que mon approche n'est pas la bonne, mais je ne sais pas comment m'y prendre, ni en VBA (trop novice en la matière) ni avec les MFC.

Désolé d'avoir été si long, mais parfois on n'expose qu'une partie du problème, et les gentils membres du forum font remarquer qu'ils ne savaient pas tout quand ils ont formulé un conseil.

13classeur3.xls (13.50 Ko)

Bonjour

Une Macro facile à adapter pour choisir la taille des caractères en points en fonction de la longueur du texte.

Sub FormatPolice()
For Each Cellule In Range("B5:B12")
If Len(Cellule.Value) <= 25 Then
Cellule.Font.Size = 10
ElseIf Len(Cellule.Value) > 25 And Len(Cellule.Value) <= 50 Then
Cellule.Font.Size = 8
ElseIf Len(Cellule.Value) > 50 And Len(Cellule.Value) <= 100 Then
Cellule.Font.Size = 7
ElseIf Len(Cellule.Value) > 100 And Len(Cellule.Value) <= 200 Then
Cellule.Font.Size = 6
ElseIf Len(Cellule.Value) > 200 Then
Cellule.Font.Size = 5
End If
Next
End Sub

Cordialement

Merci beaucoup Amadeus, c'est super.

Dernier réglage : est-ce que la "MFC" pourrait s'exécuter toute seule, à chaque changement de valeur d'une cellule ?

Bonjour

En revenant à la méthode précédente avec un Code PrivateSub sur la feuille, qui ira déclencher la Macro.

Cordialement

Merci beaucoup de m'assister dans mon perfectionnisme...

J'ai un problème pour implémenter le code que tu m'as envoyé : la feuille où je veux le coller a déjà du code qui commence par "Private Sub Worksheet_SelectionChange(ByVal Target As Range)", et l'éditeur VBA n'aime pas ça...

Comment faire ?

-- Jeu Juil 01, 2010 5:25 pm --

Ça y est, j'ai trouvé comme un grand (avec beaucoup de transpiration quand même), et ça marche super.

Merci beaucoup !!!!

Question subsidiaire : est-ce que sur le même principe, la taille de police pourrait varier non pas selon le nombre de caractères, mais selon le nombre de lignes de texte dans la cellule (ça permettrait que la pseudo-MFC ne dépende pas de la largeur de cellule, mais seulement de sa hauteur).

Encore merci.

Quelqu'un saurait-il comment adapter le code proposé par Amadeus pour que la taille de police d'une cellule varie en fonction du nombre de lignes dans une cellule (que ce soit des retours à la ligne automatiques ou manuels) plutôt qu'en fonction du nombre de caractères présents dans la cellule ?

Code de feuille :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Application.Intersect(Target, Range("B5:B" & [b65000].End(xlUp).Row + 1)) Is Nothing Then

Call FormatPolice

End If

End Sub

Code dans le module :

Sub FormatPolice()

' Macro Amadéus

For Each Cellule In Range("B5:B" & [b65000].End(xlUp).Row + 1)

If Len(Cellule.Value) <= 25 Then

Cellule.Font.Size = 10

ElseIf Len(Cellule.Value) > 25 And Len(Cellule.Value) <= 50 Then

Cellule.Font.Size = 8

ElseIf Len(Cellule.Value) > 50 And Len(Cellule.Value) <= 100 Then

Cellule.Font.Size = 7

ElseIf Len(Cellule.Value) > 100 And Len(Cellule.Value) <= 200 Then

Cellule.Font.Size = 6

ElseIf Len(Cellule.Value) > 200 Then

Cellule.Font.Size = 5

End If

Next

End Sub

Voilà.

Merci encore à ceux qui ont contribué à m'aider jusque là !

...hum hum : quelqu'un pourrait-il m'aider à modifier le code ci-dessus ? (je ne sais pas le faire tout seul).

Dans la version actuelle, la taille de police s'adapte en fonction du nombre de caractères dans la cellule.

J'aimerais que la taille de police varie en fonction du nombre de lignes dans la cellule (sauts de lignes automatiques et/ou manuels).

Merci d'avance.

Bonjour

Désolé gloub, de ne pas avoir pu continuer, mais, au vu de mes faibles capacités en VBA je ne sais pas faire.

Bon dimanche

Merci pour ta réponse et pour ton aide de toutes façons. Mes capacités en VBA étant microscopiques, je trouve ce que tu as fait déjà miraculeux...

J'espère juste qu'un autre participant au forum saura m'aider.

Rechercher des sujets similaires à "impossible choisir taille police mfc"