Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

vba - 2 formats pour une même cellule

14 réponses
Avatar
j-pascal
Bonsoir,

Dans une plage de cellules, j'ai :

="("&TEXTE(NB.SI(C6:C38;"N inscr.");"0")&")"&"
"&TEXTE(NB.SI(C6:C38;"N ret.");"0")

Le résultat pour chaque cellule donne qqch comme : "(2) 8" (ie)

Je souhaite que le chiffre entre parenthèse reste en gris, (ce que
j'ajuste avec Format, etc.) mais que le 2nd chiffre soit en Gras +
couleur.

J'ai essayé ce qui suit, mais ça ne fonctionne pas dès lors qu'il y a
une formule dans les cellules ! Pourtant si j'évalue le contenu des
dites cellules avec "=NBCAR(MaCellule)", la formule me retourne bien le
nombre de caractères contenus !

Faut-il que je recrée la formule via vba et que je fasse un
"Copier/Valeur" ?? J'ai quand même un doute !!

'-----------
Sub MEFC()
Dim c

For Each c In Range("C1:K1")
With c.Characters(4, 7).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

For Each c In Range("C2:K2")
With c.Characters(Start:=4, Length:=7).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub
'-----------

Merci d'avance pour votre aide,

JP

PS : si ma cellule = "(0)- - - 8" j'ai mis :
Start:=4, Length:=7
4 qui correspond au 1er espace après mon chiffre entre parenthèses ;
faut-il que je mette 7 pour "englober" le 2nd chiffre ? En d'autres
termes, où commence le "Length" ?

10 réponses

1 2
Avatar
garnote
Salut Jean-Pascal,

Si tu as cette formule en G5 :
="("&TEXTE(NB.SI($C$6:$C$38;"N inscr.");"0")&")"&" "&
TEXTE(NB.SI($C$6:$C$38;"N ret.");"0")
j'ai bien peur qu'il faille copier sa valeur ailleurs
pour obtenir ce que tu veux, mais allez savoir !
Dans ces macros, j'ai copié la valeur de G5 en H5 :
Ta formule fera les calculs et ta mise en forme sera en H5.
Tu pourrais peut-être masquer la colonne G.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$6:$C$38")) Is Nothing Then Mise_En_Forme
End Sub

Sub Mise_En_Forme()
[H5] = [G5]
x = InStr(1, [H5], ")")
With [H5].Characters(x + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
With [H5].Characters(2, x - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
End Sub

Cela te convient-il ?


"j-pascal" a écrit dans le message de news:
Bonsoir,

Dans une plage de cellules, j'ai :

="("&TEXTE(NB.SI(C6:C38;"N inscr.");"0")&")"&" "&TEXTE(NB.SI(C6:C38;"N ret.");"0")

Le résultat pour chaque cellule donne qqch comme : "(2) 8" (ie)

Je souhaite que le chiffre entre parenthèse reste en gris, (ce que j'ajuste avec Format, etc.) mais que le 2nd chiffre soit
en Gras + couleur.

J'ai essayé ce qui suit, mais ça ne fonctionne pas dès lors qu'il y a une formule dans les cellules ! Pourtant si j'évalue
le contenu des dites cellules avec "=NBCAR(MaCellule)", la formule me retourne bien le nombre de caractères contenus !

Faut-il que je recrée la formule via vba et que je fasse un "Copier/Valeur" ?? J'ai quand même un doute !!

'-----------
Sub MEFC()
Dim c

For Each c In Range("C1:K1")
With c.Characters(4, 7).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

For Each c In Range("C2:K2")
With c.Characters(Start:=4, Length:=7).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub
'-----------

Merci d'avance pour votre aide,

JP

PS : si ma cellule = "(0)- - - 8" j'ai mis :
Start:=4, Length:=7
4 qui correspond au 1er espace après mon chiffre entre parenthèses ; faut-il que je mette 7 pour "englober" le 2nd chiffre
? En d'autres termes, où commence le "Length" ?




Avatar
garnote
Suite à une relecture attentive de ta question, je te propose ceci :


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6:K38")) Is Nothing Then Mise_En_Forme
End Sub

Sub Mise_En_Forme()
Range("C2:K2") = Range("C1:K1").Value
For Each c In Range("C2:K2")
x = InStr(1, c, ")")
With c.Characters(x + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
With c.Characters(2, x - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub

Ai-je bien compris le sens de ta question ?

Serge




"garnote" a écrit dans le message de news:
Salut Jean-Pascal,

Si tu as cette formule en G5 :
="("&TEXTE(NB.SI($C$6:$C$38;"N inscr.");"0")&")"&" "&
TEXTE(NB.SI($C$6:$C$38;"N ret.");"0")
j'ai bien peur qu'il faille copier sa valeur ailleurs
pour obtenir ce que tu veux, mais allez savoir !
Dans ces macros, j'ai copié la valeur de G5 en H5 :
Ta formule fera les calculs et ta mise en forme sera en H5.
Tu pourrais peut-être masquer la colonne G.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$6:$C$38")) Is Nothing Then Mise_En_Forme
End Sub

Sub Mise_En_Forme()
[H5] = [G5]
x = InStr(1, [H5], ")")
With [H5].Characters(x + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
With [H5].Characters(2, x - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
End Sub

Cela te convient-il ?


"j-pascal" a écrit dans le message de news:
Bonsoir,

Dans une plage de cellules, j'ai :

="("&TEXTE(NB.SI(C6:C38;"N inscr.");"0")&")"&" "&TEXTE(NB.SI(C6:C38;"N ret.");"0")

Le résultat pour chaque cellule donne qqch comme : "(2) 8" (ie)

Je souhaite que le chiffre entre parenthèse reste en gris, (ce que j'ajuste avec Format, etc.) mais que le 2nd chiffre
soit en Gras + couleur.

J'ai essayé ce qui suit, mais ça ne fonctionne pas dès lors qu'il y a une formule dans les cellules ! Pourtant si j'évalue
le contenu des dites cellules avec "=NBCAR(MaCellule)", la formule me retourne bien le nombre de caractères contenus !

Faut-il que je recrée la formule via vba et que je fasse un "Copier/Valeur" ?? J'ai quand même un doute !!

'-----------
Sub MEFC()
Dim c

For Each c In Range("C1:K1")
With c.Characters(4, 7).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

For Each c In Range("C2:K2")
With c.Characters(Start:=4, Length:=7).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub
'-----------

Merci d'avance pour votre aide,

JP

PS : si ma cellule = "(0)- - - 8" j'ai mis :
Start:=4, Length:=7
4 qui correspond au 1er espace après mon chiffre entre parenthèses ; faut-il que je mette 7 pour "englober" le 2nd chiffre
? En d'autres termes, où commence le "Length" ?








Avatar
j-pascal
Bonsoir,

Merci (j'étais sur mon classeur quand j'ai reçu ton 2nd poste qui
répondait effectivement à la question que je me posais !)

J'ai ajusté comme ceci :

'-----
Sub Mise_En_Forme()

Range("C3:K3") = Range("C1:K1").Value
For Each c In Range("C3:K3")
'X = InStr(1, c, ")")
With [c].Characters(4, 7).Font 'c.Characters(X + 2, 9 ^
9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

Range("C4:K4") = Range("C2:K2").Value
For Each cc In Range("C4:K4")
With [cc].Characters(4, 7).Font 'c.Characters(2, X - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next cc
End Sub
'------
Et :
'----
Private Sub Worksheet_Change(ByVal Target As Range)
'Stop
If Not Intersect(Target, Range("$C$8:$K$40")) Is Nothing Then
Mise_En_Forme
End Sub
'----

Tout fonctionne (presque) parfaitement, en effet après :
'---
Sub Mise_En_Forme()

Range("C3:K3") = Range("C1:K1").Value
'---

J'ai la fonction suivante qui se lance en boucle et qui contrarie donc
le lancement de la procédure de MEF !!
J'ai essayé d'introduire un "Application.EnableEvents = False" pour
shunter la "Function" mais ça ne donne rien !

Voici la Function :

'----
Function SheetName() As Date
Dim Mois As String, Dat As Date
Dim AnnéeEnCours 'as ---

AnnéeEnCours = Sheets("Janvier").[a6]

Application.Volatile
Mois = ActiveSheet.Name

Dat = CDate("01/" & "" & Mois & "" & "/" & AnnéeEnCours) 'jac

Select Case Application.Weekday(Dat)
Case 1
SheetName = Dat + 3
Case 2
SheetName = Dat + 2
Case 3
SheetName = Dat + 1
Case 4
SheetName = Dat
Case 5
SheetName = Dat + 1
Case 6
SheetName = Dat
Case 7
SheetName = Dat + 4
End Select

End Function
'----

@+ ?

JP

Suite à une relecture attentive de ta question, je te propose ceci :


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6:K38")) Is Nothing Then Mise_En_Forme
End Sub

Sub Mise_En_Forme()
Range("C2:K2") = Range("C1:K1").Value
For Each c In Range("C2:K2")
x = InStr(1, c, ")")
With c.Characters(x + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
With c.Characters(2, x - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub

Ai-je bien compris le sens de ta question ?

Serge




"garnote" a écrit dans le message de news:

Salut Jean-Pascal,

Si tu as cette formule en G5 :
="("&TEXTE(NB.SI($C$6:$C$38;"N inscr.");"0")&")"&" "&
TEXTE(NB.SI($C$6:$C$38;"N ret.");"0")
j'ai bien peur qu'il faille copier sa valeur ailleurs
pour obtenir ce que tu veux, mais allez savoir !
Dans ces macros, j'ai copié la valeur de G5 en H5 :
Ta formule fera les calculs et ta mise en forme sera en H5.
Tu pourrais peut-être masquer la colonne G.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$6:$C$38")) Is Nothing Then
Mise_En_Forme
End Sub

Sub Mise_En_Forme()
[H5] = [G5]
x = InStr(1, [H5], ")")
With [H5].Characters(x + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
With [H5].Characters(2, x - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
End Sub

Cela te convient-il ?


"j-pascal" a écrit dans le message de news:

Bonsoir,

Dans une plage de cellules, j'ai :

="("&TEXTE(NB.SI(C6:C38;"N inscr.");"0")&")"&" "&TEXTE(NB.SI(C6:C38;"N
ret.");"0")

Le résultat pour chaque cellule donne qqch comme : "(2) 8" (ie)

Je souhaite que le chiffre entre parenthèse reste en gris, (ce que
j'ajuste avec Format, etc.) mais que le 2nd chiffre soit en Gras +
couleur.

J'ai essayé ce qui suit, mais ça ne fonctionne pas dès lors qu'il y a une
formule dans les cellules ! Pourtant si j'évalue le contenu des dites
cellules avec "=NBCAR(MaCellule)", la formule me retourne bien le nombre
de caractères contenus !

Faut-il que je recrée la formule via vba et que je fasse un
"Copier/Valeur" ?? J'ai quand même un doute !!

'-----------
Sub MEFC()
Dim c

For Each c In Range("C1:K1")
With c.Characters(4, 7).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

For Each c In Range("C2:K2")
With c.Characters(Start:=4, Length:=7).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub
'-----------

Merci d'avance pour votre aide,

JP

PS : si ma cellule = "(0)- - - 8" j'ai mis :
Start:=4, Length:=7
4 qui correspond au 1er espace après mon chiffre entre parenthèses ;
faut-il que je mette 7 pour "englober" le 2nd chiffre ? En d'autres
termes, où commence le "Length" ?










Avatar
garnote
Salut Jean-Pascal,

Pour tenter de t'aider, il me faudrait voir ton document
avec quelques commentaires.
S'il n'est pas trop volumineux et confidentiel, tu pourrais
l'envoyer sur Cjoint :
http://cjoint.com/

Serge



"j-pascal" a écrit dans le message de news:
Bonsoir,

Merci (j'étais sur mon classeur quand j'ai reçu ton 2nd poste qui répondait effectivement à la question que je me posais !)

J'ai ajusté comme ceci :

'-----
Sub Mise_En_Forme()

Range("C3:K3") = Range("C1:K1").Value
For Each c In Range("C3:K3")
'X = InStr(1, c, ")")
With [c].Characters(4, 7).Font 'c.Characters(X + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

Range("C4:K4") = Range("C2:K2").Value
For Each cc In Range("C4:K4")
With [cc].Characters(4, 7).Font 'c.Characters(2, X - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next cc
End Sub
'------
Et :
'----
Private Sub Worksheet_Change(ByVal Target As Range)
'Stop
If Not Intersect(Target, Range("$C$8:$K$40")) Is Nothing Then Mise_En_Forme
End Sub
'----

Tout fonctionne (presque) parfaitement, en effet après :
'---
Sub Mise_En_Forme()

Range("C3:K3") = Range("C1:K1").Value
'---

J'ai la fonction suivante qui se lance en boucle et qui contrarie donc le lancement de la procédure de MEF !!
J'ai essayé d'introduire un "Application.EnableEvents = False" pour shunter la "Function" mais ça ne donne rien !

Voici la Function :

'----
Function SheetName() As Date
Dim Mois As String, Dat As Date
Dim AnnéeEnCours 'as ---

AnnéeEnCours = Sheets("Janvier").[a6]

Application.Volatile
Mois = ActiveSheet.Name

Dat = CDate("01/" & "" & Mois & "" & "/" & AnnéeEnCours) 'jac

Select Case Application.Weekday(Dat)
Case 1
SheetName = Dat + 3
Case 2
SheetName = Dat + 2
Case 3
SheetName = Dat + 1
Case 4
SheetName = Dat
Case 5
SheetName = Dat + 1
Case 6
SheetName = Dat
Case 7
SheetName = Dat + 4
End Select

End Function
'----

@+ ?

JP

Suite à une relecture attentive de ta question, je te propose ceci :


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6:K38")) Is Nothing Then Mise_En_Forme
End Sub

Sub Mise_En_Forme()
Range("C2:K2") = Range("C1:K1").Value
For Each c In Range("C2:K2")
x = InStr(1, c, ")")
With c.Characters(x + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
With c.Characters(2, x - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub

Ai-je bien compris le sens de ta question ?

Serge




"garnote" a écrit dans le message de news:
Salut Jean-Pascal,

Si tu as cette formule en G5 :
="("&TEXTE(NB.SI($C$6:$C$38;"N inscr.");"0")&")"&" "&
TEXTE(NB.SI($C$6:$C$38;"N ret.");"0")
j'ai bien peur qu'il faille copier sa valeur ailleurs
pour obtenir ce que tu veux, mais allez savoir !
Dans ces macros, j'ai copié la valeur de G5 en H5 :
Ta formule fera les calculs et ta mise en forme sera en H5.
Tu pourrais peut-être masquer la colonne G.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$6:$C$38")) Is Nothing Then Mise_En_Forme
End Sub

Sub Mise_En_Forme()
[H5] = [G5]
x = InStr(1, [H5], ")")
With [H5].Characters(x + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
With [H5].Characters(2, x - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
End Sub

Cela te convient-il ?


"j-pascal" a écrit dans le message de news:
Bonsoir,

Dans une plage de cellules, j'ai :

="("&TEXTE(NB.SI(C6:C38;"N inscr.");"0")&")"&" "&TEXTE(NB.SI(C6:C38;"N ret.");"0")

Le résultat pour chaque cellule donne qqch comme : "(2) 8" (ie)

Je souhaite que le chiffre entre parenthèse reste en gris, (ce que j'ajuste avec Format, etc.) mais que le 2nd chiffre
soit en Gras + couleur.

J'ai essayé ce qui suit, mais ça ne fonctionne pas dès lors qu'il y a une formule dans les cellules ! Pourtant si
j'évalue le contenu des dites cellules avec "=NBCAR(MaCellule)", la formule me retourne bien le nombre de caractères
contenus !

Faut-il que je recrée la formule via vba et que je fasse un "Copier/Valeur" ?? J'ai quand même un doute !!

'-----------
Sub MEFC()
Dim c

For Each c In Range("C1:K1")
With c.Characters(4, 7).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

For Each c In Range("C2:K2")
With c.Characters(Start:=4, Length:=7).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub
'-----------

Merci d'avance pour votre aide,

JP

PS : si ma cellule = "(0)- - - 8" j'ai mis :
Start:=4, Length:=7
4 qui correspond au 1er espace après mon chiffre entre parenthèses ; faut-il que je mette 7 pour "englober" le 2nd
chiffre ? En d'autres termes, où commence le "Length" ?














Avatar
j-pascal
Bonsoir Serge,

J'ai travaillé aujourd'hui (journée épouvantable !!) ; mais j'ai trouvé
2 toutes petites secondes pour consulter mes news via Google !!

Ci-joint le classeur : http://cjoint.com/?mFuzlGNHOY

Les 2 premières lignes sont masquées (là où sont les calculs). Si je
saisie dans la plage ("C8:K40") des valeurs "N ret.", "JC ret." etc.
les lignes 3 et 4 ne s'actualisent pas !
La question de la MEFC est résolu et ce pb est, je le reconnais, un peu
hors-sujet ; mais bon, si tu as une idée, je suis preneur ;-)

Je pense que ma fonction "Sheetname" perturbe un peu le tout. Je
pensais naïvement la shunter comme on peut le faire dans d'autres
contextes avec "Application.EnableEvents = False", mais sans succès.
Peut-être que le "volatile" est de trop ?

Un grand merci d'avance pour ton aide,
Bon réveillon et à bientôt, j'espère !

JP

PS : dans ton code initial "Characters(X + 2, 9 ^ 9).Font", je ne
comprends pas : "9 ^ 9" ! Ca ressemble à 9 à la puissance 9 ?!!

Salut Jean-Pascal,

Pour tenter de t'aider, il me faudrait voir ton document
avec quelques commentaires.
S'il n'est pas trop volumineux et confidentiel, tu pourrais
l'envoyer sur Cjoint :
http://cjoint.com/

Serge



"j-pascal" a écrit dans le message de news:

Bonsoir,

Merci (j'étais sur mon classeur quand j'ai reçu ton 2nd poste qui répondait
effectivement à la question que je me posais !)

J'ai ajusté comme ceci :

'-----
Sub Mise_En_Forme()

Range("C3:K3") = Range("C1:K1").Value
For Each c In Range("C3:K3")
'X = InStr(1, c, ")")
With [c].Characters(4, 7).Font 'c.Characters(X + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

Range("C4:K4") = Range("C2:K2").Value
For Each cc In Range("C4:K4")
With [cc].Characters(4, 7).Font 'c.Characters(2, X - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next cc
End Sub
'------
Et :
'----
Private Sub Worksheet_Change(ByVal Target As Range)
'Stop
If Not Intersect(Target, Range("$C$8:$K$40")) Is Nothing Then
Mise_En_Forme
End Sub
'----

Tout fonctionne (presque) parfaitement, en effet après :
'---
Sub Mise_En_Forme()

Range("C3:K3") = Range("C1:K1").Value
'---

J'ai la fonction suivante qui se lance en boucle et qui contrarie donc le
lancement de la procédure de MEF !!
J'ai essayé d'introduire un "Application.EnableEvents = False" pour shunter
la "Function" mais ça ne donne rien !

Voici la Function :

'----
Function SheetName() As Date
Dim Mois As String, Dat As Date
Dim AnnéeEnCours 'as ---

AnnéeEnCours = Sheets("Janvier").[a6]

Application.Volatile
Mois = ActiveSheet.Name

Dat = CDate("01/" & "" & Mois & "" & "/" & AnnéeEnCours) 'jac

Select Case Application.Weekday(Dat)
Case 1
SheetName = Dat + 3
Case 2
SheetName = Dat + 2
Case 3
SheetName = Dat + 1
Case 4
SheetName = Dat
Case 5
SheetName = Dat + 1
Case 6
SheetName = Dat
Case 7
SheetName = Dat + 4
End Select

End Function
'----

@+ ?

JP

Suite à une relecture attentive de ta question, je te propose ceci :


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6:K38")) Is Nothing Then
Mise_En_Forme
End Sub

Sub Mise_En_Forme()
Range("C2:K2") = Range("C1:K1").Value
For Each c In Range("C2:K2")
x = InStr(1, c, ")")
With c.Characters(x + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
With c.Characters(2, x - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub

Ai-je bien compris le sens de ta question ?

Serge




"garnote" a écrit dans le message de news:

Salut Jean-Pascal,

Si tu as cette formule en G5 :
="("&TEXTE(NB.SI($C$6:$C$38;"N inscr.");"0")&")"&" "&
TEXTE(NB.SI($C$6:$C$38;"N ret.");"0")
j'ai bien peur qu'il faille copier sa valeur ailleurs
pour obtenir ce que tu veux, mais allez savoir !
Dans ces macros, j'ai copié la valeur de G5 en H5 :
Ta formule fera les calculs et ta mise en forme sera en H5.
Tu pourrais peut-être masquer la colonne G.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$6:$C$38")) Is Nothing Then
Mise_En_Forme
End Sub

Sub Mise_En_Forme()
[H5] = [G5]
x = InStr(1, [H5], ")")
With [H5].Characters(x + 2, 9 ^ 9).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
With [H5].Characters(2, x - 2).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
End Sub

Cela te convient-il ?


"j-pascal" a écrit dans le message de news:

Bonsoir,

Dans une plage de cellules, j'ai :

="("&TEXTE(NB.SI(C6:C38;"N inscr.");"0")&")"&" "&TEXTE(NB.SI(C6:C38;"N
ret.");"0")

Le résultat pour chaque cellule donne qqch comme : "(2) 8" (ie)

Je souhaite que le chiffre entre parenthèse reste en gris, (ce que
j'ajuste avec Format, etc.) mais que le 2nd chiffre soit en Gras +
couleur.

J'ai essayé ce qui suit, mais ça ne fonctionne pas dès lors qu'il y a
une formule dans les cellules ! Pourtant si j'évalue le contenu des
dites cellules avec "=NBCAR(MaCellule)", la formule me retourne bien le
nombre de caractères contenus !

Faut-il que je recrée la formule via vba et que je fasse un
"Copier/Valeur" ?? J'ai quand même un doute !!

'-----------
Sub MEFC()
Dim c

For Each c In Range("C1:K1")
With c.Characters(4, 7).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

For Each c In Range("C2:K2")
With c.Characters(Start:=4, Length:=7).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub
'-----------

Merci d'avance pour votre aide,

JP

PS : si ma cellule = "(0)- - - 8" j'ai mis :
Start:=4, Length:=7
4 qui correspond au 1er espace après mon chiffre entre parenthèses ;
faut-il que je mette 7 pour "englober" le 2nd chiffre ? En d'autres
termes, où commence le "Length" ?
















Avatar
Jacky
Bonne année 2009

Essaie ceci:
'-----------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$8:$K$40")) Is Nothing Then
Mise_En_Forme_JJ (Target.Column)
End If
End Sub

'-------------------------
Sub Mise_En_Forme_JJ(col)
Rows("3:4").NumberFormat = "@"
Cells(3, col) = "(" & Application.CountIf(Range(Cells(8, col), Cells(40,
col)), "N inscr.") _
& ") " & Application.CountIf(Range(Cells(8, col), Cells(40, col)),
"N ret.")

Cells(4, col) = "(" & Application.CountIf(Range(Cells(8, col), Cells(40,
col)), "JC inscr.") _
& ") " & Application.CountIf(Range(Cells(8, col), Cells(40, col)),
"JC ret.")

With Range("c3:k4").Characters(Start:=1, Length:=3).Font
.Name = "Verdana"
.FontStyle = "Gras"
.Size = 10
.ColorIndex = 15
End With
With Range("c3:k3").Characters(Start:=7, Length:=1).Font
.ColorIndex = 10
End With
With Range("c4:k4").Characters(Start:=7, Length:=1).Font
.ColorIndex = 3
End With
End Sub
'----------------
Ton classeur modifié
http://www.cijoint.fr/cjlink.php?file=cj200901/cijIjJz5CV.xls

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir,

Dans une plage de cellules, j'ai :

="("&TEXTE(NB.SI(C6:C38;"N inscr.");"0")&")"&" "&TEXTE(NB.SI(C6:C38;"N
ret.");"0")

Le résultat pour chaque cellule donne qqch comme : "(2) 8" (ie)

Je souhaite que le chiffre entre parenthèse reste en gris, (ce que
j'ajuste avec Format, etc.) mais que le 2nd chiffre soit en Gras +
couleur.

J'ai essayé ce qui suit, mais ça ne fonctionne pas dès lors qu'il y a une
formule dans les cellules ! Pourtant si j'évalue le contenu des dites
cellules avec "=NBCAR(MaCellule)", la formule me retourne bien le nombre
de caractères contenus !

Faut-il que je recrée la formule via vba et que je fasse un
"Copier/Valeur" ?? J'ai quand même un doute !!

'-----------
Sub MEFC()
Dim c

For Each c In Range("C1:K1")
With c.Characters(4, 7).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

For Each c In Range("C2:K2")
With c.Characters(Start:=4, Length:=7).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub
'-----------

Merci d'avance pour votre aide,

JP

PS : si ma cellule = "(0)- - - 8" j'ai mis :
Start:=4, Length:=7
4 qui correspond au 1er espace après mon chiffre entre parenthèses ;
faut-il que je mette 7 pour "englober" le 2nd chiffre ? En d'autres
termes, où commence le "Length" ?




Avatar
j-pascal
Bonsoir Jacky et bonne année !

Je viens d'essayer ton fichier tel quel. De mon côté, seules les
suppressions des "N inscr.", "N ret." etc. sont prises en compte dans
les 2 lignes du haut (je veux dire que le résultat s'actualise).
Sauf erreur de ma part, les ajouts ne modifient pas les totaux de ces
deux premières lignes.

Merci pour ta proposition que je regarderai avec plus de soin demain
soir car pour l'heure je suis une "loque" ...

A bientôt,

JP

Bonne année 2009

Essaie ceci:
'-----------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$8:$K$40")) Is Nothing Then
Mise_En_Forme_JJ (Target.Column)
End If
End Sub

'-------------------------
Sub Mise_En_Forme_JJ(col)
Rows("3:4").NumberFormat = "@"
Cells(3, col) = "(" & Application.CountIf(Range(Cells(8, col), Cells(40,
col)), "N inscr.") _
& ") " & Application.CountIf(Range(Cells(8, col), Cells(40, col)),
"N ret.")

Cells(4, col) = "(" & Application.CountIf(Range(Cells(8, col), Cells(40,
col)), "JC inscr.") _
& ") " & Application.CountIf(Range(Cells(8, col), Cells(40, col)),
"JC ret.")

With Range("c3:k4").Characters(Start:=1, Length:=3).Font
.Name = "Verdana"
.FontStyle = "Gras"
.Size = 10
.ColorIndex = 15
End With
With Range("c3:k3").Characters(Start:=7, Length:=1).Font
.ColorIndex = 10
End With
With Range("c4:k4").Characters(Start:=7, Length:=1).Font
.ColorIndex = 3
End With
End Sub
'----------------
Ton classeur modifié
http://www.cijoint.fr/cjlink.php?file=cj200901/cijIjJz5CV.xls

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir,

Dans une plage de cellules, j'ai :

="("&TEXTE(NB.SI(C6:C38;"N inscr.");"0")&")"&" "&TEXTE(NB.SI(C6:C38;"N
ret.");"0")

Le résultat pour chaque cellule donne qqch comme : "(2) 8" (ie)

Je souhaite que le chiffre entre parenthèse reste en gris, (ce que j'ajuste
avec Format, etc.) mais que le 2nd chiffre soit en Gras + couleur.

J'ai essayé ce qui suit, mais ça ne fonctionne pas dès lors qu'il y a une
formule dans les cellules ! Pourtant si j'évalue le contenu des dites
cellules avec "=NBCAR(MaCellule)", la formule me retourne bien le nombre de
caractères contenus !

Faut-il que je recrée la formule via vba et que je fasse un "Copier/Valeur"
?? J'ai quand même un doute !!

'-----------
Sub MEFC()
Dim c

For Each c In Range("C1:K1")
With c.Characters(4, 7).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

For Each c In Range("C2:K2")
With c.Characters(Start:=4, Length:=7).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub
'-----------

Merci d'avance pour votre aide,

JP

PS : si ma cellule = "(0)- - - 8" j'ai mis :
Start:=4, Length:=7
4 qui correspond au 1er espace après mon chiffre entre parenthèses ;
faut-il que je mette 7 pour "englober" le 2nd chiffre ? En d'autres termes,
où commence le "Length" ?






Avatar
Jacky
Re...
Regarde celui-ci devrait convenir
http://www.cijoint.fr/cjlink.php?file=cj200901/cij5zNnNIS.xls

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir Jacky et bonne année !

Je viens d'essayer ton fichier tel quel. De mon côté, seules les
suppressions des "N inscr.", "N ret." etc. sont prises en compte dans les
2 lignes du haut (je veux dire que le résultat s'actualise).
Sauf erreur de ma part, les ajouts ne modifient pas les totaux de ces deux
premières lignes.

Merci pour ta proposition que je regarderai avec plus de soin demain soir
car pour l'heure je suis une "loque" ...

A bientôt,

JP

Bonne année 2009

Essaie ceci:
'-----------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$C$8:$K$40")) Is Nothing Then
Mise_En_Forme_JJ (Target.Column)
End If
End Sub

'-------------------------
Sub Mise_En_Forme_JJ(col)
Rows("3:4").NumberFormat = "@"
Cells(3, col) = "(" & Application.CountIf(Range(Cells(8, col),
Cells(40, col)), "N inscr.") _
& ") " & Application.CountIf(Range(Cells(8, col), Cells(40,
col)), "N ret.")

Cells(4, col) = "(" & Application.CountIf(Range(Cells(8, col),
Cells(40, col)), "JC inscr.") _
& ") " & Application.CountIf(Range(Cells(8, col), Cells(40,
col)), "JC ret.")

With Range("c3:k4").Characters(Start:=1, Length:=3).Font
.Name = "Verdana"
.FontStyle = "Gras"
.Size = 10
.ColorIndex = 15
End With
With Range("c3:k3").Characters(Start:=7, Length:=1).Font
.ColorIndex = 10
End With
With Range("c4:k4").Characters(Start:=7, Length:=1).Font
.ColorIndex = 3
End With
End Sub
'----------------
Ton classeur modifié
http://www.cijoint.fr/cjlink.php?file=cj200901/cijIjJz5CV.xls

--
Salutations
JJ


"j-pascal" a écrit dans le message de news:

Bonsoir,

Dans une plage de cellules, j'ai :

="("&TEXTE(NB.SI(C6:C38;"N inscr.");"0")&")"&" "&TEXTE(NB.SI(C6:C38;"N
ret.");"0")

Le résultat pour chaque cellule donne qqch comme : "(2) 8" (ie)

Je souhaite que le chiffre entre parenthèse reste en gris, (ce que
j'ajuste avec Format, etc.) mais que le 2nd chiffre soit en Gras +
couleur.

J'ai essayé ce qui suit, mais ça ne fonctionne pas dès lors qu'il y a
une formule dans les cellules ! Pourtant si j'évalue le contenu des
dites cellules avec "=NBCAR(MaCellule)", la formule me retourne bien le
nombre de caractères contenus !

Faut-il que je recrée la formule via vba et que je fasse un
"Copier/Valeur" ?? J'ai quand même un doute !!

'-----------
Sub MEFC()
Dim c

For Each c In Range("C1:K1")
With c.Characters(4, 7).Font
.Bold = True
.Size = 10
.ColorIndex = 10
End With
Next c

For Each c In Range("C2:K2")
With c.Characters(Start:=4, Length:=7).Font
.Bold = True
.Size = 10
.ColorIndex = 3
End With
Next c
End Sub
'-----------

Merci d'avance pour votre aide,

JP

PS : si ma cellule = "(0)- - - 8" j'ai mis :
Start:=4, Length:=7
4 qui correspond au 1er espace après mon chiffre entre parenthèses ;
faut-il que je mette 7 pour "englober" le 2nd chiffre ? En d'autres
termes, où commence le "Length" ?










Avatar
Jacky
Re...
Celui-ci devrait mieux convenir
http://www.cijoint.fr/cjlink.php?file=cj200901/cijgDKGUOu.xls
--
Salutations
JJ


"
Avatar
j-pascal
Bonsoir Jacky,

Merci pour ton aide précieuse.

Il y a un truc que je ne m'explique pas. J'ai essayé ton classeur au
bureau ; qq secondes m'ont suffit pour m'apercevoir que tout
fonctionnait parfaitement.

Ce soir je fais un essai à la maison et ça ne fonctionne plus !
J'ai déroulé le code pas à pas :

1 - Si je supprime une valeur, tout est ok
2 - Si j'ajoute une valeur (avec le menu déroulant), les deux dernières
lignes du bout de code suivant ne s'exécutent pas :

'---------
Sub "
Dim ad As String
ad = ActiveCell.Address
Application.ScreenUpdating = False

[c1:k2].Copy
[c3].PasteSpecial Paste:=xlPasteValues
'---------

La plage [c1:k2] n'est pas sélectionnée !! (pourtant aucun msg de
débogage)

A part le fait d'être malade et d'avoir dormi 30 minutes la nuit
dernière (et donc de n'avoir peut-être pas les yeux en face des trous),
je n'y comprends rien !!
La "Private Sub Worksheet_Change(ByVal Target As Range)" détecte bien
la suppression ou l'ajout de données et la proc.
"Mise_En_Forme_JJ(col)" se lance bien dans les deux cas !!

Dans le cas qui ne fonctionne pas, mon curseur vient se placer chaque
fois sur la cellule "c3".

Je viens de remarquer que tout fonctionne bien si je saisie la valeur
au clavier + enter (sans passer par le menu déroulant).

Serait-ce une histoire de DoEvents ?

J'espère à bientôt,

JP


Re...
Celui-ci devrait mieux convenir
http://www.cijoint.fr/cjlink.php?file=cj200901/cijgDKGUOu.xls


1 2