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

macro J Boigontier

11 réponses
Avatar
AnB
Bonsoir
J'ai découvert cette macro de Mr Boisgontier jacques

mais est il possible de mettre les couleurs sur une autre feuille

débutant en macro je ne comprend pas très bien ceci
If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then


Merci de votre

Anb
http://cjoint.com/?dytFwXWMCV

10 réponses

1 2
Avatar
StDonat
Bonsoir AnB
Je ne suis pas un pro mais je comprends cela:
Si il n'y a qu'une seul cellule de selectionner-->Target.Count=1
et-->And
que tu te trouve dans la zone A1:C15-->Not Intersect([A1:C15], Target) Is
Nothing
alors-->Then......
Avatar
LSteph
Bonsoir,

> mais est il possible de mettre les couleurs sur une autre feuille
oui mais explique mieux le contexte car je n'en vois qu'une dans ton
exemple.

>If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then
...
Cela signifie que l'on n'agit que si la cible a une intersection avec la
zone à traiter
>Not Intersect([A1:C15], Target) Is Nothing
et
..dommage (encore que c'est parfois voulu) une seule cellule
>Target.Count = 1
Cela intervient généralement dans un _Change
En l'occurence ça ne convient pas car
si je rentre "AR" en A6:G10 il faudrait qu'il se passe qqchose en A6:C10
Donc..
Sauf si l'on doit exercer plusieurs cas du même évennement
il est préférable de faire autrement soit souvent l'inverse

Donc je me permettrais un conseil...
;-)

Commencer (pour ceux qui veulent coder proprement) par déclarer une
variable objet qui visera l'intersection entre la zone dans laquelle on
saisit et celle à traiter
s'il n'y a pas d'intersection sortir et sinon
elle sera bouclée si la saisie
opère sur tout ou partie de la zone voulue
au lieu de négliger cette hypothèse de saisie multiple.

Dim iSect as range, c as range
Set iSect=Intersect([A1:C15], Target)
if isect is nothing then Exit Sub
application.enableeventsúlse
For each c in iSect.cells 'et oui c'est bien l'intersection
'...traitement de c
next c
application.enableevents=true

'a+
'lSteph



AnB a écrit :
Bonsoir
J'ai découvert cette macro de Mr Boisgontier jacques

mais est il possible de mettre les couleurs sur une autre feuille

débutant en macro je ne comprend pas très bien ceci
If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then


Merci de votre

Anb
http://cjoint.com/?dytFwXWMCV





Avatar
LSteph
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSect As Range, c As Range, p As Integer

Set iSect = Intersect([A1:C15], Target)
If iSect Is Nothing Then Exit Sub

Application.EnableEvents = False 'pas important ici
'mais le sera en cas de chgt de valeur

For Each c In iSect.Cells 'et oui c'est bien l'intersection
p = Application.Match(c, Range("couleursTém"), 0)
If Not IsError(p) Then _
c.Interior.ColorIndex = Range("couleursTém")(p).Interior.ColorIndex
Next c

Application.EnableEvents = True

End Sub


LSteph a écrit :
Bonsoir,

> mais est il possible de mettre les couleurs sur une autre feuille
oui mais explique mieux le contexte car je n'en vois qu'une dans ton
exemple.

>If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then
...
Cela signifie que l'on n'agit que si la cible a une intersection avec la
zone à traiter
>Not Intersect([A1:C15], Target) Is Nothing
et
..dommage (encore que c'est parfois voulu) une seule cellule
>Target.Count = 1
Cela intervient généralement dans un _Change
En l'occurence ça ne convient pas car
si je rentre "AR" en A6:G10 il faudrait qu'il se passe qqchose en A6:C10
Donc..
Sauf si l'on doit exercer plusieurs cas du même évennement
il est préférable de faire autrement soit souvent l'inverse

Donc je me permettrais un conseil...
;-)

Commencer (pour ceux qui veulent coder proprement) par déclarer une
variable objet qui visera l'intersection entre la zone dans laquelle on
saisit et celle à traiter
s'il n'y a pas d'intersection sortir et sinon
elle sera bouclée si la saisie
opère sur tout ou partie de la zone voulue
au lieu de négliger cette hypothèse de saisie multiple.

Dim iSect as range, c as range
Set iSect=Intersect([A1:C15], Target)
if isect is nothing then Exit Sub
application.enableeventsúlse
For each c in iSect.cells 'et oui c'est bien l'intersection
'...traitement de c
next c
application.enableevents=true

'a+
'lSteph



AnB a écrit :
Bonsoir
J'ai découvert cette macro de Mr Boisgontier jacques

mais est il possible de mettre les couleurs sur une autre feuille

débutant en macro je ne comprend pas très bien ceci
If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then


Merci de votre

Anb
http://cjoint.com/?dytFwXWMCV







Avatar
AnB
j'ai mis les couleurs zone (L4 à L12) sur une autre feuille du classeur, la
macro ne marcha pas
merci pour cet éclairage
Anb


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

Bonsoir,

> mais est il possible de mettre les couleurs sur une autre feuille
oui mais explique mieux le contexte car je n'en vois qu'une dans ton
exemple.

>If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then
...
Cela signifie que l'on n'agit que si la cible a une intersection avec la
zone à traiter
>Not Intersect([A1:C15], Target) Is Nothing
et
..dommage (encore que c'est parfois voulu) une seule cellule
>Target.Count = 1
Cela intervient généralement dans un _Change
En l'occurence ça ne convient pas car
si je rentre "AR" en A6:G10 il faudrait qu'il se passe qqchose en A6:C10
Donc..
Sauf si l'on doit exercer plusieurs cas du même évennement
il est préférable de faire autrement soit souvent l'inverse

Donc je me permettrais un conseil...
;-)

Commencer (pour ceux qui veulent coder proprement) par déclarer une
variable objet qui visera l'intersection entre la zone dans laquelle on
saisit et celle à traiter
s'il n'y a pas d'intersection sortir et sinon
elle sera bouclée si la saisie
opère sur tout ou partie de la zone voulue
au lieu de négliger cette hypothèse de saisie multiple.

Dim iSect as range, c as range
Set iSect=Intersect([A1:C15], Target)
if isect is nothing then Exit Sub
application.enableeventsúlse
For each c in iSect.cells 'et oui c'est bien l'intersection
'...traitement de c
next c
application.enableevents=true

'a+
'lSteph



AnB a écrit :
Bonsoir
J'ai découvert cette macro de Mr Boisgontier jacques

mais est il possible de mettre les couleurs sur une autre feuille

débutant en macro je ne comprend pas très bien ceci
If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then


Merci de votre

Anb
http://cjoint.com/?dytFwXWMCV






Avatar
LSteph
Attention si tu t'es planté réactive les évennements
depuis un module standard

sub react()
Application.EnableEvents = true
end sub


Définis le nom depuis la Feuil1 sur l'autre supposons Feuil2 et ca marche
ainsi depuis ton module de Feuil1

Private Sub Worksheet_Change(ByVal Target As Range)

Dim iSect As Range, c As Range, p As Integer
Set iSect = Intersect([A1:C15], Target)
If iSect Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each c In iSect.Cells 'et oui c'est bien l'intersection

p = Application.Match(c, Feuil2.Range("couleursTém"), 0)
If Not IsError(p) Then _
c.Interior.ColorIndex = Feuil2.Range("couleursTém")(p).Interior.ColorIndex
'...traitement de c

Next c
Application.EnableEvents = True

End Sub

'lSteph

AnB a écrit :
j'ai mis les couleurs zone (L4 à L12) sur une autre feuille du classeur, la
macro ne marcha pas
merci pour cet éclairage
Anb


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

Bonsoir,

mais est il possible de mettre les couleurs sur une autre feuille


oui mais explique mieux le contexte car je n'en vois qu'une dans ton
exemple.

If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then


...
Cela signifie que l'on n'agit que si la cible a une intersection avec la
zone à traiter
Not Intersect([A1:C15], Target) Is Nothing


et
..dommage (encore que c'est parfois voulu) une seule cellule
Target.Count = 1


Cela intervient généralement dans un _Change
En l'occurence ça ne convient pas car
si je rentre "AR" en A6:G10 il faudrait qu'il se passe qqchose en A6:C10
Donc..
Sauf si l'on doit exercer plusieurs cas du même évennement
il est préférable de faire autrement soit souvent l'inverse

Donc je me permettrais un conseil...
;-)

Commencer (pour ceux qui veulent coder proprement) par déclarer une
variable objet qui visera l'intersection entre la zone dans laquelle on
saisit et celle à traiter
s'il n'y a pas d'intersection sortir et sinon
elle sera bouclée si la saisie
opère sur tout ou partie de la zone voulue
au lieu de négliger cette hypothèse de saisie multiple.

Dim iSect as range, c as range
Set iSect=Intersect([A1:C15], Target)
if isect is nothing then Exit Sub
application.enableeventsúlse
For each c in iSect.cells 'et oui c'est bien l'intersection
'...traitement de c
next c
application.enableevents=true

'a+
'lSteph



AnB a écrit :
Bonsoir
J'ai découvert cette macro de Mr Boisgontier jacques

mais est il possible de mettre les couleurs sur une autre feuille

débutant en macro je ne comprend pas très bien ceci
If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then


Merci de votre

Anb
http://cjoint.com/?dytFwXWMCV









Avatar
JB
Bonjour,


http://cjoint.com/?dzgIxstNSH

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([A1:C15], Target) Is Nothing Then
On Error Resume Next
Target.Interior.ColorIndex = [couleurs].Find(Target,
LookAt:=xlWhole).Interior.ColorIndex
End If
End Sub

JB
http://boisgontierjacques.free.fr/

On 22 mar, 20:45, "AnB" wrote:
Bonsoir
J'ai découvert cette macro de Mr Boisgontier jacques

mais est il possible de mettre les couleurs sur une autre feuille

débutant en macro je ne comprend pas très bien ceci
 If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 T hen

Merci de votre

Anbhttp://cjoint.com/?dytFwXWMCV


Avatar
LSteph
Bonjour,

qu'on s'y prenne autrement ne change rien
à la façon de traiter seulement une intersection et pas ce qui est autour:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim iSect As Range, c As Range
Set iSect = Intersect([A1:C15], Target)
If iSect Is Nothing Then Exit Sub

Application.ScreenUpdating = False
On Error Resume Next
For Each c In iSect.Cells 'et oui c'est bien l'intersection

c.Interior.ColorIndex = [couleurs].Find(c, _
LookAt:=xlWhole).Interior.ColorIndex


Next c


End Sub

'lSteph

JB a écrit :
Bonjour,


http://cjoint.com/?dzgIxstNSH

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([A1:C15], Target) Is Nothing Then
On Error Resume Next
Target.Interior.ColorIndex = [couleurs].Find(Target,
LookAt:=xlWhole).Interior.ColorIndex
End If
End Sub

JB
http://boisgontierjacques.free.fr/

On 22 mar, 20:45, "AnB" wrote:
Bonsoir
J'ai découvert cette macro de Mr Boisgontier jacques

mais est il possible de mettre les couleurs sur une autre feuille

débutant en macro je ne comprend pas très bien ceci
If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then

Merci de votre

Anbhttp://cjoint.com/?dytFwXWMCV





Avatar
gmlsteph
Autre avantage de cette méthode, si on doit copier coller plusieurs
valeurs dans la plage
cela ne se contentera pas de la couleur de la première valeur du
Target mais bien de chaque valeur respective:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim iSect As Range, c As Range
Set iSect = Intersect([A1:C15], Target)
If iSect Is Nothing Then Exit Sub

On Error Resume Next
For Each c In iSect.Cells 'et oui c'est bien l'intersection
c.Interior.ColorIndex = [couleurs].Find(c, _
LookAt:=xlWhole).Interior.ColorIndex
Next c
End Sub

'lSteph


On 23 mar, 00:12, "AnB" wrote:
j'ai mis les couleurs zone (L4 à L12) sur une autre feuille du classeur , la
macro ne marcha pas
merci pour cet éclairage
Anb

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




> Bonsoir,

> > mais est il possible de mettre les couleurs sur une autre feuille
> oui mais explique mieux le contexte car je n'en vois qu'une dans ton
> exemple.

> >If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 T hen
> ...
> Cela signifie que l'on n'agit que si la cible a une intersection avec l a
> zone à traiter
> >Not Intersect([A1:C15], Target) Is Nothing
> et
> ..dommage (encore que  c'est parfois voulu) une seule cellule
> >Target.Count = 1
> Cela intervient généralement dans un _Change
> En l'occurence ça ne convient pas car
> si je rentre "AR" en A6:G10 il faudrait qu'il se passe qqchose en A6:C1 0
> Donc..
> Sauf si l'on doit exercer plusieurs cas du même évennement
> il est préférable de faire autrement soit souvent l'inverse

> Donc je me permettrais un conseil...
> ;-)

> Commencer (pour ceux qui veulent coder proprement) par déclarer une
> variable objet qui visera l'intersection  entre la zone dans laquelle on
> saisit et celle à traiter
> s'il n'y a pas d'intersection sortir et sinon
> elle sera bouclée si la saisie
> opère sur tout ou partie de la zone voulue
> au lieu de négliger cette hypothèse de saisie multiple.

> Dim iSect as range, c as range
> Set iSect=Intersect([A1:C15], Target)
> if isect is nothing then Exit Sub
> application.enableeventslse
> For each c in iSect.cells 'et oui c'est bien l'intersection
> '...traitement de c
> next c
> application.enableevents=true

> 'a+
> 'lSteph

> AnB a écrit :
>> Bonsoir
>> J'ai découvert cette macro de Mr Boisgontier jacques

>> mais est il possible de mettre les couleurs sur une autre feuille

>> débutant en macro je ne comprend pas très bien ceci
>>  If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then

>> Merci de votre

>> Anb
>>http://cjoint.com/?dytFwXWMCV- Masquer le texte des messages précéd ents -

- Afficher le texte des messages précédents -


Avatar
ptck
Merci encore à vous tous
AnB



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

Bonjour,

qu'on s'y prenne autrement ne change rien
à la façon de traiter seulement une intersection et pas ce qui est autour:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim iSect As Range, c As Range
Set iSect = Intersect([A1:C15], Target)
If iSect Is Nothing Then Exit Sub

Application.ScreenUpdating = False
On Error Resume Next
For Each c In iSect.Cells 'et oui c'est bien l'intersection

c.Interior.ColorIndex = [couleurs].Find(c, _
LookAt:=xlWhole).Interior.ColorIndex


Next c


End Sub

'lSteph

JB a écrit :
Bonjour,


http://cjoint.com/?dzgIxstNSH

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([A1:C15], Target) Is Nothing Then
On Error Resume Next
Target.Interior.ColorIndex = [couleurs].Find(Target,
LookAt:=xlWhole).Interior.ColorIndex
End If
End Sub

JB
http://boisgontierjacques.free.fr/

On 22 mar, 20:45, "AnB" wrote:
Bonsoir
J'ai découvert cette macro de Mr Boisgontier jacques

mais est il possible de mettre les couleurs sur une autre feuille

débutant en macro je ne comprend pas très bien ceci
If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then

Merci de votre

Anbhttp://cjoint.com/?dytFwXWMCV








Avatar
LSteph
..sans screenupdating c'est mieux si on veut copier plusieurs:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim iSect As Range, c As Range
Set iSect = Intersect([A1:C15], Target)
If iSect Is Nothing Then Exit Sub

On Error Resume Next
For Each c In iSect.Cells 'et oui c'est bien l'intersection
c.Interior.ColorIndex = [couleurs].Find(c, _
LookAt:=xlWhole).Interior.ColorIndex
Next c
End Sub


LSteph a écrit :
Bonjour,

qu'on s'y prenne autrement ne change rien
à la façon de traiter seulement une intersection et pas ce qui est autour:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim iSect As Range, c As Range
Set iSect = Intersect([A1:C15], Target)
If iSect Is Nothing Then Exit Sub

Application.ScreenUpdating = False
On Error Resume Next
For Each c In iSect.Cells 'et oui c'est bien l'intersection

c.Interior.ColorIndex = [couleurs].Find(c, _
LookAt:=xlWhole).Interior.ColorIndex


Next c


End Sub

'lSteph

JB a écrit :
Bonjour,


http://cjoint.com/?dzgIxstNSH

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([A1:C15], Target) Is Nothing Then
On Error Resume Next
Target.Interior.ColorIndex = [couleurs].Find(Target,
LookAt:=xlWhole).Interior.ColorIndex
End If
End Sub

JB
http://boisgontierjacques.free.fr/

On 22 mar, 20:45, "AnB" wrote:
Bonsoir
J'ai découvert cette macro de Mr Boisgontier jacques

mais est il possible de mettre les couleurs sur une autre feuille

débutant en macro je ne comprend pas très bien ceci
If Not Intersect([A1:C15], Target) Is Nothing And Target.Count = 1 Then

Merci de votre

Anbhttp://cjoint.com/?dytFwXWMCV







1 2