OVH Cloud OVH Cloud

Avec la cellule

18 réponses
Avatar
Alpha
Bonjour,
1
je souhaite lancer une proc lorsque je clique dans une place de cellule de
A2:A10
2
je souhaite lancer une proc lorsque je quitte une cellule de A2:A10

Merci à tous
Alpha

10 réponses

1 2
Avatar
AV
Dans le module de la feuille :
Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If Intersect(zz, [A2:A10]) Is Nothing Then macro2 Else macro1
End Sub

Sub macro1()
MsgBox "je suis en A2:A10"
End Sub

Sub macro2()
MsgBox "je ne suis pas en A2:A10"
End Sub


AV
Avatar
Philippe.R
Bonjour Alpha,
En essayant de tenir compte des observations de mes Maîtres, je propose :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a2:a10")) Is Nothing Then
MsgBox "Tiens, la plage !" 'ta procédure 1 à la place du message
Else
MsgBox "Oh, la belle mère !" 'ta procédure 2 à la place du message
End If
End Sub

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Alpha" a écrit dans le message de news:%
Bonjour,
1
je souhaite lancer une proc lorsque je clique dans une place de cellule de
A2:A10
2
je souhaite lancer une proc lorsque je quitte une cellule de A2:A10

Merci à tous
Alpha





Avatar
Alpha
Merci beaucoup, c'est très clair.
Alpha

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

Dans le module de la feuille :
Private Sub Worksheet_SelectionChange(ByVal zz As Range)
If Intersect(zz, [A2:A10]) Is Nothing Then macro2 Else macro1
End Sub

Sub macro1()
MsgBox "je suis en A2:A10"
End Sub

Sub macro2()
MsgBox "je ne suis pas en A2:A10"
End Sub


AV




Avatar
Alpha
Merci beaucoup Philippe, c'est très bien également.
Alpha

"Philippe.R" a écrit dans le message de news:

Bonjour Alpha,
En essayant de tenir compte des observations de mes Maîtres, je propose :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a2:a10")) Is Nothing Then
MsgBox "Tiens, la plage !" 'ta procédure 1 à la place du message
Else
MsgBox "Oh, la belle mère !" 'ta procédure 2 à la place du message
End If
End Sub

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Alpha" a écrit dans le message de
news:%

Bonjour,
1
je souhaite lancer une proc lorsque je clique dans une place de cellule
de


A2:A10
2
je souhaite lancer une proc lorsque je quitte une cellule de A2:A10

Merci à tous
Alpha









Avatar
AV
Retour reçu 5/5

AV
Avatar
Philippe.R
C'était vraiment avec plaisir Alpha !
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"Alpha" a écrit dans le message de news:
Merci beaucoup Philippe, c'est très bien également.
Alpha

"Philippe.R" a écrit dans le message de news:

Bonjour Alpha,
En essayant de tenir compte des observations de mes Maîtres, je propose :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a2:a10")) Is Nothing Then
MsgBox "Tiens, la plage !" 'ta procédure 1 à la place du message
Else
MsgBox "Oh, la belle mère !" 'ta procédure 2 à la place du message
End If
End Sub

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Alpha" a écrit dans le message de
news:%

Bonjour,
1
je souhaite lancer une proc lorsque je clique dans une place de cellule
de


A2:A10
2
je souhaite lancer une proc lorsque je quitte une cellule de A2:A10

Merci à tous
Alpha













Avatar
Michel Gaboly
Bonjour Alpha,

Je t'avais proposoé hier soir, les événements BeforeDoubleClick ou
BeforeRightClick, car SelectionChange est moins précis : si tu
sélectionnes la colonne A, ou si t sélectionnes la plage A5:H12 en
ayant cliqué en H12 et étendu la séletion, ... le Intersect renverra
True, sans qu'ait eu lieu un clic dans lune des cellules concernées.

Si tu veux repérer la sortie de A1:A10 ("quand je quitte"), je te
propose d'utiliser un nom pour stocker l'emplacement du double clic
précédent, ce qui permet :

Double clic dans une cellule de la plage A1:A10 --> Macro1

Double clic ailleurs ; si le double clic précédent était en A1:A10,
--> Macro2. Si le double clic précédent était déjà hors de A1:A10,
pas de traitement.

Avec BeforeDoubleClick (Mais si SelectionChange te suffit, l'adap-
tation est aisée). ;-))

Pour le double Clic :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim a As Range
Debug.Print ActiveSheet.[Lieu]
If Not Intersect(Range("A1:A10"), Target) Is Nothing Then
ActiveSheet.Names.Add "Lieu", "Dedans"
Macro1
Else
' Test lieu double clic précédent
If ActiveSheet.[Lieu] = "Dedans" Then
Macro2
End If
ActiveSheet.Names.Add "Lieu", "Dehors"
End If
End Sub

Private Sub Macro1()
MsgBox 1
End Sub

Private Sub Macro2()
MsgBox 2
End Sub



Bonjour,
1
je souhaite lancer une proc lorsque je clique dans une place de cellule de
A2:A10
2
je souhaite lancer une proc lorsque je quitte une cellule de A2:A10

Merci à tous
Alpha


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Alpha
Une petite précision ?
Puis-je avoir une explication sur cette phrase
If Not Intersect(Target, Range("b2:b10")) Is Nothing Then
Merci
Alpha


"Philippe.R" a écrit dans le message de news:

C'était vraiment avec plaisir Alpha !
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

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

Merci beaucoup Philippe, c'est très bien également.
Alpha

"Philippe.R" a écrit dans le message de news:

Bonjour Alpha,
En essayant de tenir compte des observations de mes Maîtres, je
propose :




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a2:a10")) Is Nothing Then
MsgBox "Tiens, la plage !" 'ta procédure 1 à la place du
message



Else
MsgBox "Oh, la belle mère !" 'ta procédure 2 à la place du message
End If
End Sub

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Alpha" a écrit dans le message de
news:%

Bonjour,
1
je souhaite lancer une proc lorsque je clique dans une place de
cellule




de
A2:A10
2
je souhaite lancer une proc lorsque je quitte une cellule de A2:A10

Merci à tous
Alpha

















Avatar
Michel Gaboly
Re Alpha,

"a2:a10" et pas "b2:b10" en principe ici, ;-))

Intersect permet de tester l'itersection entre Target, la variable
stockant la plage sélectionnée lors de l'événement SelectionChange
et la plage indiquée.

Si l'intersection est vide (aucune cellule de la plage indiquée dans),
l'intersection, Intersect renvoie Nothing

Par conséquent,

If Not Intersect ... is Nothing Then

permet de s'assurer que la sélection comporte au moins une des
cellules de la plage testée.

NB - Private Sub Worksheet_SelectionChange(ByVal Target As Range)
est la syntaxe par défaut , qui utilise Target comme nom de variable,
mais tu peux remplacer Target par ce que tu veux :

Private Sub Worksheet_SelectionChange(ByVal MaPlage As Range)



Une petite précision ?
Puis-je avoir une explication sur cette phrase
If Not Intersect(Target, Range("b2:b10")) Is Nothing Then
Merci
Alpha

"Philippe.R" a écrit dans le message de news:

C'était vraiment avec plaisir Alpha !
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

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

Merci beaucoup Philippe, c'est très bien également.
Alpha

"Philippe.R" a écrit dans le message de news:

Bonjour Alpha,
En essayant de tenir compte des observations de mes Maîtres, je
propose :




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a2:a10")) Is Nothing Then
MsgBox "Tiens, la plage !" 'ta procédure 1 à la place du
message



Else
MsgBox "Oh, la belle mère !" 'ta procédure 2 à la place du message
End If
End Sub

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Alpha" a écrit dans le message de
news:%

Bonjour,
1
je souhaite lancer une proc lorsque je clique dans une place de
cellule




de
A2:A10
2
je souhaite lancer une proc lorsque je quitte une cellule de A2:A10

Merci à tous
Alpha















--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Alpha
Bonjour Michel, je pense qu'il y à erreur, hier soir, je n'ai pas Posté de
questions, cela dit ta proposition est intéressante.
Merci
Alpha


"Michel Gaboly" a écrit dans le message de news:

Bonjour Alpha,

Je t'avais proposoé hier soir, les événements BeforeDoubleClick ou
BeforeRightClick, car SelectionChange est moins précis : si tu
sélectionnes la colonne A, ou si t sélectionnes la plage A5:H12 en
ayant cliqué en H12 et étendu la séletion, ... le Intersect renverra
True, sans qu'ait eu lieu un clic dans lune des cellules concernées.

Si tu veux repérer la sortie de A1:A10 ("quand je quitte"), je te
propose d'utiliser un nom pour stocker l'emplacement du double clic
précédent, ce qui permet :

Double clic dans une cellule de la plage A1:A10 --> Macro1

Double clic ailleurs ; si le double clic précédent était en A1:A10,
--> Macro2. Si le double clic précédent était déjà hors de A1:A10,
pas de traitement.

Avec BeforeDoubleClick (Mais si SelectionChange te suffit, l'adap-
tation est aisée). ;-))

Pour le double Clic :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range,
Cancel As Boolean)

Dim a As Range
Debug.Print ActiveSheet.[Lieu]
If Not Intersect(Range("A1:A10"), Target) Is Nothing Then
ActiveSheet.Names.Add "Lieu", "Dedans"
Macro1
Else
' Test lieu double clic précédent
If ActiveSheet.[Lieu] = "Dedans" Then
Macro2
End If
ActiveSheet.Names.Add "Lieu", "Dehors"
End If
End Sub

Private Sub Macro1()
MsgBox 1
End Sub

Private Sub Macro2()
MsgBox 2
End Sub



Bonjour,
1
je souhaite lancer une proc lorsque je clique dans une place de cellule
de


A2:A10
2
je souhaite lancer une proc lorsque je quitte une cellule de A2:A10

Merci à tous
Alpha


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





1 2