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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
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