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

Macro sur evenement

4 réponses
Avatar
Claude HERRMANN
Bonjour,

Je désire modifier la couleur des caractères en fonction du texte que
j'inscrit.
3 posibilités de texte : DCM; DCG; et AC ( cela veut dire qu'il s'agit d'un
moteur courant continu, d'une génératrice, ou d'un moteur AC).
A opérer sur la plage de cellules E11 à E21.

J'ai trouvé sur la base de recherche Excell la solution suivante:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E11:E21")) Is Nothing Then
Select Case Target.Value
Case Is = ("DCG")
'MacroCouleurRouge
With Selection.Font
.ColorIndex = 3
End With
Case Is = ("DCM")
'MacroCouleurBleu
With Selection.Font
.ColorIndex = 5
End With
Case Is = ("AC")
'MarocouleurNoir
With Selection.Font
.ColorIndex = 1
End With
End Select
End If
End Sub


Cela marche ou semble marcher.
La séquence est la suivante:
Dans une cellule il est ecrit DCM en bleu
Je modifie en DCG : la couleur ne change pas. Comme je suis entré par Enter
le curseur se retrouve sur la cellule en dessous.
Lorsque je repasse le curseur sur la cellule que je viens de modifier la
couleur s'adapte .
Où est le schmilblic ?

En outre je voudrais ajouter un Msgbox : Si le texte ne correspond à aucune
des 3 valeurs : DCM; DCG; ou AC le Msgbox affiche : Cette catégorie n'existe
pas.
Je ne suis pas sûr d'y arriver tout seul.

Merci d'avance

4 réponses

Avatar
papou
Bonjour
Tu n'as pas choisi le bon évènement de feuille.
Modifie le code avec ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E11:E21")) Is Nothing Then
If Target.Value = "" Then Exit Sub
Select Case Target.Value
Case Is = "DCG"
'MacroCouleurRouge
Target.Font.ColorIndex = 3
Case Is = "DCM"
'MacroCouleurBleu
Target.Font.ColorIndex = 5
Case Is = "AC"
'MarocouleurNoir
Target.Font.ColorIndex = 1
Case Else
MsgBox "Cette catégorie n'existe pas", vbInformation, "Erreur"
Target.Font.ColorIndex = xlAutomatic
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
End Select
End If
End Sub

Cordialement
Pascal

"Claude HERRMANN" a écrit dans le message de
news: %
Bonjour,

Je désire modifier la couleur des caractères en fonction du texte que
j'inscrit.
3 posibilités de texte : DCM; DCG; et AC ( cela veut dire qu'il s'agit
d'un moteur courant continu, d'une génératrice, ou d'un moteur AC).
A opérer sur la plage de cellules E11 à E21.

J'ai trouvé sur la base de recherche Excell la solution suivante:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E11:E21")) Is Nothing Then
Select Case Target.Value
Case Is = ("DCG")
'MacroCouleurRouge
With Selection.Font
.ColorIndex = 3
End With
Case Is = ("DCM")
'MacroCouleurBleu
With Selection.Font
.ColorIndex = 5
End With
Case Is = ("AC")
'MarocouleurNoir
With Selection.Font
.ColorIndex = 1
End With
End Select
End If
End Sub


Cela marche ou semble marcher.
La séquence est la suivante:
Dans une cellule il est ecrit DCM en bleu
Je modifie en DCG : la couleur ne change pas. Comme je suis entré par
Enter le curseur se retrouve sur la cellule en dessous.
Lorsque je repasse le curseur sur la cellule que je viens de modifier la
couleur s'adapte .
Où est le schmilblic ?

En outre je voudrais ajouter un Msgbox : Si le texte ne correspond à
aucune des 3 valeurs : DCM; DCG; ou AC le Msgbox affiche : Cette catégorie
n'existe pas.
Je ne suis pas sûr d'y arriver tout seul.

Merci d'avance







Avatar
Philippe.R
Bonjour Claude,
Tu pourrais avantageusement remplacer VBA par une Mise En Forme Conditionnelle avec "si la valeur de la
cellule est" et deux des contenus, le troisième correspondant au format par défaut.
--
Amicales Salutations
XL 97 / 2000 / 2002

"Claude HERRMANN" a écrit dans le message de news:
%
Bonjour,

Je désire modifier la couleur des caractères en fonction du texte que j'inscrit.
3 posibilités de texte : DCM; DCG; et AC ( cela veut dire qu'il s'agit d'un moteur courant continu,
d'une génératrice, ou d'un moteur AC).
A opérer sur la plage de cellules E11 à E21.

J'ai trouvé sur la base de recherche Excell la solution suivante:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E11:E21")) Is Nothing Then
Select Case Target.Value
Case Is = ("DCG")
'MacroCouleurRouge
With Selection.Font
.ColorIndex = 3
End With
Case Is = ("DCM")
'MacroCouleurBleu
With Selection.Font
.ColorIndex = 5
End With
Case Is = ("AC")
'MarocouleurNoir
With Selection.Font
.ColorIndex = 1
End With
End Select
End If
End Sub


Cela marche ou semble marcher.
La séquence est la suivante:
Dans une cellule il est ecrit DCM en bleu
Je modifie en DCG : la couleur ne change pas. Comme je suis entré par Enter le curseur se retrouve sur
la cellule en dessous.
Lorsque je repasse le curseur sur la cellule que je viens de modifier la couleur s'adapte .
Où est le schmilblic ?

En outre je voudrais ajouter un Msgbox : Si le texte ne correspond à aucune des 3 valeurs : DCM; DCG;
ou AC le Msgbox affiche : Cette catégorie n'existe pas.
Je ne suis pas sûr d'y arriver tout seul.

Merci d'avance







Avatar
Claude HERRMANN
Bonjour,

Merci à Papou et à Philippe R ,
J'ai bien sur teste les 2 manières et cela fonctionne à merveille.
Pour l'instant j'utilise la modification de Papou qui a la possibilité
d'inserer un message d'erreur de saisie.
La methode de mise en forme conditionnelle me séduit beaucoup, et je
l'utilserai pour une autre application. Phlippe est t 'il possible de
dépasser les 3 conditions ?
Et pourqoi pas si la cellule ("ColonneLigne")est égale à "DCM" mise en forme
......?

Merci pour votre réponse si rapide
Claude






"Claude HERRMANN" a écrit dans le message de
news: %
Bonjour,

Je désire modifier la couleur des caractères en fonction du texte que
j'inscrit.
3 posibilités de texte : DCM; DCG; et AC ( cela veut dire qu'il s'agit
d'un moteur courant continu, d'une génératrice, ou d'un moteur AC).
A opérer sur la plage de cellules E11 à E21.

J'ai trouvé sur la base de recherche Excell la solution suivante:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E11:E21")) Is Nothing Then
Select Case Target.Value
Case Is = ("DCG")
'MacroCouleurRouge
With Selection.Font
.ColorIndex = 3
End With
Case Is = ("DCM")
'MacroCouleurBleu conditions With Selection.Font
.ColorIndex = 5
End With
Case Is = ("AC")
'MarocouleurNoir
With Selection.Font
.ColorIndex = 1
End With
End Select
End If
End Sub


Cela marche ou semble marcher.
La séquence est la suivante:
Dans une cellule il est ecrit DCM en bleu
Je modifie en DCG : la couleur ne change pas. Comme je suis entré par
Enter le curseur se retrouve sur la cellule en dessous.
Lorsque je repasse le curseur sur la cellule que je viens de modifier la
couleur s'adapte .
Où est le schmilblic ?

En outre je voudrais ajouter un Msgbox : Si le texte ne correspond à
aucune des 3 valeurs : DCM; DCG; ou AC le Msgbox affiche : Cette catégorie
n'existe pas.
Je ne suis pas sûr d'y arriver tout seul.

Merci d'avance







Avatar
Philippe.R
Re,
Pour dépasser trois conditions, retour à VBA obligatoire....
--
Amicales Salutations
XL 97 / 2000 / 2002

"Claude HERRMANN" a écrit dans le message de news:
OZyox%
Bonjour,

Merci à Papou et à Philippe R ,
J'ai bien sur teste les 2 manières et cela fonctionne à merveille.
Pour l'instant j'utilise la modification de Papou qui a la possibilité d'inserer un message d'erreur
de saisie.
La methode de mise en forme conditionnelle me séduit beaucoup, et je l'utilserai pour une autre
application. Phlippe est t 'il possible de dépasser les 3 conditions ?
Et pourqoi pas si la cellule ("ColonneLigne")est égale à "DCM" mise en forme ......?

Merci pour votre réponse si rapide
Claude






"Claude HERRMANN" a écrit dans le message de news:
%
Bonjour,

Je désire modifier la couleur des caractères en fonction du texte que j'inscrit.
3 posibilités de texte : DCM; DCG; et AC ( cela veut dire qu'il s'agit d'un moteur courant continu,
d'une génératrice, ou d'un moteur AC).
A opérer sur la plage de cellules E11 à E21.

J'ai trouvé sur la base de recherche Excell la solution suivante:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("E11:E21")) Is Nothing Then
Select Case Target.Value
Case Is = ("DCG")
'MacroCouleurRouge
With Selection.Font
.ColorIndex = 3
End With
Case Is = ("DCM")
'MacroCouleurBleu conditions With Selection.Font
.ColorIndex = 5
End With
Case Is = ("AC")
'MarocouleurNoir
With Selection.Font
.ColorIndex = 1
End With
End Select
End If
End Sub


Cela marche ou semble marcher.
La séquence est la suivante:
Dans une cellule il est ecrit DCM en bleu
Je modifie en DCG : la couleur ne change pas. Comme je suis entré par Enter le curseur se retrouve
sur la cellule en dessous.
Lorsque je repasse le curseur sur la cellule que je viens de modifier la couleur s'adapte .
Où est le schmilblic ?

En outre je voudrais ajouter un Msgbox : Si le texte ne correspond à aucune des 3 valeurs : DCM; DCG;
ou AC le Msgbox affiche : Cette catégorie n'existe pas.
Je ne suis pas sûr d'y arriver tout seul.

Merci d'avance