XL 2019 modifier format police mot seul dans plusieurs cellules EXCEL

MANTE

XLDnaute Junior
Bonjour, sur EXCEL 2019 (WINDOWS 10) je veux modifier le format de police de mots seulement dans plusieurs cellules chaque fois que celui-ci apparaît comme ça se fait facilement sur WORD. Par exemple mettre seulement le mot « liberté» en gras vert chaque fois qu’il apparaît dans une cellule d'une feuille EXCEL, (et non mettre le texte de la cellule tout entier en gras vert comme me le fait EXCEL).
J’ai fouillé dans les forums, trouvé cette macro que j’ai adaptée ci-dessous. Ça marche bien une fois, j’obtiens ce que je veux, tous mes « liberté » sont en gras vert, mais impossible d’enregistrer le fichier EXCEL sous xlsm prenant en charge les macros. J’ai un tas de refus. Dommage parce que cette macro me rends de gros services.
Je suis toujours aussi nul en VBA, alors si vous pouvez me modifier cette macro pour que je puisse enregistrer normalement sous xlsm …. Merci.



Sub libertéVert()

Dim Plage As Range, Cel As Range
Dim LeMot As String, AdrDeb As String

' --------------------------------------------
'A adapter en fonction du mot voulu Et de la Plage voulue
Set Plage = Sheets("Feuil1").Range("A1:Z2000")
LeMot = "liberté"
' --------------------------------------------

With Plage
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
End Sub

Private Sub Modif(ByRef Cel As Range, LeMot)
Dim T As String
Dim Pos As Integer
T = Cel.Text
Do
'Respecte la casse Majuscule/Minuscule -------
‘Pos = InStr(Pos + 1, T, LeMot)
' Ne tient pas compte des Majuscule/Minuscule-
Pos = InStr(Pos + 1, T, LeMot, vbTextCompare)
' --------------------------------------------
If Pos > 0 Then
With Cel.Characters(Start:=Pos, Length:=Len(LeMot)).Font
.FontStyle = "Gras"
.ColorIndex = 4 'VERT
End With
End If
Loop Until Pos = 0
End Sub
 

Pièces jointes

  • TO INT Compilation Synthèse2009201838.xlsm
    907.2 KB · Affichages: 93
Solution
Bonjour Patrick, MANTE,
Image 1.jpg

Franchement, c'est formidable !!!!!!! MAIS :

1) N'oublie pas que le fichier joint par MANTE n'est probablement pas son fichier réel ;
dans son fichier réel, il y sûrement beaucoup moins de cellules vides ; et même, si ça
se trouve, toutes les cellules sont « occupées » (ou ça arrivera dans un temps proche) ;
quel sera alors le temps d'exécution de ta macro ?

2) Si le fichier joint est le fichier réel, ou très similaire en taux d'occupation des cellules,
alors là oui, ta macro est vraiment très intéressante !!! mais à supposer que les cellules
seront toutes remplies (à plus ou moins long terme), que se passera-t-il ? est-ce que
le temps d'exécution de ta macro ne va...

patricktoulon

XLDnaute Barbatruc
re
le code est dans l'userform il sert de module tu n'a pas a y toucher

la sub qui doit etre lancée c'est la "formatMotsInCell"

les mots sont dans la chaine "mots"(chaque mot séparé par une virgule)
les couleurs sont dans l'array "couleurs"

la couleur(0) correspond au mots(0)
la couleur(1) correspond au mots(1)
etc...

les couleurs peuvent être exprimées de tout les manières
en long
en color index de 0 a 56 exemple pour le rouge :2
en hex :exemple pour le rouge :&H000000FF
en rgb:exemple pour le rouge :rgb(255,0,0)

tu n'a que ces deux variables a toucher si tu veux ajouter, enlever des motset faire coinsider les couleurs
le reste mon userform que tu verra pas se charge de tout
les mots formatés s'affichent en bas dans la barre de statut excel


c'est simple non?
 

MANTE

XLDnaute Junior
Merci mais je ne vois rien du tout. Développeur /Visualiser le code rien : fenêtre déclaration vide, VBA, pareil. Finalement en cliquant sur macro/pas à pas, je tombe sur :
Option Explicit
Sub formatMotsInCell()
Dim T0#, mots, couleurs
T0 = Timer
Application.ScreenUpdating = False
mots = "liberté,obligations,femme,dignité,enfant,économique,social,santé,droit,famille,éducation,déclaration"
mots = Split(mots, ",")
couleurs = Array(vbGreen, vbCyan, vbRed, vbMagenta, RGB(0, 150, 255), 25, 41, 33, 7, 22, 42, 52)
htmlF.recall [D2:BL231], mots, couleurs

MsgBox Format(Timer - T0, "#0.00")
End Sub

Sub RAZFORMAT()
With [D2:BL231]
.Font.Color = vbBlack
.Font.Bold = False
Application.StatusBar = ""
End With
End Sub
Je suppose que c'est ça. MAis si je clique sur exécuter, il n ses passe en rien dans ta cellule D5 témoin; Qu'est que j'ai mal fait ?
 

patricktoulon

XLDnaute Barbatruc
bonjour
bon j'ai regardé d'un peu plus près ton fichier à l'origine
il pesait 9026 kilos pour moins de 300 cellules pleines
je trouvait çà deja pas normal

je pense avoir compris
tu importe du html dans les cellules et tu fait pas gaffe au image et autres objects qui sont dans les pages web et ils se retrouve sur le sheets parfois même transparent impossible de les voir
il y en a 9!!!! que je n'arrive pas a supprimer va savoir pourquoi
bref ton fichier fait 124 kilos c'est déjà plus raisonnable

tu n'a qu'a appuyer sur le bouton
start
regarde la barre de status (tu vois l’évolution dans la barre de status 5 seconde après "start"
j'ai tester sur 4 pc différents dont 3 versions d'excel différents et 2 version Windows différents
22 secondes pour 12 mots et 12 couleurs
 

Pièces jointes

  • TO INT Compilation Synthèse2009201838 V pat .xlsm
    130.4 KB · Affichages: 6

MANTE

XLDnaute Junior
Bonjour Soan finalement j'utiliserai ta macro lorsque mon tavbleau sera rempli, il y a qq chose qui Bugue avec celle de Patrick. Ci après mon autre problème si tu peux faire quelque chose :
Ma table contient les effectifs filles et garçons du cycle secondaire par région et son Chef-Lieu de Côte d’Ivoire (+ longitude et latitude de chaque Chef Lieu si besoin, utilisés avec POWER Bi où je n’ai pas mieux réussi). En utilisant la carte 3D et uniquement les champs villes (Chef Lieux) pour la localisation précise sur carte /filles/garçons, j’obtiens des histogrammes en 3 D qui sont peu lisibles. Je voudrais afficher simplement les mêmes graphiques en 2 D comme sur le graphique de la feuille mais individuellement sur chaque chef lieu géolocalisé (et ultérieurement mettre en étiquette le nom des régions avec chaque graphique).
En clair je veux surtout afficher sur la carte des graphiques en 2D et pas en 3D.
Merci à celles ou ceux qui pourront m’aider.
bonjour
bon j'ai regardé d'un peu plus près ton fichier à l'origine
il pesait 9026 kilos pour moins de 300 cellules pleines
je trouvait çà deja pas normal

je pense avoir compris
tu importe du html dans les cellules et tu fait pas gaffe au image et autres objects qui sont dans les pages web et ils se retrouve sur le sheets parfois même transparent impossible de les voir
il y en a 9!!!! que je n'arrive pas a supprimer va savoir pourquoi
bref ton fichier fait 124 kilos c'est déjà plus raisonnable

tu n'a qu'a appuyer sur le bouton
start
regarde la barre de status (tu vois l’évolution dans la barre de status 5 seconde après "start"
j'ai tester sur 4 pc différents dont 3 versions d'excel différents et 2 version Windows différents
22 secondes pour 12 mots et 12 couleurs
Merci Patrick de tous tes efforts et essais sur d'autres machines, mais ça me fait toujours la même choses : j'ouvre le fichier que tu viens de renvoyer, je clique sur START, il ne ses passe rien, cellule témoin y compris, et EXCEL se ferme au bout de 5 seconde. Si je l'enregistre sous un autre nom pour mon dossier et ne pas mélanger avec les autres qui deviennent nombreux : même chose, EXCEL se ferme au bout de 5 secondes et ouvre même un fichier vierge sans que je lui demande. C'est probablement chez moi qu'il doit y avoir un pb, mais je ne sais pas lequel. Si tu as une idée ....
 

Pièces jointes

  • 200928 xlsx.xlsx
    239.4 KB · Affichages: 6

MANTE

XLDnaute Junior
M....! ça ne marche plus ! Je décris (Ne pas oublier que je suis nul en VBA et que je tâtonne plus qu'autre chose) je fais Développeur/Macros/Exécuter j'exécute formatMotsInCell : fermeture d'EXCEL, et avec les autres macro il ne se passe rien.
Le pas à pas me mets Sub formatMotsInCell () en surbrillance jaune, puis me dit qu'il est en mode arrêt et qu'il ne peut pas exécuter.
 

Discussions similaires

Réponses
2
Affichages
129

Statistiques des forums

Discussions
311 733
Messages
2 082 011
Membres
101 866
dernier inscrit
XFPRO