Formule pour mise en forme

papajer

XLDnaute Nouveau
Bonjour à tous.

Je souhaiterais savoir s'il existe une formule (ou autre chose) pour permettre la mise en forme d'une PARTIE d'une chaine de caractères dans une cellule contenant du texte appelé à l'aide d'une formule de recherche par exemple.

Dans mon fichier exemple, j'aimerais (entre autres) que le texte issu de la colonne C et uniquement ce mot soit souligné (ou en gras ou peu importe) dans la cellule B9.

Merci d'avance.
 

Pièces jointes

  • Classeur1.xlsx
    9.2 KB · Affichages: 67
  • Classeur1.xlsx
    9.2 KB · Affichages: 70
  • Classeur1.xlsx
    9.2 KB · Affichages: 73

Staple1600

XLDnaute Barbatruc
Re : Formule pour mise en forme

Bonjour à tous

Ça pourrait sans doute être possible en se faisant des nœuds dans la tête ;)
(mettre en gras le string, et faire une copie en tant qu'image de la cellule et substituer le contenu de la cellule par cette image. Le tout par le biais de VBA)

Mais le jeu en vaut-il vraiment la chandelle ?
 

JCGL

XLDnaute Barbatruc
Re : Formule pour mise en forme

Bonjour à tous,

D'après un code de l'ami Didier :

VB:
Option Explicit

Sub Traitement()    'd'après myDearFriend!  -  [url=http://www.mdf-xlpages.com]mon Univers Excel... : myDearFriend! Excel Pages[/url]
    Dim LaPhrase As Range, Cel As Range
    Dim LeMot As String, AdrDeb As String
    Dim NumL&


    NumL = InputBox("Choix de la ligne", "Choisir...", 2)


    'A adapter -----------------------------------
    Range("G6") = NumL
    Range("H6").Formula = _
    "=VLOOKUP(R6C7,Base,2,0)&"" ""&VLOOKUP(R6C7,Base,3,0)&"" ""&VLOOKUP(R6C7,Base,4,0)"
    Set LaPhrase = Feuil1.Range("H6")
    LaPhrase = LaPhrase.Value


    Range("G1").Formula = "=MID(R[5]C[1],LEN(VLOOKUP(R6C7,Base,2,0))+2,LEN(VLOOKUP(R6C7,Base,3,0)))"
    LeMot = Feuil1.Range("G1")
    Feuil1.Range("G1") = Feuil1.Range("G1").Value
    ' --------------------------------------------
    Application.ScreenUpdating = False


    With LaPhrase
        .Font.ColorIndex = 0
        .Font.Bold = False


        Set Cel = .Find(LeMot, LookAt:=xlPart)
        If Not Cel Is Nothing Then
            AdrDeb = Cel.Address
            Do
                Modif Cel, LeMot
                Set Cel = .FindNext(Cel)
            Loop While Not Cel Is Nothing And AdrDeb <> Cel.Address
        End If
    End With
    Range("G1").ClearContents
    Application.ScreenUpdating = True
End Sub


Private Sub Modif(ByRef Cel As Range, LeMot)
    Dim T As String
    Dim Pos As Integer
    T = Cel.Text
    Do
        'Pos = InStr(Pos + 1, T, LeMot) 'sensible à la casse
        Pos = InStr(Pos + 1, T, LeMot, vbTextCompare)    ' insensible à la casse
        If Pos > 0 Then
            With Cel.Characters(Start:=Pos, Length:=Len(LeMot)).Font
                .FontStyle = "Gras"
                .ColorIndex = 3     'rouge
            End With
        End If
    Loop Until Pos = 0
End Sub

A+ à tous
 

Pièces jointes

  • JC MeFC Partielle.xlsm
    37.1 KB · Affichages: 36
Dernière édition:

papajer

XLDnaute Nouveau
Re : Formule pour mise en forme

Bonjour et bonne année à tous !

Merci Staple1600 pour ta réponse, le jeu n'en vaut pas la chandelle, clairement.
J'ai solutionné mon problème en mettant le mot important entre crochets.
Ça reste assez limite au niveau de la visibilité mais c'est mieux que rien. (et de toute façon, c'est pas des gosses de 9 ans qui vont venir m'emm... avec ça... !)

Incroyable JCGL, c'est impressionnant !
Il faudra que je me penche sur ce fichier plus tard car demain, c'est la rentrée et donc, je n'aurai plus le temps de faire des fichiers excel :( .

Cela semble intéressant, je vais essayer de l'adapter, voir si on peut enlever la boite de dialogue et appliquer la macro à plusieurs lignes. En tout cas c'est prometteur.

Merci encore à tous ceux qui m'ont répondu.
Jer
 

papajer

XLDnaute Nouveau
Re : Formule pour mise en forme

Bonjour à tous

Je me permets de remonter un peu le topic car j'ai un tout petit peu de temps libre et j'ai eu une idée pour contourner le problème.

Serait-il possible à l'aide d'une macro de mettre en gras (ou de souligner on s'en fiche) une partie de la formule (donc comme ce qui était demandé initialement) MAIS avec en plus l'information du nombre de caractère.

J'explique :

En gros, le fichier (joint dans ce post) contient plusieurs colonnes,

En A, des nombres de 1 à n (pour la fonction recherchev)
En B, le début des phrases
En C, la partie de la phrase à mettre en forme
En D, la fin de la phrase

Puis, en E et en F, des nombres qui représentent des places dans la chaine de caractère finale.
Par exemple 5 et 10 voudrait dire que le texte doit être en gras du 5ème au 10ème caractère de la chaine.

Est-ce que avec cette information en plus, la macro n'est pas plus simple à faire ?
En fait, la macro effectuerait cela :

Je concatène les colonnes A, B et C ;
J'applique la mise en forme "normal" aux 5 - 1 premiers caractères ;
J'applique la mise en forme "souligné" aux 10 - 5 caractères suivants ;
J'applique la mise en forme "normal" aux (nbre total de caractères) - 10 caractères suivants.

Voilà, ce ne serait pas plus simple comme cela ?
 

Pièces jointes

  • Classeur1.xlsx
    10.5 KB · Affichages: 25
  • Classeur1.xlsx
    10.5 KB · Affichages: 25
  • Classeur1.xlsx
    10.5 KB · Affichages: 26

papajer

XLDnaute Nouveau
Re : Formule pour mise en forme

Bonsoir JCGL

Merci pour votre aide,
Cette fois-ci, la macro à l'air beaucoup plus compréhensible.

Je suis désolé mais je devrai m'y pencher ce week-end par manque de temps.
(J'espère que vous aurez un petit peu de temps à m'accorder pour m'expliquer le code si je bute)
Je vous tiens au courant mais a priori, cela convient parfaitement.

Il faudra que j'adapte la macro car les phrases s'affichent dans une autre feuille (celle de l'évaluation)
Les nombreux items, de tous les exercices sont dans une feuille à part avec des listes.
Un bouton correspondant au numéro de l'exercice exécute la macro qui "prépare" l'exercice.
Il me suffira d'appeler celle-ci pour mettre les verbes (ou les sujets ou les compléments ou les chiffres ou quoi que ce soit) en rouge.

Cela m'ouvre de nouvelles perspectives d'exercices et de modalités. (Les élèves vous remercient pour cela !)

Merci beaucoup.
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz