Code VBA pour changer la taille de la police en fonction d'un texte

Bonjour,

Je suis nouveau sur le forum et je m'excuse d'avance si ma question a déjà été posée ailleurs sur le forum.

Voici mon problème :

J'ai une cellule avec une formule qui affiche plusieurs réponses selon les conditions. J'aimerais qu'en fonction de la réponse, la taille de la police change sans utiliser de bouton. J'avais l'habitude de passer par la mise en forme conditionnelle, mais le champs de la taille est grisé...

Du coup, je me suis tournée vers le code VBA pour trouver une solution, mais étant novice en la matière je n'y arrive pas.

Est-ce que quelqu'un pourrait me fournir le code approprié s'il vous plait ?

j'imagine qu'il me faudrait quelque chose du genre ?

1) rechercher le texte souhaité

2) Si le texte = "le texte recherché" donc ca modifie la taille de la police.

Merci

Bonjour

Sub taille()
If Range("B2") = "texterecherché" Then
    Range("B2").Font.Size = 14
End If
End Sub

14 ou ce que tu veux

Bye

bonjour,

une proposition. sélectionner la plage et lancer la macro via alt-F8

Sub aargh()
    texte = "test"    'texte à rechercher
    For Each c In Selection
        If c.Value Like "*" & texte & "*" Then
            c.Font.Size = 16    'si trouvé
        Else
            c.Font.Size = 11    'si non trouvé
        End If
    Next c
End Sub

Bonjour et bienvenue sur le forum

Bonjour à tous

Un essai à tester.

Bye !

276classeur1-v1.xlsx (15.45 Ko)

Merci pour réponses rapides

Le code de Patty5046 fonctionne bien

Sub taille()

If Range("B2") = "texterecherché" Then

Range("B2").Font.Size = 14

End If

End Sub

Néanmoins, je crois que je n'ai pas été assez précis et je remarque que cela ne répond du coup pas entièrement à mon problème.

Est-il possible que le code enregistré ne passe pas par un lancement de macro, mais dès que la réponse de la cellule change ?

En fait, la réponse dans ma cellule est dépendante d'une liste déroulante et j'aimerais que :

si la réponse = un nombre => pas de changement

si la réponse = un certain texte => changement de taille

Voici un exemple :

en A1 j'ai une liste déroulante avec plusieurs noms de commune

en fonction de la commune choisie ma formule en A2 va m'indiquer soit un nombre, soit plusieurs textes différents

en fonction du texte qui apparait en B2 il faudrait que la taille de la police varie.

et le tout sans bouton, mais automatiquement lors du changement de nom de la commune.

Merci.

Bonjour à tous

Nouvel essai

Bye !

166classeur1-v2.xlsm (22.32 Ko)

Merci GMB,

On se rapproche de la solution, mais c'est pas encore tout à fait ça.

Dans mon cas la liste déroulante de commune en A1 ne sert qu'a modifier la réponse de la cellule B4 qui doit apparaître en taille différente.

Donc finalement la liste déroulante n'est pas la variable qui modifie la taille.

Dès lors, c'est comme si dans le code que tu m'as proposé le "target.adress" et le "range" était la même cellule.

Sauf que ça marche pas en mettant la référence à la même cellule.

y a-t-il une solution ou faudrait-il que je fasse apparaître la solution sur une autre feuille pour y faire référence avec la formule que tu m'as proposé ?

y a-t-il une solution

Il y a certainement une solution mais si je comprends bien, le déclencheur de la macro qui va modifier la taille de la police de B4 (dans l'exemple) se trouve dans ta macro.

Or, tu ne l'as pas mis à disposition. Il te faut à mon avis y l'intéger.

OK ?

Bye !

Merci beaucoup,

je vais tester cela ce week-end et je reviendrai vers vous si j'ai encore des problèmes.

Bon Week-end

Bonjour,

Merci encore pour le code suivant envoyé vendredi passé.

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$C$14" Then
        If Target = "Paris" Then
            Range("E14").Font.Size = 10
        ElseIf Target = "Marseille" Then
            Range("E14").Font.Size = 12
        ElseIf Target = "Toulouse" Then
             Range("E14").Font.Size = 14
        ElseIf Target = "Bordeaux" Then
            Range("E14").Font.Size = 16
        ElseIf Target = "Montpellier" Then
            Range("E14").Font.Size = 18
        ElseIf Target = "Paris" Then
            Range("E14").Font.Size = 120
        End If
    End If

End Sub

Je l'ai testé et il fonctionne bien avec une liste déroulante ou si l'on inscrit la réponse directement dans la cellule C14, mais si la cellule C14 est une formule qui inscrit le texte "Paris" ou "Marseille" ou "Toulouse" etc. en fonction d'une autre liste déroulante qui se trouve dans une autre cellule, cela ne fonctionne plus automatiquement. Est-ce que quelqu'un aurait une idée de correction du code ?

Merci d'avance

Bonjour

mais si la cellule C14 est une formule qui inscrit le texte "Paris" ou "Marseille"....

Joins un tel fichier en expliquant ce que tu voudrais avoir comme résultat....

Bye !

Bonjour,

Joins un tel fichier en expliquant ce que tu voudrais avoir comme résultat....

Bye !

J'ai repris le fichier que tu m'avais envoyé et y insérer ma formule adaptée pour expliquer ce que j'aimerais.

36classeur1-v2.xlsm (17.54 Ko)

J'aimerais que le texte en B4 soit modifié en fonction de la cellule B1 (qui est dépendante du nom inscrit dans la liste déroulante) et non en fonction de la cellule A1 comme c'est le cas actuellement. Si je remplace B1 par A1 dans le code, ainsi que les nomes de ville par les textes apparaissant en B1, cela ne fonctionne pas.

Merci.

Bonjour

Désolé mais je ne vois pas.

Bye !

Bonjour

Je t'ai modifié la taille du texte en B2, et laissé la taille précédente si numérique.

Adapte la taille en fonction de ce que tu veux, ainsi que le texte recherché et aussi en fonction de ton fichier

La macro est en Feuil1

82taille-police.xlsm (18.95 Ko)

Bye

Bonjour

Je t'ai modifié la taille du texte en B2, et laissé la taille précédente si numérique.

Adapte la taille en fonction de ce que tu veux, ainsi que le texte recherché et aussi en fonction de ton fichier

La macro est en Feuil1

Taille_police.xlsm

Bye

Merci beaucoup, c'est exactement ce que je cherchais! Merci également à GMB pour le temps que tu as pris

Bonjour,

J'avais ouvert ce topic il y a quelque mois et mon problème avait été résolu, mais j'ai modifié quelques paramètres de mon fichier et ça ne fonctionne plus désormais

Premièrement, est-ce que j'aurais du ouvrir un nouveau topic ou est-ce que c'est mieux de reprendre dans celui-ci ?

Voici le code utilisé anciennement :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$4" Then
    If IsNumeric(Range("F246").Value) Then
        Exit Sub
    End If
    If Range("F246") = "voir norme" Then
        Range("F246").Font.Size = 10
    ElseIf Range("F246") = "remplir manuellement" Then
        Range("F246").Font.Size = 8
    Else
        Range("F246").Font.Size = 10
    End If

End If

End Sub

Ce code fonctionnait très bien, car l'ensemble de mon fichier se trouvait sur la même feuille, sauf que désormais la référence mise en Target Adress se trouve sur une autre feuille. J'ai essayé plusieurs codes pour y faire référence, mais rien n'y fait.

Ça ne doit certainement pas être trop compliqué, mais je n'y arrive pas...

Est-ce que quelqu'un pourrait m'aider svp ?

Bonjour

supprimer le code précédent et ajouter le code suivant dans le module du classeur (thisworkbook)

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Address = "$C$4" Then
        If IsNumeric(Range("F246").Value) Then
            Exit Sub
        End If
        If Range("F246") = "voir norme" Then
            Range("F246").Font.Size = 10
        ElseIf Range("F246") = "remplir manuellement" Then
            Range("F246").Font.Size = 8
        Else
            Range("F246").Font.Size = 10
        End If
    End If
End Sub

Bonjour

supprimer le code précédent et ajouter le code suivant dans le module du classeur (thisworkbook)

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Address = "$C$4" Then
        If IsNumeric(Range("F246").Value) Then
            Exit Sub
        End If
        If Range("F246") = "voir norme" Then
            Range("F246").Font.Size = 10
        ElseIf Range("F246") = "remplir manuellement" Then
            Range("F246").Font.Size = 8
        Else
            Range("F246").Font.Size = 10
        End If
    End If
End Sub

Merci pour la réponse, mais ça ne fonctionne pas ou alors j'ai mal formulé ma demande. Pour être plus clair, j'envoie le fichier Excel en question, ça sera certainement plus simple.

J'aimerais que quand je change le nom de la Commune dans la liste déroulante de la cellule C4 se trouvant sur la feuille "titre et remarques", la cellule G6 de la feuille "stationnement" se modifie selon les paramètres ci-dessus.

Le code que j'ai mentionné fonctionnait lorsque tout le rapport se trouvait sur une seule feuille.

Merci.

Bonjour,

je n'avais pas compris ta demande

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$4" Then
        With Sheets("stationnement").Range("G6")
            If IsNumeric(.Value) Then
                Exit Sub
            End If
            If .Value = "voir norme" Then
                .Font.Size = 10
            ElseIf .Value = "remplir manuellement" Then
                .Font.Size = 8
            Else
                .Font.Size = 10
            End If
        End With
    End If
End Sub

Merci beaucoup, ça fonctionne!

Rechercher des sujets similaires à "code vba changer taille police fonction texte"