sans VBA ... impossible !Bonjour à tous,
Je n'arrive pas à trouver sur ce forum ou ailleurs comment
colorier simplement (sans VBA macro) un mot dans une phrase.
par exemple chocolat en rouge, vacances en vert etc...
merci
Une formule classique, non...Bonsour®
sans VBA ... impossible !
une formule renvoie une valeur mais ne change pas, le style ou aspect de la donnée.
Sub test()
Range("A1:A4") = Application.Transpose(Array(1, 2, 3, 4))
[A6].Formula = "=UDF_SUM(A1:A4)"
End Sub
Public Function UDF_SUM(v As Variant)
'Jon Peltier
If TypeName(v) = "Range" Then
Debug.Print v.Address
v.Font.Color = vbRed ' not supposed to, but does
v = v.Value
End If
Dim i As Long, j As Long
For i = LBound(v, 1) To UBound(v, 1)
For j = LBound(v, 2) To UBound(v, 2)
UDF_SUM = UDF_SUM + v(i, j)
Next
Next
Application.Caller.Font.Color = vbBlue ' not supposed to, but does
End Function
Bah voyez le fichier joint et cette macro :De fait, cette demande qui me parait insurmontable même en VBA
Sub Colorier()
Dim P As Range, c1 As Range, coul&, L%, c2 As Range, i%, j%
Application.ScreenUpdating = False
Set P = [A1].CurrentRegion.Offset(1) 'évite l'en-tête
P.Font.ColorIndex = xlAutomatic 'RAZ
P.Font.Bold = False 'RAZ
For Each c1 In [D2:D4]
coul = c1.Characters(1, 1).Font.Color
L = Len(c1)
For Each c2 In P
i = 1
Do
j = InStr(i, c2, c1)
If j Then
c2.Characters(j, L).Font.Color = coul
c2.Characters(j, L).Font.Bold = True 'gras
i = j + L
End If
Loop While j
Next c2, c1
End Sub
Bah voyez le fichier joint et cette macro :
Bonsoir tous, Job
Désolé il n'a pas été précisé par Foie4 qu'il y avait une colonne D avec les mots à colorier ( d'ailleurs je n'en vois pas l'utilité pour cette demande) !
En effet, Il est plus facile de colorier à la main la colonne A que d'inscrire les mots dans une autre colonne !
De fait, avec une seconde colonne representant les mots coloriés, VBA évidemment peut faire le nécessaire comme tu l'as fait !
Bonne soirée à tous !
un petit plus pour actualiser la plage référence en cas d'ajoutBah voyez le fichier joint et cette macro :
'****************************
'-----remplacer l'instruction ci-dessous
'For Each c1 In [D2:D4]
' par :
For Each c1 In [D2].CurrentRegion
'********************
Tu crois vraiment ce que tu dis JBARBE ??? Alors sur mon fichier copie A2:A10 sur A11:A9001 et fais le boulot à la mano !En effet, Il est plus facile de colorier à la main la colonne A que d'inscrire les mots dans une autre colonne !
Je veux parler de la colonne D dans ton fichier qui doit être impérativement renseignée pour ta macro ( on ne peut faire autrement) qui, entre parenthèse est super !Tu crois vraiment ce que tu dis JBARBE ??? Alors sur mon fichier copie A2:A10 sur A11:A9001 et fais le boulot à la mano !
Chez moi la macro s'exécute en 1,2 seconde.