Mise en gras de la selection

Le
Joachim Ruegsegger
bonjour,

j'ai commencé à faire cette macro :

Sub gras()

Range("A3").Select

For Each c In Range("A3:A500")
ActiveCell.Select

If c.Value <> "" Then
MsgBox c.Value

End If
Next c
End Sub

J'aimerais à la place de la ligne "MsgBox c. Value" mettre le texte en gras
dans les cellule des 5 premières colonnes de la ligne de la cellule active.

pour mettre en gras j'ai le code "Selection.Font.Bold = True" mais je ne
vois pas comment faire pour selectionner les 5 premières colonnes de la
ligne de la cellule active.

Ensuite 2ème question, j'ai mit cette macro dans la page code d'un onglet,
est-ce que la macro va fonctionne en continu dès que l'onglet est ouvert ou
pas ?

en fait j'aimerais que la macro "tourne" en continu et dès qu'une valeur est
entrée dans la rangée A, les cellules des 5 première colonne (y compris la
A) de la ligne se mette en gras.


voila, j'espère que j'ai été assez clair mdr.

Cordialement

JR
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
tissot.emmanuel
Le #4553341
Bonjour,

1/ Essaye ceci:

Sub gras()
Dim C As Range, Plage As Range
Set Plage = Range("A3:A500")
For Each C In Plage
If C.Value <> "" Then C.Resize(1, 5).Font.Bold = True
Next C
End Sub

2/ Non

3/ Essaye cela dans le module de la feuille.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Not Intersect(Target, Range("A3:A500")) Is
Nothing Then
If Target.Value <> "" Then Target.Resize(1, 5).Font.Bold = True
End If
End Sub


Cordialement,
Manu/

"Joachim Ruegsegger" news:
bonjour,

j'ai commencé à faire cette macro :

Sub gras()

Range("A3").Select

For Each c In Range("A3:A500")
ActiveCell.Select

If c.Value <> "" Then
MsgBox c.Value

End If
Next c
End Sub

J'aimerais à la place de la ligne "MsgBox c. Value" mettre le texte en
gras dans les cellule des 5 premières colonnes de la ligne de la cellule
active.

pour mettre en gras j'ai le code "Selection.Font.Bold = True" mais je ne
vois pas comment faire pour selectionner les 5 premières colonnes de la
ligne de la cellule active.

Ensuite 2ème question, j'ai mit cette macro dans la page code d'un onglet,
est-ce que la macro va fonctionne en continu dès que l'onglet est ouvert
ou pas ?

en fait j'aimerais que la macro "tourne" en continu et dès qu'une valeur
est entrée dans la rangée A, les cellules des 5 première colonne (y
compris la A) de la ligne se mette en gras.


voila, j'espère que j'ai été assez clair mdr.

Cordialement

JR



FFO
Le #4553301
Salut à toi
Difficile de te comprendre
Quand tu parles des cellules des 5 premières colonnes tu veux dire
les 4 cellules adjacentes à la cellule active soit avec celle-ci les 5
cellules contigues de la ligne ????
Dans cette obtique je te propose :

For Each c In Range("A3:A500")
If c.Value <> "" Then
Range(c, c.Offset(0, 4)).Font.Bold = True
End If
Next c

Avec une actualisation automatique lorsqu'une saisie est réalisée dans les
cellule A3 à A500
Dans le VBA de la feuille tu mets ce code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A3:A500]) Is Nothing Then
Cancel = True
End If
For Each c In Range("A3:A500")
If c.Value <> "" Then
Range(c, c.Offset(0, 4)).Font.Bold = True
End If
Next c
End Sub

Celà devrait convenir

Dis moi !!!


bonjour,

j'ai commencé à faire cette macro :

Sub gras()

Range("A3").Select

For Each c In Range("A3:A500")
ActiveCell.Select

If c.Value <> "" Then
MsgBox c.Value

End If
Next c
End Sub

J'aimerais à la place de la ligne "MsgBox c. Value" mettre le texte en gras
dans les cellule des 5 premières colonnes de la ligne de la cellule active.

pour mettre en gras j'ai le code "Selection.Font.Bold = True" mais je ne
vois pas comment faire pour selectionner les 5 premières colonnes de la
ligne de la cellule active.

Ensuite 2ème question, j'ai mit cette macro dans la page code d'un onglet,
est-ce que la macro va fonctionne en continu dès que l'onglet est ouvert ou
pas ?

en fait j'aimerais que la macro "tourne" en continu et dès qu'une valeur est
entrée dans la rangée A, les cellules des 5 première colonne (y compris la
A) de la ligne se mette en gras.


voila, j'espère que j'ai été assez clair mdr.

Cordialement

JR





Joachim Ruegsegger
Le #4553181
Merci à vous 2, ça fonctionne parfaitement,

j'essaye de modifier moi-même parce qu'en fait j'ai 2 colonnes (A et B) où
je peux entrer une valeur, donc tous les conditions doivent etre
modifiée....

je vous redis si c'est bon !

JR

"Joachim Ruegsegger" news:
bonjour,

j'ai commencé à faire cette macro :

Sub gras()

Range("A3").Select

For Each c In Range("A3:A500")
ActiveCell.Select

If c.Value <> "" Then
MsgBox c.Value

End If
Next c
End Sub

J'aimerais à la place de la ligne "MsgBox c. Value" mettre le texte en
gras dans les cellule des 5 premières colonnes de la ligne de la cellule
active.

pour mettre en gras j'ai le code "Selection.Font.Bold = True" mais je ne
vois pas comment faire pour selectionner les 5 premières colonnes de la
ligne de la cellule active.

Ensuite 2ème question, j'ai mit cette macro dans la page code d'un onglet,
est-ce que la macro va fonctionne en continu dès que l'onglet est ouvert
ou pas ?

en fait j'aimerais que la macro "tourne" en continu et dès qu'une valeur
est entrée dans la rangée A, les cellules des 5 première colonne (y
compris la A) de la ligne se mette en gras.


voila, j'espère que j'ai été assez clair mdr.

Cordialement

JR



Joachim Ruegsegger
Le #4553071
et voila j'ai modifié, ça marche parfaitement,

le code final

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [A3:B500]) Is Nothing Then
Cancel = True
End If

ActiveSheet.Unprotect Password:="modif"

'METTRE GRAS'

For Each CelpleinA In Range("A3:A500")
If CelpleinA.Value <> "" Then
Range(CelpleinA, CelpleinA.Offset(0, 4)).Font.Bold = True
End If
Next CelpleinA

For Each CelpleinB In Range("B3:B500")
If CelpleinB.Value <> "" Then
Range(CelpleinB, CelpleinB.Offset(0, 3)).Font.Bold = True
End If
Next CelpleinB

'ENLEVER GRAS'

For Each CelvidecolA In Range("A3:A500")
If CelvidecolA.Value = "" And CelvidecolA.Offset(0, 1).Value = "" Then
Range(CelvidecolA, CelvidecolA.Offset(0, 4)).Font.Bold = False
End If
Next CelvidecolA

For Each CelvidecolB In Range("B3:B500")
If CelvidecolB.Value = "" And CelvidecolB.Offset(0, -1).Value = "" Then
Range(CelvidecolB, CelvidecolB.Offset(0, 3)).Font.Bold = False
End If
Next CelvidecolB

ActiveSheet.Protect Password:="modif"
End Sub

maintenant si je copie ce code pour d'autre feuille, est-ce que je dois
changer le nom de mes variables pour les autres feuilles (ex:CelpleinA) ?


Cordialement

JR

"Joachim Ruegsegger" news:
bonjour,

j'ai commencé à faire cette macro :

Sub gras()

Range("A3").Select

For Each c In Range("A3:A500")
ActiveCell.Select

If c.Value <> "" Then
MsgBox c.Value

End If
Next c
End Sub

J'aimerais à la place de la ligne "MsgBox c. Value" mettre le texte en
gras dans les cellule des 5 premières colonnes de la ligne de la cellule
active.

pour mettre en gras j'ai le code "Selection.Font.Bold = True" mais je ne
vois pas comment faire pour selectionner les 5 premières colonnes de la
ligne de la cellule active.

Ensuite 2ème question, j'ai mit cette macro dans la page code d'un onglet,
est-ce que la macro va fonctionne en continu dès que l'onglet est ouvert
ou pas ?

en fait j'aimerais que la macro "tourne" en continu et dès qu'une valeur
est entrée dans la rangée A, les cellules des 5 première colonne (y
compris la A) de la ligne se mette en gras.


voila, j'espère que j'ai été assez clair mdr.

Cordialement

JR



Joachim Ruegsegger
Le #4552981
maintenant si je copie ce code pour d'autre feuille, est-ce que je dois
changer le nom de mes variables pour les autres feuilles (ex:CelpleinA) ?


Cordialement

JR

"Joachim Ruegsegger" news:
et voila j'ai modifié, ça marche parfaitement,

le code final

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [A3:B500]) Is Nothing Then
Cancel = True
End If

ActiveSheet.Unprotect Password:="modif"

'METTRE GRAS'

For Each CelpleinA In Range("A3:A500")
If CelpleinA.Value <> "" Then
Range(CelpleinA, CelpleinA.Offset(0, 4)).Font.Bold = True
End If
Next CelpleinA

For Each CelpleinB In Range("B3:B500")
If CelpleinB.Value <> "" Then
Range(CelpleinB, CelpleinB.Offset(0, 3)).Font.Bold = True
End If
Next CelpleinB

'ENLEVER GRAS'

For Each CelvidecolA In Range("A3:A500")
If CelvidecolA.Value = "" And CelvidecolA.Offset(0, 1).Value = "" Then
Range(CelvidecolA, CelvidecolA.Offset(0, 4)).Font.Bold = False
End If
Next CelvidecolA

For Each CelvidecolB In Range("B3:B500")
If CelvidecolB.Value = "" And CelvidecolB.Offset(0, -1).Value = "" Then
Range(CelvidecolB, CelvidecolB.Offset(0, 3)).Font.Bold = False
End If
Next CelvidecolB

ActiveSheet.Protect Password:="modif"
End Sub

maintenant si je copie ce code pour d'autre feuille, est-ce que je dois
changer le nom de mes variables pour les autres feuilles (ex:CelpleinA) ?


Cordialement

JR

"Joachim Ruegsegger" news:
bonjour,

j'ai commencé à faire cette macro :

Sub gras()

Range("A3").Select

For Each c In Range("A3:A500")
ActiveCell.Select

If c.Value <> "" Then
MsgBox c.Value

End If
Next c
End Sub

J'aimerais à la place de la ligne "MsgBox c. Value" mettre le texte en
gras dans les cellule des 5 premières colonnes de la ligne de la cellule
active.

pour mettre en gras j'ai le code "Selection.Font.Bold = True" mais je ne
vois pas comment faire pour selectionner les 5 premières colonnes de la
ligne de la cellule active.

Ensuite 2ème question, j'ai mit cette macro dans la page code d'un
onglet, est-ce que la macro va fonctionne en continu dès que l'onglet est
ouvert ou pas ?

en fait j'aimerais que la macro "tourne" en continu et dès qu'une valeur
est entrée dans la rangée A, les cellules des 5 première colonne (y
compris la A) de la ligne se mette en gras.


voila, j'espère que j'ai été assez clair mdr.

Cordialement

JR







tissot.emmanuel
Le #4552931
Re-Bonjour,

Concernant le nom des variables si tu veux les conserver identiques d'une
feuille à l'autre je te recommande de les déclarer à l'intérieur même de la
procédure, c'est plus "propre".

Je pense toutefois qu'il y a un malentendu sur les instructions suivantes:
If Not Intersect(Target, [A3:B500]) Is Nothing Then
Cancel = True
End If
Ce test ne sert absolument à rien: Si Target ne fait pas partie de ta plage

Cancel est vrai. Mais que signifie Cancel? En général c'est un argument de
procédure évènementielle qui sert à empécher l'évènement de se produire, il
apparait notamment dans les procédures WorkBook_BeforeClose,
WorkBook_BeforeSave.
En l'occurence il n'empechera rien car la déclaration de Worksheet_Change ne
prévoit pas l'annulation de l'évenement, ta procédure va donc s'exécuter
quelque soit la cellule modifiée.

Ta procédure devrait donc se présenter ainsi:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A3:B500]) Is Nothing Then
ActiveSheet.Unprotect Password:="modif"

'METTRE GRAS'

'ENLEVER GRAS'

ActiveSheet.Protect Password:="modif"
End If
End Sub

Bien cordialement,

Manu/
"Joachim Ruegsegger" news:
maintenant si je copie ce code pour d'autre feuille, est-ce que je dois
changer le nom de mes variables pour les autres feuilles (ex:CelpleinA) ?


Cordialement

JR

"Joachim Ruegsegger" news:
et voila j'ai modifié, ça marche parfaitement,

le code final

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [A3:B500]) Is Nothing Then
Cancel = True
End If

ActiveSheet.Unprotect Password:="modif"

'METTRE GRAS'

For Each CelpleinA In Range("A3:A500")
If CelpleinA.Value <> "" Then
Range(CelpleinA, CelpleinA.Offset(0, 4)).Font.Bold = True
End If
Next CelpleinA

For Each CelpleinB In Range("B3:B500")
If CelpleinB.Value <> "" Then
Range(CelpleinB, CelpleinB.Offset(0, 3)).Font.Bold = True
End If
Next CelpleinB

'ENLEVER GRAS'

For Each CelvidecolA In Range("A3:A500")
If CelvidecolA.Value = "" And CelvidecolA.Offset(0, 1).Value = "" Then
Range(CelvidecolA, CelvidecolA.Offset(0, 4)).Font.Bold = False
End If
Next CelvidecolA

For Each CelvidecolB In Range("B3:B500")
If CelvidecolB.Value = "" And CelvidecolB.Offset(0, -1).Value = ""
Then
Range(CelvidecolB, CelvidecolB.Offset(0, 3)).Font.Bold = False
End If
Next CelvidecolB

ActiveSheet.Protect Password:="modif"
End Sub

maintenant si je copie ce code pour d'autre feuille, est-ce que je dois
changer le nom de mes variables pour les autres feuilles (ex:CelpleinA) ?


Cordialement

JR

"Joachim Ruegsegger" de news:
bonjour,

j'ai commencé à faire cette macro :

Sub gras()

Range("A3").Select

For Each c In Range("A3:A500")
ActiveCell.Select

If c.Value <> "" Then
MsgBox c.Value

End If
Next c
End Sub

J'aimerais à la place de la ligne "MsgBox c. Value" mettre le texte en
gras dans les cellule des 5 premières colonnes de la ligne de la cellule
active.

pour mettre en gras j'ai le code "Selection.Font.Bold = True" mais je ne
vois pas comment faire pour selectionner les 5 premières colonnes de la
ligne de la cellule active.

Ensuite 2ème question, j'ai mit cette macro dans la page code d'un
onglet, est-ce que la macro va fonctionne en continu dès que l'onglet
est ouvert ou pas ?

en fait j'aimerais que la macro "tourne" en continu et dès qu'une valeur
est entrée dans la rangée A, les cellules des 5 première colonne (y
compris la A) de la ligne se mette en gras.


voila, j'espère que j'ai été assez clair mdr.

Cordialement

JR











FFO
Le #4552731
Salut tissot
Merci du renseignement
J'en apprends tous les jours !!!
Je capitalise donc

A bientôt sans doute


Re-Bonjour,

Concernant le nom des variables si tu veux les conserver identiques d'une
feuille à l'autre je te recommande de les déclarer à l'intérieur même de la
procédure, c'est plus "propre".

Je pense toutefois qu'il y a un malentendu sur les instructions suivantes:
If Not Intersect(Target, [A3:B500]) Is Nothing Then
Cancel = True
End If
Ce test ne sert absolument à rien: Si Target ne fait pas partie de ta plage

Cancel est vrai. Mais que signifie Cancel? En général c'est un argument de
procédure évènementielle qui sert à empécher l'évènement de se produire, il
apparait notamment dans les procédures WorkBook_BeforeClose,
WorkBook_BeforeSave.
En l'occurence il n'empechera rien car la déclaration de Worksheet_Change ne
prévoit pas l'annulation de l'évenement, ta procédure va donc s'exécuter
quelque soit la cellule modifiée.

Ta procédure devrait donc se présenter ainsi:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A3:B500]) Is Nothing Then
ActiveSheet.Unprotect Password:="modif"

'METTRE GRAS'

'ENLEVER GRAS'

ActiveSheet.Protect Password:="modif"
End If
End Sub

Bien cordialement,

Manu/
"Joachim Ruegsegger" news:
maintenant si je copie ce code pour d'autre feuille, est-ce que je dois
changer le nom de mes variables pour les autres feuilles (ex:CelpleinA) ?


Cordialement

JR

"Joachim Ruegsegger" news:
et voila j'ai modifié, ça marche parfaitement,

le code final

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, [A3:B500]) Is Nothing Then
Cancel = True
End If

ActiveSheet.Unprotect Password:="modif"

'METTRE GRAS'

For Each CelpleinA In Range("A3:A500")
If CelpleinA.Value <> "" Then
Range(CelpleinA, CelpleinA.Offset(0, 4)).Font.Bold = True
End If
Next CelpleinA

For Each CelpleinB In Range("B3:B500")
If CelpleinB.Value <> "" Then
Range(CelpleinB, CelpleinB.Offset(0, 3)).Font.Bold = True
End If
Next CelpleinB

'ENLEVER GRAS'

For Each CelvidecolA In Range("A3:A500")
If CelvidecolA.Value = "" And CelvidecolA.Offset(0, 1).Value = "" Then
Range(CelvidecolA, CelvidecolA.Offset(0, 4)).Font.Bold = False
End If
Next CelvidecolA

For Each CelvidecolB In Range("B3:B500")
If CelvidecolB.Value = "" And CelvidecolB.Offset(0, -1).Value = ""
Then
Range(CelvidecolB, CelvidecolB.Offset(0, 3)).Font.Bold = False
End If
Next CelvidecolB

ActiveSheet.Protect Password:="modif"
End Sub

maintenant si je copie ce code pour d'autre feuille, est-ce que je dois
changer le nom de mes variables pour les autres feuilles (ex:CelpleinA) ?


Cordialement

JR

"Joachim Ruegsegger" de news:
bonjour,

j'ai commencé à faire cette macro :

Sub gras()

Range("A3").Select

For Each c In Range("A3:A500")
ActiveCell.Select

If c.Value <> "" Then
MsgBox c.Value

End If
Next c
End Sub

J'aimerais à la place de la ligne "MsgBox c. Value" mettre le texte en
gras dans les cellule des 5 premières colonnes de la ligne de la cellule
active.

pour mettre en gras j'ai le code "Selection.Font.Bold = True" mais je ne
vois pas comment faire pour selectionner les 5 premières colonnes de la
ligne de la cellule active.

Ensuite 2ème question, j'ai mit cette macro dans la page code d'un
onglet, est-ce que la macro va fonctionne en continu dès que l'onglet
est ouvert ou pas ?

en fait j'aimerais que la macro "tourne" en continu et dès qu'une valeur
est entrée dans la rangée A, les cellules des 5 première colonne (y
compris la A) de la ligne se mette en gras.


voila, j'espère que j'ai été assez clair mdr.

Cordialement

JR
















AV
Le #4552691
".... mettre le texte en gras dans les cellule des 5 premières colonnes de la
ligne de la cellule active."

Une MEFC :

http://cjoint.com/?fyqI6FdWwY

AV
Publicité
Poster une réponse
Anonyme