Ajouter 2 arguments à une macro déjà créée et trouver la syntaxe

cibleo

XLDnaute Impliqué
Bonjour le forum :)

Ci-dessous une procédure que je peux appeler plusieurs fois dans un programme.

Code:
Sub MotEnCouleur([COLOR=darkred]LeMot As String, Plage As Range[/COLOR])
'myDearFriend!  -  [URL="http://www.mdf-xlpages.com/"][COLOR=#0066cc]www.mdf-xlpages.com[/COLOR][/URL]
Dim Cel As Range
Dim AdrDeb As String, T As String
Dim Pos As Integer
    With Plage
        Set Cel = .Find(LeMot, LookAt:=xlPart)
        If Not Cel Is Nothing Then
            AdrDeb = Cel.Address
            Do
                T = Cel.Text
                Do
                    Pos = InStr(Pos + 1, T, LeMot)
                    If Pos > 0 Then
                        With Cel.Characters(Start:=Pos, Length:=Len(LeMot)).Font
                            [B][COLOR=navy].FontStyle = "Gras"[/COLOR][/B]
                            [B][COLOR=navy].ColorIndex = 5[/COLOR][/B] ' en Bleu
                        End With
                    End If
                Loop Until Pos = 0
                Set Cel = .FindNext(Cel)
            Loop While Not Cel Is Nothing And AdrDeb <> Cel.Address
        End If
    End With
End Sub

Elle accepte 2 arguments et la syntaxe se traduit comme ceci.

Code:
 Call MotEnCouleur(TextBox1, Range("C2:M" & DerLiR))
Rédigé ainsi, l'occurence (1er argument) sera toujours coloriée en Bleu et définie en "gras".


Or, j'aimerais rajouter 2 arguments pour pouvoir définir la couleur et l'attribut ("gras", "italic" etc...) de mon choix.

J'ai donc repris la macro et essayé ceci mais l'occurence ne se colore pas en bleu (la police reste en noire).

Code:
 Sub MotEnCouleur(LeMot As String, Plage As Range, [COLOR=red][B]Coul As Long[/B][/COLOR])
.../...
With Cel.Characters(Start:=Pos, Length:=Len(LeMot)).Font
     .FontStyle = "Gras"
    '.ColorIndex = 5
     [B][COLOR=red].Color = Coul[/COLOR][/B]
End With

et traduit comme ceci :

Code:
Call MotEnCouleur(TextBox1, Range("C2:M" & DerLiR), [COLOR=red][B]5[/B][/COLOR])


La syntaxe est-elle la bonne ?

Le fichier concerné se trouve au post 38 dans le fil ci-dessous.
https://www.excel-downloads.com/threads/vba-compter-1-occurence-dans-une-plage-dynamique.133061/

Visuellement, la macro réalise ceci.

Scan.jpg

Merci de votre aide Cibleo
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Ajouter 2 arguments à une macro déjà créée et trouver la syntaxe

Bonjour,

A priori 5 correspond plutôt au numéro de la propriété "colorindex", essaye comme suit :

Code:
Sub MotEnCouleur(LeMot As String, Plage As Range, Coul As Long)
.../...
With Cel.Characters(Start:=Pos, Length:=Len(LeMot)).Font
     .FontStyle = "Gras"
     .ColorIndex = Coul
End With

pour utiliser la proopriété "color", il faut passer 16711880 comme argument et non 5....

bon après midi
@+

Edition : pour avoir du bleu, naturellement...
 
Dernière édition:

cibleo

XLDnaute Impliqué
Re : Ajouter 2 arguments à une macro déjà créée et trouver la syntaxe

Bonjour Pierrot93 :)

Elémentaire mon cher Pierrot ;)

J'ai vraiment l'impression de poser des questions stupides par moment :cool:

Et pour le 4 ème argument, j'ai procédé comme cela.

Code:
Sub MotEnCouleur(LeMot As String, Plage As Range, [COLOR=navy]Coul As Long[/COLOR], [COLOR=red]Carac As String[/COLOR])

Code:
.../...
With Cel.Characters(Start:=Pos, Length:=Len(LeMot)).Font
               .FontStyle = [COLOR=red]Carac[/COLOR]
                .ColorIndex = [COLOR=navy]Coul[/COLOR]
End With
.../...


Code:
Call MotEnCouleur(TextBox1, Range("C2:M" & DerLiR), [COLOR=navy]5[/COLOR], "[COLOR=red]Bold[/COLOR]")

Et ça fonctionne, quoique vais encore tester et retester.

Je vais le décliner sur une autre macro de mise en forme que Bqtr m'avait concocté, si problème je reviens.

Bonne journée à tous
Cibleo
 

Pierrot93

XLDnaute Barbatruc
Re : Ajouter 2 arguments à une macro déjà créée et trouver la syntaxe

Re

pour mettre en caractère gras, j'utiliserais la propriété "bold"

Code:
Sub MotEnCouleur(LeMot As String, Plage As Range, Coul As Long, Carac As Boolean)
ActiveCell.Font.Bold = Carac
Code:
With Cel.Characters(Start:=Pos, Length:=Len(LeMot)).Font
               .Bold = Carac
                .ColorIndex = Coul
End With
.../...

et il faudra passer TRUE ou FALSE, ou bien 1 et 0

@+
 

cibleo

XLDnaute Impliqué
Re : Ajouter 2 arguments à une macro déjà créée et trouver la syntaxe

re Pierrot,

Oui, mais je souhaite pouvoir gérer tous les attributs : Bold, Bold Italic, Italic, Normal etc ... y'en a d'autres au moins :rolleyes:

Là, j'ai un trou de mémoire.

Cibleo


Pierrot : le Barré, Souligné cela ne rentre pas dans la même catégorie ?
Je ne sais plus !! il faut un 5 ème argument pour ça --> simple curiosité
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Ajouter 2 arguments à une macro déjà créée et trouver la syntaxe

Re

OK, tu peux utiliser la propriété "FontStyle" comme tu comptais le faire alors... je pensais que c'était uniquement pour mettre en gras ou pas...

bonne soirée
@+

Edition perso vois pas d'autres style que ceux que tu as cités
 

cibleo

XLDnaute Impliqué
Re : Ajouter 2 arguments à une macro déjà créée et trouver la syntaxe

Bonjour le forum :)
Bonjour Pierrot,

Il va falloir que je passe par la propriété Color, j'ai une erreur avec Colorindex sur l'autre programme. (fichier de MyDearfriend en fin de post)

erreur1.jpg

Ci-dessous O.BackColor n'accepte pas Colorindex.

MotEnCouleur ComboMesMots.Text, Sheets("Planning").Range("C4:M11"), O.BackColor

Peut-être un problème de définition de la variable Coul !

Code:
Private Sub B_Colorier_Click()
''myDearFriend!  -  [URL="http://www.mdf-xlpages.com"]www.mdf-xlpages.com[/URL]
Dim O As Control
    If ComboMesMots.ListIndex < 0 Then Exit Sub
    For Each O In Me.Controls
        If TypeName(O) = "OptionButton" Then
            If O.Value Then
                [COLOR=red]MotEnCouleur ComboMesMots.Text, Sheets("Planning").Range("C4:M11"), [COLOR=darkgreen]O.BackColor[/COLOR]
[/COLOR]Unload Me
            End If
        End If
    Next O
End Sub

Avec Colorindex, 5 est le Bleu, comment puis je trouver la référence correspondant au bleu dans la propriété Color ?

Code:
Call MotEnCouleur(TextBox1, Range("C2:M" & DerLiR), [COLOR=navy][B]5[/B][/COLOR], "bold italic")

Bonnes fêtes à tous

Cibleo
 

Pièces jointes

  • PourCibleo.xls
    113.5 KB · Affichages: 92
  • erreur1.jpg
    erreur1.jpg
    28.6 KB · Affichages: 89
  • erreur1.jpg
    erreur1.jpg
    28.6 KB · Affichages: 90
Dernière édition:

cibleo

XLDnaute Impliqué
Re : Ajouter 2 arguments à une macro déjà créée et trouver la syntaxe

Bonjour à tous,
Bonjour Pierrot :)

J'avais un instant douté sur ta réponse du post 2 :cool:, puisque j'obtenais un rose bonbon du plus bel éclat :D

Il fallait que je lise 16711680 au lieu 16711880

pour utiliser la proopriété "color", il faut passer 16711880 comme argument et non 5....

Plus généralement, je cherchais un tableau de correspondance de couleurs avec Colorindex et Color.

J'ai trouvé le fichier de Catrice ci-dessous, c'est bien pratique.

https://www.excel-downloads.com/threads/probleme-avec-vba-et-les-codes-couleurs.119778/

Donc, j'adopte Color en lieu et place de Colorindex.

Bonne année 2010

Cibleo
 

Discussions similaires