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

10 réponses

1 2
Avatar
Daniel
Bonsoir.
Ca fonctionne chez moi.
Essaie d'exécuter : Application.EnableEvents=true dans une macro avant de
retester.
Cordialement.
Daniel
"Érico" a écrit dans le message de news:
%
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



Avatar
lSteph
Bonjour,

Outre la suggestion de Daniel
le cas échéant à vérifier également:
tu écris où?
....plus simplement
If Not Intersect([B2:D10], Target)

Cordialement.

lSteph




"Érico" a écrit dans le message de news:
%
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



Avatar
Érico
Je ne comprends pas ta patente???
Je fais ça comment?



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

Bonsoir.
Ca fonctionne chez moi.
Essaie d'exécuter : Application.EnableEvents=true dans une macro avant de
retester.
Cordialement.
Daniel
"Érico" a écrit dans le message de news:
%
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







Avatar
Daniel
Mets la macro suivante dans un module et exécute-la :

Sub test()
Application.EnableEvents = True
End Sub

Daniel

"Érico" a écrit dans le message de news:

Je ne comprends pas ta patente???
Je fais ça comment?



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

Bonsoir.
Ca fonctionne chez moi.
Essaie d'exécuter : Application.EnableEvents=true dans une macro avant de
retester.
Cordialement.
Daniel
"Érico" a écrit dans le message de news:
%
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











Avatar
jps
bonjour érico du Québec
chez moi cette proc marche très bien à condition que le Then soit en bout de
ligne après le = 1
j'obtiens de belles cellules rouges comme mes tomates lorsque je tape
quelquechose dans l'une ou plusieurs cellules de la plage
jps

"Érico" a écrit dans le message de news:
%
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



Avatar
lebrasyann
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
lSteph
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
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.Coun t =
1
Then
Target.Interior.ColorIndex = 3
End If
End Sub
___________________________________________________

Merci

Érico de Montréal







Avatar
lSteph
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
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ère ment 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 compliq ué

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 es t)
et

outre l'aide d'excel dans laquelle un minimum de recherche personnelle e st
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 val eur
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:D 10

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.Co unt
=
1
Then
Target.Interior.ColorIndex = 3
End If
End Sub
___________________________________________________

Merci

Érico de Montréal









1 2