Résolu XL 2019 modifier format police mot seul dans plusieurs cellules EXCEL

MANTE

XLDnaute Nouveau
Supporter XLD
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
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

chris

XLDnaute Barbatruc
Bonjour

Pas de problème d'enregistrement pour ma part mais un temps de traitement important vu la taille de la plage et le contenu.
 

MANTE

XLDnaute Nouveau
Supporter XLD
Merci, mais je ne reçois que des messages d'erreur dès que je veux enregistrer en xlsm, je suppose qu'il y a un bug dans le code. L'avez-vous exécuté ? Je n'ai fait que le copier coller en adaptant à mon mot dont je souhaite modifier le format de police.
Chez moi c'est l'exécution de la macro qui est longue pcq j'ai beaucoup de texte dans les cellules (mais je trouve ça beaucoup plus pratique que les tableaux word).
Je suis salement embêté pcq je ne connais presque rien de VBA, que j'ai besoin de cette macro, et que je vois que ça ne marche qu'à moitié seulement avec impossibilité d'enregistrer donc de continuer. Soyez sympa d'essayer de me trouver une solution. Merci.
 

soan

XLDnaute Accro
Bonjour MANTE, chris,

Tu as écrit :
« mais impossible d’enregistrer le fichier EXCEL sous xlsm prenant en charge les macros »
et : « je ne reçois que des messages d'erreur dès que je veux enregistrer en xlsm ».

Je ne comprends vraiment pas ces 2 phrases, car le fichier que tu as joint est pourtant
bien un fichier .xlsm ; c'est donc la preuve que tu as pu enregistrer ton fichier en tant
que "Classeur Excel (prenant en charge les macros)" ; serait-ce qu'un miracle se serait
produit ? si oui, va vite à l'église pour brûler un cierge en l'honneur de cet événement
extraordinaire, et prépare-toi à ce que ta jolie maison devienne un lieu de pèlerinage
aussi célèbre que celui de Lourdes. :D :p


-------------------------------------------------------------------------------------------------

chris a écrit : « Pas de problème d'enregistrement, mais un temps de traitement
important vu la taille de la plage et le contenu. »

Je confirme pareil : je peux enregistrer sans aucun problème, et le temps d'exécution
de la macro est vraiment très, très long ! :confused: (c'est normal, vu la taille de la plage à
traiter, et les nombreuses occurrences du mot "liberté" à colorer en vert)


-------------------------------------------------------------------------------------------------

Je te retourne ci-dessous ton fichier modifié, avec la macro optimisée.

* fais Ctrl e : ça lance la macro libertéVert() ; ça, c'est très facile à faire ; y'a aucun
problème de c'côté-là ! :)

* maintenant, voici le plus dur à faire : tu vas devoir patienter un bon moment,
disons, montre en main, environ 2 bonnes grosses minutes ; tu crois que ça
ira quand même ? alors pendant ce long temps d'attente, je te propose de
regarder le joli texte affiché dans la barre de titre, juste à droite du nom de
fichier : "(Ne répond pas)" ; bon, en fait, t'inquiète pas : Excel n'est pas bloqué,
et continue bien gentiment à exécuter la macro, en arrière-plan ; si tu es trop
las d'attendre, profites-en pour aller boire un café et papoter un peu avec tes
collègues de bureau, mais essaie quand même de revenir avant que 2 longues
minutes ne se soient écoulées ; sinon, ton chef risque de râler après toi, et je ne
voudrais surtout pas que tu sois renvoyé à cause de moi ! ... comment ? c'est
toi le chef de la boîte ? ah, ben ok : tu pourras te virer toi-même si tu traînes
trop longtemps près de la machine à café
. ;) :p

... environ 2 bonnes grosses minutes plus tard :

Image.jpg

ah, ben oui, hein ? fallait bien ce temps-là pour traiter la plage D2:BL231 !

* détection automatique de la dernière ligne utilisée, selon la colonne A
* détection automatique de la dernière colonne utilisée, selon la ligne 1

(tu n'as donc pas besoin d'indiquer, dans le code VBA, quelle est la plage à traiter)

Les temps ne sont pas toujours les mêmes ; par exemple, j'ai eu 1,9 mn et 1,85 mn ;

mais bon, entre amis, on ne va pas chipoter pour quelques poignées de secondes
en plus ou en moins, n'est-ce pas ? ;)

Et puis, je dois t'avouer quelque chose : j'ai seulement Windows 7 et Excel 2007 ;
alors que toi, tu as Windows 10 et Excel 2019 ; en plus, ma RAM est de seulement
8 Go, et j'ai un vieux processeur poussif Intel Core i5-3450 à 3.10 GHz.

Alors il se pourrait que ce soit un peu plus rapide sur ton PC ; quel dommage, tout de
même ! tu auras moins de temps pour flirter avec la belle et séduisante secrétaire de
l'étage ! faudra faire avec... :p (non, pas ces choses-là, hein ? censuré !)


soan
 

Fichiers joints

MANTE

XLDnaute Nouveau
Supporter XLD
Un grand merci à vous tous de vos réponses, de vous être penchés sur mon problème (je vais en soumettre un autre relatifs aux graphiques sur carte), corrections, et aimables allusions aux miracles, au suggestions pour utiliser le temps d'enregistrement effectivement long.
Je finis par enregistrer mais au prix toujours de messages d'erreur, qui me disent que mon fichier est récupéré pcq endommagé, ou autres avatars .... Amicalement.
 

soan

XLDnaute Accro
@MANTE

Tu as écrit : « Je finis par enregistrer mais au prix toujours de messages d'erreur,
qui me disent que mon fichier est récupéré pcq endommagé, ou autres avatars .... »


Ces 3 liens t'aideront peut-être :

Réparation d'un classeur endommagé

Réparer un classeur endommagé

Réparer fichier excel endommagé

----------------------------------------------------------------------------------------

Si ça n'a pas marché :

Essaye : menu Fichier, Options Excel, Ressources ; à droite, clique sur le bouton
« Diagnostiquer » ; peut-être que ça va détecter des erreurs et les réparer ?

À tout hasard, au cas où c'est dû à un virus, fais une analyse complète de ton
PC avec ton antivirus ; attention : les antivirus bas de gamme et / ou gratuits
ne sont pas toujours suffisamment efficaces.

Si tu enregistres sur une clé USB, c'est peut-être ta clé USB qui est défectueuse ?
si c'est sur ton disque dur (SSD ou non) que tu enregistres, peut-être qu'il est
défectueux, et qu'il faut le changer ?

----------------------------------------------------------------------------------------

Je mets ci-dessous le code VBA du fichier de mon post #4 :
VB:
Option Explicit

Sub libertéVert()
  Dim Tbl, nbl&, nbc%, chn$, mot$, lng%, p%, k&, t0&, lig&, col%
  nbl = Cells(Rows.Count, 1).End(3).Row - 1
  nbc = Cells(1, Columns.Count).End(1).Column - 3
  Tbl = [D2].Resize(nbl, nbc): Application.ScreenUpdating = 0
  mot = "liberté": lng = Len(mot): t0 = Timer
  For lig = 1 To nbl
    For col = 1 To nbc
      chn = Tbl(lig, col): p = 1 - lng
      Do
        p = InStr(p + lng, chn, mot, 1): If p = 0 Then Exit Do
        With Cells(lig + 1, col + 3).Characters(p, lng).Font
          .Bold = -1: .ColorIndex = 4 'vert
        End With
        k = k + 1
      Loop
    Next col
  Next lig
  MsgBox "Temps : " & Round((Timer - t0) / 60, 2) _
    & " mn  ;  " & k & " mot(s) coloré(s)"
End Sub
soan
 

MANTE

XLDnaute Nouveau
Supporter XLD
Merci Soan, je viens de lancer mon antivirus (ESET) qui tourne encore. Pressé d'utiliser ta macro je l'ai adaptée avec "éducationGrasVert" en remplaçant le mot liberté et en l'appelant sub libertéGrasVert(). Je l'ai insérée dasn un module (peut-être ne fallait-il pas, ... à la suite de ta précédente aurait été préférable ?). Au bout 6 mn environ une fenêtre me dit que le temps est de5,84 mn pour 201 mots, ... sauf que, ça fait près de 25 mn que ça dure, que j'ai toujours le sablier et pas la main. C'est normal Docteur ?
 

MANTE

XLDnaute Nouveau
Supporter XLD
J'ai dit une bêtise, je n'avais pas cliqué sur OK. Effectivement les "éducations " apparaissent en vert sauf quelques uns toutefois, mais en gros ta macro fonctionne bien. Si je veux la renouveler avec plusieurs autres mots, qu'est ce que je fais ? je reproduis ta macro et l'adapte, et la colle chaque fois dans un nouveau module ? Autre ? Merci de to aide précieuse.!
 

soan

XLDnaute Accro
Bonjour MANTE,

Voici ton nouveau fichier. :)

Ctrl e ➯ ça met en vert tous les mots "liberté" et "éducation"

Image.jpg

Comme c'est pour plus d'un mot, j'ai enlevé ce qui était pour
indiquer le nombre de mots colorés ; et quand tu verras cette
petite fenêtre de message, tu verras aussi la feuille (dessous).

-------------------------------------------------------------------------

Dans le code VBA, il y a : LM = Array("liberté", "éducation")

Si tu veux mettre en vert 4 autres mots, par exemple
"pêche", "pomme", "poire", et "abricot" :


LM = Array("pêche", "pomme", "poire", "abricot")

Tu peux ajouter autant de mots que tu veux, mais plus il y en a,
plus le temps d'exécution sera long ! environ 2 mn par mot ➯
avec 10 mots, ça doit faire dans les 20 mn ! maint'nant c'est ok :
t'as tout l'temps pour aller papoter avec ta jolie secrétaire ! :p
(et plus si affinités... ;))


soan
 

Fichiers joints

MANTE

XLDnaute Nouveau
Supporter XLD
Merci Soan,

Donc J’ouvre ton fichier l’enregistre sous un autre nom (avec date et heure pour ne pas me mélanger) sans pb (PJ)

Je copie ta macro dans VBA

Je modifie ta macro pour les mots : femme fille garçon fémin gross allait matern, en gras rose (mon fichier étant déjà plein de rouge, bleu, vert, …)

(Ce sont des mots clés pour moi ou leur racine. Tu as du comprendre que je faisais une recherche sur les droits des femmes, enfants et minorités au travers des textes internationaux pour une consultance de formation ultérieure)


Option Explicit



Dim Tbl, nbl&, nbc%, mot$



Private Sub Job()

Dim chn$, lng%, p%, lig&, col%

lng = Len(mot)

For lig = 1 To nbl

For col = 1 To nbc

chn = Tbl(lig, col): p = 1 - lng

Do

p = InStr(p + lng, chn, mot, 1): If p = 0 Then Exit Do

With Cells(lig + 1, col + 3).Characters(p, lng).Font

.Bold = -1: .ColorIndex = 26 'rose

End With

Loop

Next col

Next lig

End Sub



Sub EnGrasRose()

Dim LM, i As Byte, t0&

nbl = Cells(Rows.Count, 1).End(3).Row - 1

nbc = Cells(1, Columns.Count).End(1).Column - 3

Tbl = [D2].Resize(nbl, nbc): Application.ScreenUpdating = 0

'LM : Liste de Mots ; à adapter !!!

LM = Array(« femme », « fille », « garçon », « fémin », « gross », « allait », « matern »)

t0 = Timer

For i = 0 To UBound(LM)

mot = LM(i): If mot <> "" Then Job

Next i

Application.ScreenUpdating = -1

MsgBox "Temps : " & Round((Timer - t0) / 60, 2) & " mn"

End Sub

Je la colle dans VBA à la suite de la tienne (il ne fallait pas ? fallait-il la mettre dans un autre module ?)

Je colle cette liste dans la cellule D2 à titre de contrôle post exécution de macro
femme fille garçon fémin gross allait matern en normal noir

J’exécute


  • Fenêtre : Nom ambigu Private Sub Job(), je supprime « job » à tout hasard et re exécute > fenêtre temps affiché> OK
  • Contrôle en D2, j’ai : femme fille garçon fémin gross allait matern > pour femme et matern, il ne se passe rien et fille garçon fémin gross allait sont en vert tel que reproduit ici, alors que je les voulais en rose (code couleur 26)
  • Mais c'est tout ce qui se passe, ces mots n'apparaissent pas colorés et gras dans les autres cellules où ils existent
Qu’est ce que j’ai fait comme mauvaise manœuvre ? En fait pour ce travail (sans secrétaire hélas), je dois cribler tous ces textes internationaux avec une cinquantaine de mots clés, et répertorier les articles qui concernent les droits des femmes enfants et minorités dans un tableau. Je le fais facilement sur les textes bruts en WORD, mais faire le même tableau sur WORD est une galère. J’ai essayé de copier coller ces textes avec les mots en couleurs souhaités dans WORD mais je ne peux pas les coller avec ce format dans les cellules EXCEL (si c’est possible dis le moi car ça résoudrait mon pb, si non appliquer ta macro pour modifier les formats de police de plusieurs mots à la fois dans EXCEL, m'arrange bien, même si ça prend du temps !)

Merci de ton aide.
 

Fichiers joints

MANTE

XLDnaute Nouveau
Supporter XLD
Merci Soan,

  • Pourquoi femme et matern restent-ils en noir non gras ? j’ai voulu vérifier si le changement prenait bien toute la table et à la dernière cellule BL231, j’ai collé la même liste de mots, re exécuté ta macro : même chose femme et matern restent en noir non gras. Pourtant ta ligne de code les mentionne bien :
LM2 = Array(" femme ", " fille ", " garçon ", " fémin ", " gross ", " allait ", " matern ")

  • Pour "liberté" et "éducation" en gras vert ça marche
  • Oui, je veux bien que tu me rajoutes une 3° couleur. « genre » et « sex » (racine de sexe, sexuel, sexiste, …) en gras rouge. Supposons que j’aie besoin d’en rajouter d’autres, suffit-il d’adapter et de rajouter ces lignes ?
'LM1 : liste de mots à mettre en vert

LM1 = Array("liberté", "éducation")

For i = 0 To UBound(LM1)

mot = LM1(i): Job 4 'vert

Next i

Merci, excuse moi d’insister lourdement mais tu me rends service là !
 

soan

XLDnaute Accro
Je suppose que les mots "femme" et "matern" qui restent en noir sont ceux
qui n'ont pas à la fois un espace à gauche et un espace après ; tu peux alors
mettre cette ligne de code à la place :

LM2 = Array("femme", " fille ", " garçon ", " fémin ", " gross ", " allait ", "matern")

Mais tu risques d'avoir d'autres « indésirables » ; c'est à toi de faire un choix entre
les deux ; je n'ai pas de solution à proposer pour que la sub devine si c'est mieux
de mettre en rose " femme " ou "femme" ; comme quoi, même en VBA, on trouve
des problèmes de féminisme.
:p:rolleyes: oh, la la !!! j'ai comme une petite intuition
que les femmes ne vont pas apprécier ce que je viens d'écrire !!! :p (vous inquiétez
pas les filles, je blague, c'est tout ! ;))


Pour la 3ème couleur, patiente un moment : j'ai un autre exercice en cours
à terminer, puis je fais ta demande juste après.

soan
 

soan

XLDnaute Accro
C'est surtout la macro qui prends son temps, lollllll ! :p

J'attendais qu'elle est fini pour mettre le résultat :

Image.jpg

Pour le code VBA :

* j'ai ajouté LM3 dans la ligne Dim :

Dim LM1, LM2, LM3, i As Byte, t0&

* puis j'ai copié/collé :
VB:
  'LM2 : liste de mots à mettre en rose
  LM2 = Array(" femme ", " fille ", " garçon ", " fémin ", " gross ", " allait ", " matern ")
  For i = 0 To UBound(LM2)
    mot = LM2(i): Job 26 'rose
  Next i
* que j'ai adapté en :
VB:
  'LM3 : liste de mots à mettre en rouge
  LM3 = Array("genre", "sex")
  For i = 0 To UBound(LM3)
    mot = LM3(i): Job 3 'rouge
  Next i
donc oui, tu as bien compris le système. :)

(mais n'oublie pas de compléter la ligne Dim)

soan
 

Fichiers joints

MANTE

XLDnaute Nouveau
Supporter XLD
Ca fonctionne merci et apparemment ça enregistre bien sous xlsm. Merci beaucoup Soan, je devrais m'en sortir avec ce que tu as fait avec cette dernière macro. Plus que le problème de "femme", (façon de parler) qui ne se mets pas à la couleur couleur voulue, alors que pour "matern" ça fonctionne maintenant.
Je vais poster un autre pb sur le forum que je t'adresserai également si ru peux y faire quelque chose. A bientôt.
 

soan

XLDnaute Accro
@MANTE

Tu as écrit : « le problème de "femme" qui ne se met pas à la couleur voulue » ;
je viens de penser à quelque chose : si c'est avec " femme ", alors c'est peut-
être parce que les espaces ne sont pas des espaces "normaux" (code Ascii 32)
mais des espaces insécables (code Ascii 160) ; dans ce cas, sur ta feuille de
calcul "Feuil1", fais tout ce qui suit :

Sélectionne D2 ; fais Ctrl h ➯ fenêtre "Rechercher et remplacer" (note que c'est
déjà sur le 2ème onglet "Remplacer")
; dans la case « Rechercher : » : appuie sur
la touche Alt, maintiens-là enfoncée, tape 0160 sur le pavé numérique, relâche
la touche Alt ; ça met un espace insécable ; dans la case "Remplacer par :", met
"@" ; clique sur le bouton "Remplacer tout" ; sur mon Excel 2007 , j'ai l'message
"Fonction non valide" ; je suppose que c'est à cause du trop grand nombre de
données ; mais ça a quand même fait le job (ou tout au moins une partie) ; clic
sur le bouton OK du message d'erreur ; puis clic sur le bouton "Fermer" de la
fenêtre "Rechercher et remplacer".

Fais Ctrl Début ➯ ça retourne en D2 ; fais Ctrl f ➯ fenêtre "Rechercher et
remplacer", mais cette fois, c'est sur le 1er onglet "Rechercher" ; dans la case
"Remplacer par :", met "@" ; clic sur le bouton "Suivant" ; ça s'est arrêté sur
C10 (tu le vois plus facilement dans la zone "Nom" de la barre de formule,
côté gauche) ; et tu vois facilement, en C10, un "@" entre "l'homme" et
"1948" ; il était là, ton espace insécable ! (ce sera à toi de voir si tu veux
le remplacer par un espace normal ou par un espace insécable, mais plus
tard) ; continuons : clic sur bouton "Suivant" ; arrêt sur C19 ; là, il y avait
2 espaces insécables en fin de cellule ; Alt v (idem que clic sur "Suivant") ;
arrêt sur B39 ; il y a : "ONU@?" ; Alt v ; C45 ; il y a là 2 "@" ; Alt v ; C46 ;
7 "@" consécutifs en début de cellule ; etc... et en C62 : oh, comme c'est
amusant ! dans la cellule, il n'y a pas de caractère "@" ; alors pourquoi donc
ça s'est arrêté sur C62 ? regarde dans la barre de formule : ils sont bien là,
tes "@" ; il y en a même 7 ; mais dans la cellule, comme c'est en police
"Symbol", ça affiche 7 signes "
" ; accessoirement, tu peux aussi remarquer
cette autre curiosité : il y a plusieurs caractères grecs dans ta cellule ; et la
traduction est dans ta barre de formule ; si tu mets la la police "Calibri",
ça redevient "normal" ; en C64 aussi, tu peux utiliser ton interprète Calibri
grec / français. ;) décidément, on rencontre de tout dans ton fichier : des
problèmes de féminisme, des interprètes de l'ONU (NATO pour les ricains) ;
y'aura quoi d'autre, après, à part des atrocités sur la torture ? (hélas !)

Bon, je te souhaite quand même bonne chance pour tes jeux de coloriage ;
si tu veux, j'ai quelques albums de coloriage ; je les ai piqués à ma p'tite
sœur ; quand elle s'en est aperçu, elle a été très fâchée : elle a déposé une
plainte contre moi, au Préfet de Paris et à l'ONU. :confused::oops:o_O:rolleyes::p


Pour ton autre problème sur le forum, j'essayerai d'y répondre si c'est
dans mes compétences (je ne sais pas tout faire, loin de là ! ;)).

NB : j'ai employé le mot "ricains", mais c'est pas de façon péjorative : j'ai juste abrégé !
perso, j'aime bien les Américains pour avoir libéré la France, mais je ne les aime pas
pour avoir envahi le Vietnam, et plusieurs autres choses vraiment pas sympa ! (c'est
un très, très gros euphémisme !) ; et pour ceux qui sont partis au Vietnam, la plupart
y ont été obligés par leur pays ; d'autres n'ont pas eu d'autre choix que de déserter :
c'était ça ou être fusillé pour insubordination ! :(


soan
 

MANTE

XLDnaute Nouveau
Supporter XLD
  • Tu es vraiment une mine d’or. Je m’en occupe dans quelques heures car là je sors d’une intervention sous anesthésie locale et je vais me mettre sous antalgique.
  • Je prépare mon autre question avec PJ.
  • PS. Pour les ricains l’ONU c’est UN (United Nations), organisation internationale crée à la fin du 2° conflit mondial, à laquelle adhèrent la plupart des pays du monde, et NATO c’est l’OTAN (Organisation du Traité de l’Atlantique Nord qui ne regroupe que certains pays), mais ça reste dans l’esprit du maintien de la paix, peut-être un peu plus sécuritaire pour l’OTAN, … enfin, quand ça marche. Merci encore.
 

soan

XLDnaute Accro
Ah oui ! mdr !!! j'ai confondu OTAN et ONU !!! pourtant, je le savais !!! d'ailleurs, l'ONU,
au tout début, s'appelait la SDN : Société des Nations

Si je ne me trompe pas, c'était principalement les Allemands qui avaient réussi ce tour de
force de transformer la SDN en ONU ; et c'était sûrement la RFA (Allemagne de l'Ouest,
côté Occident) ; pas la RDA (Allemagne de l'Est, côté Soviétique).

Voici 3 articles qui, je pense, devraient beaucoup t'intéresser :


* De la SDN à l'ONU

* SDN - Registre de la Mémoire du Monde

* La Société des Nations

À tout hasard, petit complément sur l'OIT (une section de l'ONU) :

* Organisation Internationale du Travail

Je te souhaite une bonne lecture ! :)

-------------------------------------------------------------------------------------------------

Pour ta santé, je te souhaite bon courage, et un prompt rétablissement !!!
pour l'exo Excel, rien ne presse, alors ta santé prime avant tout ! ;)

Pour t'aider à mieux supporter ta convalescence, je t'offre ces 6 liens :

MusiK YL ; MusiK EO ; MusiK SH ; MusiK IK ; MusiK GD ; MusiK AK

Bon divertissement !

soan
 
Dernière édition:

soan

XLDnaute Accro
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 pas brutalement augmenter, de façon
exponentielle, détruisant ainsi le formidable gain de temps initial ? si je me trompe
et que le temps d'exécution reste dans des proportions identiques, alors BRAVO !!!
et je n'aurai alors plus aucune réserve sur ta solution !!!

3) Ma macro utilise aussi la « méthode des tableaux » : Tbl = [D2].Resize(nbl, nbc)
ensuite, ça lit ce tableau qui est en mémoire RAM ; donc même s'il est très grand,
le temps est insignifiant ; c'est seulement quand il faut colorier des mots d'une
cellule qu'on est bien obligé de le faire sur une cellule de la feuille de calcul ;
alors je ne comprends pas pourquoi ma méthode est si lente par rapport à la
tienne ? (cela pour un nombre de mots identiques : 2)

4) Dans mon dernier fichier, il y a ces 3 listes :

LM1 = Array("liberté", "éducation")
LM2 = Array(" femme ", " fille ", " garçon ", " fémin ", " gross ", " allait ", " matern ")
LM3 = Array("genre", "sex")

LM1 : 2 mots ; LM2 : 7 mots ; LM3 : 2 mots ; soit 11 mots en tout ; à l'exécution :

Image 2.jpg

(dans mon post #15, c'était 5,04 mn)

5) Dans ta macro, il y a ces 2 lignes :
VB:
LM = Array("liberté", "éducation")
couleurs = Array(vbGreen, vbMagenta)
donc : il n'y a que 2 mots et 2 couleurs ; de plus, c'est "liberté" en vert et "éducation"
en magenta ; ta macro ne m'a pas l'air adaptée pour faire plusieurs mots en vert,
puis plusieurs mots en magenta ; si tu regardes ma macro, tu verras qu'il y a une
liste de mots pour chaque couleur, ce qui était demandé par MANTE.

6) Pour pouvoir réellement comparer le temps d'exécution de nos 2 méthodes,
peux-tu adapter ta macro de façon que ça traite les mêmes 3 listes ? (la 1ère
en vert ; la 2ème en rose ; la 3ème en rouge)


soan
 
Ce message a été identifié comme étant une solution!

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas