OVH Cloud OVH Cloud

Changement de couleur

13 réponses
Avatar
Érico
Bonjour à tous,

Je voulais une macro qui faisait en sorte que si l'utrilisateur du
formulaire Excel modifuie une donnée dans une cellule, je suis puisse les
identifier par une couleur. J'ai la macro suivante et elle ne fonctionne
pas. Pourquoi?
___________________________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([B2:B10,D2:D10], Target) Is Nothing And Target.Count = 1
Then
Target.Interior.ColorIndex = 3
End If
End Sub
___________________________________________________

Merci

Érico de Montréal

3 réponses

1 2
Avatar
lSteph
je ne sais pas si je me suis bien explique en fait
Pour ce qui me concerne il me semble que si!


Cordialement.

lSteph.

a écrit dans le message de news:

je ne sais pas si je me suis bien explique en fait.
j ai un tableau qui va reprendre les numeros de semaine d un tableau
source.(formule index(equiv)) Et j aurais voulu que des que ceux ci
evoluent, leur cellule ou leu police change independemment de la valeur
elle meme. C est pour ca que le changement de couleur m interessait.
cordialement.
ps: mes connaissances en VBA sont quasie nulles.


Bonjour,

Mon post visait en réponse à la question (qui s'éloigne légèrement du
post
initial)
à expliquer pourquoi la détection d'un change ne s'appliquait pas au
calcul

.(si je remplace, change par calculate: erreur)
..bien évidemment!

il ne suffit pas de changer un terme cela demande à être adapté au
contexte
de cet évennement
on ne cible d'ailleurs plus de target puisqu'il s'agit de détecter un
recalcul
je ne vois pas trop
c'est pourquoi plutôt que de te lancer dans un truc inutilement compliqué

ou de réinventer la roue, je t'oriente vers les MEFC
car la liaison est un numero de semaine (on peut utiliser la formule
est)
et

outre l'aide d'excel dans laquelle un minimum de recherche personnelle
est
possible avant de poster
l'endroit où tu trouveras et au delà même ce que tu cherches
http://excelabo.net

Exemple de mefc :
En a1 une valeur de 1 à 52
on veut b2:b10 en rouge si $A$1 #
(sélectionner) b2:b10
Menu Format Mise en forme conditionnelle
la formule est =$a$1#
Bouton Format Motif Rouge

Cordialement.

lSteph
a écrit dans le message de news:

rebonjour,
je ne vois pas trop comment utiliser la fonction calculate dans la
procedure.(si je remplace, change par calculate: erreur)
pour les MEFC, je ne vois pas trop comment mettre ca en pratique car la
liaison est un numero de semaine qui varie de 1 a 52 et je voudrais que
la cellule se colore en rouge (par exemple) des que ce numero change.
cordialement
Y

Bonjour,

Il serait bon d'utiliser une Mise En Forme Conditionnelle pour ce genre
de
truc
sinon pour plus sur les MEFC ou leur étendue en VBA voir
ce qu'en propose assez largement http://excelabo.net

En outre donc:
il ne s'agit pas d'une fonction (qui n'aurait pas ainsi cette faculté)
mais
d'une procédure liée à l'évennement change
Private Sub Worksheet_Change(ByVal Target As Range)
ainsi cela réagit lorsque l'utilisateur effectue un changement de valeur
dans une plage de la feuille
donc ici limitée par Intersect modifie la valeur ciblée en
If Not Intersect([B2:B10,D2:D10], Target) Is Nothing
et target.count =1 limite la cible à une seule cellule de la plage.



mais ca ne marche pas lorsqu il y a des liaisons..
c'est normal l'utilisateur n'a rien modifié par saisie en B2:B10,D2:D10

mais
c'est le recalcul qui a tenu compte
du changement de valeur de la cellule liée c'est donc alors celle-ci
qu'il
faudrait, ailleurs, aller cibler
ou plus
globalement (mais cela deviendra peut-être agaçant, ....
..., pour executer systématiquement lors des changement de valeurs il
faudrait
utiliser Calculate plutôt que Change..

....aussi plus simplement dans ce cas une MEFC.

Cordialement


lSteph

a écrit dans le message de news:

bonjour, j utilise cette fonction qui marche tres bien lorsqu on change
directement les valeurs dans la cellule mais ca ne marche pas lorsqu il
y a des liaisons..
est-ce possible?
merci
___________________________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([B2:B10,D2:D10], Target) Is Nothing And
Target.Count
1
Then




Target.Interior.ColorIndex = 3
End If
End Sub
___________________________________________________

Merci

Érico de Montréal













Avatar
lebrasyann
oui ou alors c est moi qui ai du mal a me reveiller..
parce que dans ton exemple de MEFC:

"Exemple de mefc :
En a1 une valeur de 1 à 52
on veut b2:b10 en rouge si $A$1 #
(sélectionner) b2:b10
Menu Format Mise en forme conditionnelle
la formule est =$a$1#
Bouton Format Motif Rouge "

on a la coloration en rouge si $A$1 #.
Mais si $A$1$; 25 ou 10 ou si tout simplement la valeur n a pas
change?
c est la mon probleme.
un changement de couleur si la valeur de la formule a change.
j ai cherche sur le groupe Excel, sous Excelabo...
je sais plus la. sincerement ca m a pris bien la tete...
et en voyant ce sujet, je me suis dit : peut etre que ca peut
marcher...


je ne sais pas si je me suis bien explique en fait
Pour ce qui me concerne il me semble que si!


Cordialement.

lSteph.

a écrit dans le message de news:

je ne sais pas si je me suis bien explique en fait.
j ai un tableau qui va reprendre les numeros de semaine d un tableau
source.(formule index(equiv)) Et j aurais voulu que des que ceux ci
evoluent, leur cellule ou leu police change independemment de la valeur
elle meme. C est pour ca que le changement de couleur m interessait.
cordialement.
ps: mes connaissances en VBA sont quasie nulles.


Bonjour,

Mon post visait en réponse à la question (qui s'éloigne légè rement du
post
initial)
à expliquer pourquoi la détection d'un change ne s'appliquait pas au
calcul

.(si je remplace, change par calculate: erreur)
..bien évidemment!

il ne suffit pas de changer un terme cela demande à être adapté au
contexte
de cet évennement
on ne cible d'ailleurs plus de target puisqu'il s'agit de détecter un
recalcul
je ne vois pas trop
c'est pourquoi plutôt que de te lancer dans un truc inutilement compl iqué

ou de réinventer la roue, je t'oriente vers les MEFC
car la liaison est un numero de semaine (on peut utiliser la formule
est)
et

outre l'aide d'excel dans laquelle un minimum de recherche personnelle
est
possible avant de poster
l'endroit où tu trouveras et au delà même ce que tu cherches
http://excelabo.net

Exemple de mefc :
En a1 une valeur de 1 à 52
on veut b2:b10 en rouge si $A$1 #
(sélectionner) b2:b10
Menu Format Mise en forme conditionnelle
la formule est =$a$1#
Bouton Format Motif Rouge

Cordialement.

lSteph
a écrit dans le message de news:

rebonjour,
je ne vois pas trop comment utiliser la fonction calculate dans la
procedure.(si je remplace, change par calculate: erreur)
pour les MEFC, je ne vois pas trop comment mettre ca en pratique car la
liaison est un numero de semaine qui varie de 1 a 52 et je voudrais que
la cellule se colore en rouge (par exemple) des que ce numero change.
cordialement
Y

Bonjour,

Il serait bon d'utiliser une Mise En Forme Conditionnelle pour ce ge nre
de
truc
sinon pour plus sur les MEFC ou leur étendue en VBA voir
ce qu'en propose assez largement http://excelabo.net

En outre donc:
il ne s'agit pas d'une fonction (qui n'aurait pas ainsi cette facult é)
mais
d'une procédure liée à l'évennement change
Private Sub Worksheet_Change(ByVal Target As Range)
ainsi cela réagit lorsque l'utilisateur effectue un changement de v aleur
dans une plage de la feuille
donc ici limitée par Intersect modifie la valeur ciblée en
If Not Intersect([B2:B10,D2:D10], Target) Is Nothing
et target.count =1 limite la cible à une seule cellule de la plag e.



mais ca ne marche pas lorsqu il y a des liaisons..
c'est normal l'utilisateur n'a rien modifié par saisie en B2:B10,D2 :D10

mais
c'est le recalcul qui a tenu compte
du changement de valeur de la cellule liée c'est donc alors celle-ci
qu'il
faudrait, ailleurs, aller cibler
ou plus
globalement (mais cela deviendra peut-être agaçant, ....
..., pour executer systématiquement lors des changement de valeurs il
faudrait
utiliser Calculate plutôt que Change..

....aussi plus simplement dans ce cas une MEFC.

Cordialement


lSteph

a écrit dans le message de news:

bonjour, j utilise cette fonction qui marche tres bien lorsqu on chan ge
directement les valeurs dans la cellule mais ca ne marche pas lorsqu il
y a des liaisons..
est-ce possible?
merci
___________________________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([B2:B10,D2:D10], Target) Is Nothing And
Target.Count
=
1
Then
Target.Interior.ColorIndex = 3
End If
End Sub
___________________________________________________

Merci

Érico de Montréal











Avatar
Érico
J'ai trouvé pourquoi il ne fonctionnait pas, je l'avais dans le "Workbook"

Merci beaucoup!


a écrit dans le message de news:

oui ou alors c est moi qui ai du mal a me reveiller..
parce que dans ton exemple de MEFC:

"Exemple de mefc :
En a1 une valeur de 1 à 52
on veut b2:b10 en rouge si $A$1 #
(sélectionner) b2:b10
Menu Format Mise en forme conditionnelle
la formule est =$a$1#
Bouton Format Motif Rouge "

on a la coloration en rouge si $A$1 #.
Mais si $A$1$; 25 ou 10 ou si tout simplement la valeur n a pas
change?
c est la mon probleme.
un changement de couleur si la valeur de la formule a change.
j ai cherche sur le groupe Excel, sous Excelabo...
je sais plus la. sincerement ca m a pris bien la tete...
et en voyant ce sujet, je me suis dit : peut etre que ca peut
marcher...


je ne sais pas si je me suis bien explique en fait
Pour ce qui me concerne il me semble que si!


Cordialement.

lSteph.

a écrit dans le message de news:

je ne sais pas si je me suis bien explique en fait.
j ai un tableau qui va reprendre les numeros de semaine d un tableau
source.(formule index(equiv)) Et j aurais voulu que des que ceux ci
evoluent, leur cellule ou leu police change independemment de la valeur
elle meme. C est pour ca que le changement de couleur m interessait.
cordialement.
ps: mes connaissances en VBA sont quasie nulles.


Bonjour,

Mon post visait en réponse à la question (qui s'éloigne légèrement du
post
initial)
à expliquer pourquoi la détection d'un change ne s'appliquait pas au
calcul

.(si je remplace, change par calculate: erreur)
..bien évidemment!

il ne suffit pas de changer un terme cela demande à être adapté au
contexte
de cet évennement
on ne cible d'ailleurs plus de target puisqu'il s'agit de détecter un
recalcul
je ne vois pas trop
c'est pourquoi plutôt que de te lancer dans un truc inutilement

compliqué
ou de réinventer la roue, je t'oriente vers les MEFC
car la liaison est un numero de semaine (on peut utiliser la formule
est)
et

outre l'aide d'excel dans laquelle un minimum de recherche personnelle
est
possible avant de poster
l'endroit où tu trouveras et au delà même ce que tu cherches
http://excelabo.net

Exemple de mefc :
En a1 une valeur de 1 à 52
on veut b2:b10 en rouge si $A$1 #
(sélectionner) b2:b10
Menu Format Mise en forme conditionnelle
la formule est =$a$1#
Bouton Format Motif Rouge

Cordialement.

lSteph
a écrit dans le message de news:

rebonjour,
je ne vois pas trop comment utiliser la fonction calculate dans la
procedure.(si je remplace, change par calculate: erreur)
pour les MEFC, je ne vois pas trop comment mettre ca en pratique car la
liaison est un numero de semaine qui varie de 1 a 52 et je voudrais que
la cellule se colore en rouge (par exemple) des que ce numero change.
cordialement
Y

Bonjour,

Il serait bon d'utiliser une Mise En Forme Conditionnelle pour ce
genre
de
truc
sinon pour plus sur les MEFC ou leur étendue en VBA voir
ce qu'en propose assez largement http://excelabo.net

En outre donc:
il ne s'agit pas d'une fonction (qui n'aurait pas ainsi cette faculté)
mais
d'une procédure liée à l'évennement change
Private Sub Worksheet_Change(ByVal Target As Range)
ainsi cela réagit lorsque l'utilisateur effectue un changement de
valeur
dans une plage de la feuille
donc ici limitée par Intersect modifie la valeur ciblée en
If Not Intersect([B2:B10,D2:D10], Target) Is Nothing
et target.count =1 limite la cible à une seule cellule de la plage.



mais ca ne marche pas lorsqu il y a des liaisons..
c'est normal l'utilisateur n'a rien modifié par saisie en

B2:B10,D2:D10
mais
c'est le recalcul qui a tenu compte
du changement de valeur de la cellule liée c'est donc alors celle-ci
qu'il
faudrait, ailleurs, aller cibler
ou plus
globalement (mais cela deviendra peut-être agaçant, ....
..., pour executer systématiquement lors des changement de valeurs
il
faudrait
utiliser Calculate plutôt que Change..

....aussi plus simplement dans ce cas une MEFC.

Cordialement


lSteph

a écrit dans le message de news:

bonjour, j utilise cette fonction qui marche tres bien lorsqu on
change
directement les valeurs dans la cellule mais ca ne marche pas lorsqu
il
y a des liaisons..
est-ce possible?
merci
___________________________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([B2:B10,D2:D10], Target) Is Nothing And
Target.Count
1
Then





Target.Interior.ColorIndex = 3
End If
End Sub
___________________________________________________

Merci

Érico de Montréal
















1 2