Si cellule contient mot MeF que sur mot
Bonjour,
Je voulais savoir si il est possible de faire une mise en forme conditionnelle (ou par format cellule) que sur un mot.
Je m'explique:
si la cellule A1 contient "4°C" (avec du texte avant et après) ne colorier et souligner que "4°C" et non tout le texte.
en sachant que dans la cellule A1 c'est une formule.
ex: =SI(OU($B$1="ZZZ",$G$3="Inactif"),"",SI($R$1="français",SI(OU(ESTVIDE('propriétés tests'!$J$3),'propriétés tests'!$J$3=" "),"AUCUNE",
'propriétés tests'!$J$3),SI(OU(ESTVIDE('propriétés tests'!$K$3),'propriétés tests'!$K$3=" "),"NONE",'propriétés tests'!$K$3)))
ici le le texte est repris via 'propriétés tests'!$J$3.
merci d'avance pour votre aide.
Bonjour,
Nouveau aussi j'ai essayé de te trouver un début de réponse.
Tu trouveras un fichier joint en espérant que cela tend vers ce que tu cherche.
Pour résoudre ton problème je suis passé par une macro et je m'excuse déjà auprès des pro lol qui diront "Bouh enlèves les Select!!" (je débute)
Tu vera que la colonne "A" de l'exemple est une formule et que les colonnes après sont pleines et bien sûr, le code est à adapter.
Sub MeF()
Worksheets("Feuil1").Select
Application.ScreenUpdating = False
Set Plage = Range("A6:A24")
For Each x In Plage
x.Select
If x = "4°C" Then Selection.Font.ColorIndex = 18
Next x
End Sub
Cdlt
Tal
Bonjour à vous,
Pas grave Thal, on a tous débuté mais effectivement, c'est une piste!
Et surtout, pense à utiliser les balises pour mettre en forme le code quand tu écris ton poste!
Par contre, je ne pense pas que ton
If x = "4°C"fonctionne...
Je m'explique : en VBA, la manipulation de texte, c'est pas la fête, il y a des fonctions qui trouve la position des caractères et d'autres qui remplacent le texte, mais rien de beaucoup plus magique...
Donc il faut fouiner de côté là, mais moi le doute que j'ai, c'est comment appliqué cette mise en forme juste sur une partie du mot, est-ce que l'enregistreur de macro fait ça?
Et aussi est-ce que le fait que ça soit une formule laisse bien manipuler le résultat comme un texte, ça ça sera à voir avec les fonctions....
Je repasserait plus tard pour voir si vous avez trouver comment faire (j'ai du taff aussi!)
Salut ReuK,
Effectivement j'ai loupé une partie de la demande...
Sinon j'ai une première correction à apporter suivant le fait qu'il y ai des caractères avant/après la chaine 4°C recherchée :
Sub MeF2()
Worksheets("Feuil1").Select
Application.ScreenUpdating = False
Set Plage = Range("A6:A24")
For Each x In Plage
x.Select
If x.Value Like "*4°C*" Then
Selection.Font.ColorIndex = 18
End If
Next x
End Sub
Là, même si "4°C" est au milieu d'une phrase ça passe. Par contre ce sont tous les caractères de la phrase qui changent de couleur.
Pas encore trouvé l'astuce qui permet d'affecter une mise en forme qu'à la chaine recherché.
Bref en espérant que cela fasse avancer les choses (fichier lis à jour joint).
Cdlt,
Tal
PS : pour les balises je ne connais pas lol
Sub MeF2()
Worksheets("Feuil1").Select 'inutile (très probablement! de toute façons, un Activate devrait suffire pour bien préciser sur quel feuille tu veux travailler)
Application.ScreenUpdating = False 'voir commentaire plus bas
Set Plage = Range("A6:A24")
For Each x In Plage
x.Select 'inutile (vraiment! enfin pour utiliser la suite du code, on mettra un activate)
If x.Value Like "*4°C*" Then 'pour utiliser le MeF d'une partie de la cellule, il faudra trouver les "coordonnées" du texte à changer
'On cherchera donc ça ici, avec les fonctions de textes dont je vous ai parlé plus tôt
Selection.Font.ColorIndex = 18
'On met la MeF ici et zou le tour est joué! (à vérifier!)
End If
Next x
Application.ScreenUpdating = True 'Si tu l'arrêtes, il faut le relancer! En général, je le met direct après les Sub et avant End Sub!
End SubDe mon côté avec l'enregistreur de macro (quel bel outil!) j'ai sorti ça :
With ActiveCell.Characters(Start:=1, Length:=7).Font
.Name = "Calibri"
.FontStyle = "Regular"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.Color = -16776961
.TintAndShade = 0
.ThemeFont = xlThemeFontMinor
End WithA adapter mais on se rapproche bien!
Donc pas de Select (honnêtement je m'en sers vraiment quasiment jamais... sauf dans les sous programmes ou tu travailles sur une sélection pour le réutiliser plusieurs fois!), un simple Activate dans ta boucle et ça sera pas mal je pense!
Et pour les balises "code", c'est au dessus de la fenêtre d'édition des messages; comme pour mettre en gras; changer de taille de police et autre! Et comme tu vois, c'est pratique!
Bonjour
Taliésine a écrit :PS : pour les balises je ne connais pas lol
Elles sont ici
Taliésine a écrit :Pas encore trouvé l'astuce qui permet d'affecter une mise en forme qu'à la chaine recherché.
Si cela peut t'aider
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'http://forum.excel-pratique.com/excel/certains-mot-change-de-couleur-automatiquement-t21465.html?sid=0489d617b01d63b170d3bf94d93c4bad
If Target.Count > 1 Then Exit Sub
If LCase(Target.Value) Like "*lemot*" Then
With Target.Characters(InStr(Target, "lemot"), 5).Font
.ColorIndex = 3
.Bold = True
End With
End If
End SubBonsoir,
Pour ma part je prends bonne note de toutes les infos de ce post (en bon débutant que je suis
En revanche je laisse à Muriel86 le soin de valider définitivement ce post étant donné qu'elle en est l'initiatrice.
Bonne soirée à tous.
Tal