tu peux utiliser: Screen.ActiveControl.Name sauf si le focus a été mis ailleurs entre-temps. bien tester cette valeur en sortie immédiate du bouton.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" a écrit dans le message de news:
Bonjour à tous,
Admettons que 3 bouttons différents déclenchent la même procédure ; comment
faire pour savoir quel bouton est à l'origine de l'action ?
Par avance merci,
Kristof
Anor
Bonjour,
Christophe CAMPAIN wrote: | Bonjour à tous, | | Admettons que 3 bouttons différents déclenchent la même procédure ; | comment faire pour savoir quel bouton est à l'origine de l'action ? | | Par avance merci, | | Kristof c'est le contrôle qui a le focus juste avant l'exécution de la procédure :
extrait de l'aide :
Dim ctlCurrentControl As Control Dim strControlName As String
Private Sub Command0_Click() Set ctlCurrentControl = Screen.ActiveControl strControlName = ctlCurrentControl.name msgbox strControlName 'Call TaProcédure() End Sub
Bonjour,
Christophe CAMPAIN wrote:
| Bonjour à tous,
|
| Admettons que 3 bouttons différents déclenchent la même procédure ;
| comment faire pour savoir quel bouton est à l'origine de l'action ?
|
| Par avance merci,
|
| Kristof
c'est le contrôle qui a le focus juste avant l'exécution de la procédure :
extrait de l'aide :
Dim ctlCurrentControl As Control
Dim strControlName As String
Private Sub Command0_Click()
Set ctlCurrentControl = Screen.ActiveControl
strControlName = ctlCurrentControl.name
msgbox strControlName
'Call TaProcédure()
End Sub
Christophe CAMPAIN wrote: | Bonjour à tous, | | Admettons que 3 bouttons différents déclenchent la même procédure ; | comment faire pour savoir quel bouton est à l'origine de l'action ? | | Par avance merci, | | Kristof c'est le contrôle qui a le focus juste avant l'exécution de la procédure :
extrait de l'aide :
Dim ctlCurrentControl As Control Dim strControlName As String
Private Sub Command0_Click() Set ctlCurrentControl = Screen.ActiveControl strControlName = ctlCurrentControl.name msgbox strControlName 'Call TaProcédure() End Sub
Christophe CAMPAIN
Salut Raymond,
C'est cette soluce que j'avais testée en 1er, mais il semble que chez moi cela ne s'applique qu'aux contrôles qui peuvent recevoir un focus (me renvoi tjrs le nom du dernier bouton utilisé, et pas du contrôle image qui déclenche l'action...) Mon formulaire contiens plusieur contrôles images et je cherche à détecter celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma procédure actuelle est : '---------------------- Private Sub Image1_Click() Dim Ctl As Control ' RAZ des mises en forme des contrôles image For Each Ctl In Me If Ctl.ControlType = 103 Then 'Si c'est un cadre image With Ctl .BorderColor = RGB(0, 0, 0) .BorderWidth = 0 End With End If Next Ctl
With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel on viens de cliquer .BorderColor = RGB(255, 0, 0) .BorderWidth = 1 End With End Sub '-------------------------
Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est un peu lourd comme méthode. C'est pourquoi je cherche à détecter le contrôle image sur lequel on clique pour appeler ma procédure, comme ça peu importe le nombre de contrôles images...
Merci pour ton aide
@+ Kristof
"Raymond [mvp]" a écrit dans le message de news:uHYw%
Bonjour.
tu peux utiliser: Screen.ActiveControl.Name sauf si le focus a été mis ailleurs entre-temps. bien tester cette valeur en
sortie immédiate du bouton.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" a écrit dans le message de news:
Bonjour à tous,
Admettons que 3 bouttons différents déclenchent la même procédure ; comment
faire pour savoir quel bouton est à l'origine de l'action ?
Par avance merci,
Kristof
Salut Raymond,
C'est cette soluce que j'avais testée en 1er, mais il semble que chez moi
cela ne s'applique qu'aux contrôles qui peuvent recevoir un focus (me renvoi
tjrs le nom du dernier bouton utilisé, et pas du contrôle image qui
déclenche l'action...)
Mon formulaire contiens plusieur contrôles images et je cherche à détecter
celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma
procédure actuelle est :
'----------------------
Private Sub Image1_Click()
Dim Ctl As Control
' RAZ des mises en forme des contrôles image
For Each Ctl In Me
If Ctl.ControlType = 103 Then 'Si c'est un cadre image
With Ctl
.BorderColor = RGB(0, 0, 0)
.BorderWidth = 0
End With
End If
Next Ctl
With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel on
viens de cliquer
.BorderColor = RGB(255, 0, 0)
.BorderWidth = 1
End With
End Sub
'-------------------------
Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est un
peu lourd comme méthode.
C'est pourquoi je cherche à détecter le contrôle image sur lequel on clique
pour appeler ma procédure, comme ça peu importe le nombre de contrôles
images...
Merci pour ton aide
@+
Kristof
"Raymond [mvp]" <XYZ.access.seneque@free.fr> a écrit dans le message de
news:uHYw%23mSKEHA.1036@TK2MSFTNGP10.phx.gbl...
Bonjour.
tu peux utiliser:
Screen.ActiveControl.Name
sauf si le focus a été mis ailleurs entre-temps. bien tester cette valeur
en
sortie immédiate du bouton.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" <campain.christophe_PasDePub@libertysurf.fr> a écrit
dans le message de news:O87EndSKEHA.620@TK2MSFTNGP10.phx.gbl...
Bonjour à tous,
Admettons que 3 bouttons différents déclenchent la même procédure ;
comment
faire pour savoir quel bouton est à l'origine de l'action ?
C'est cette soluce que j'avais testée en 1er, mais il semble que chez moi cela ne s'applique qu'aux contrôles qui peuvent recevoir un focus (me renvoi tjrs le nom du dernier bouton utilisé, et pas du contrôle image qui déclenche l'action...) Mon formulaire contiens plusieur contrôles images et je cherche à détecter celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma procédure actuelle est : '---------------------- Private Sub Image1_Click() Dim Ctl As Control ' RAZ des mises en forme des contrôles image For Each Ctl In Me If Ctl.ControlType = 103 Then 'Si c'est un cadre image With Ctl .BorderColor = RGB(0, 0, 0) .BorderWidth = 0 End With End If Next Ctl
With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel on viens de cliquer .BorderColor = RGB(255, 0, 0) .BorderWidth = 1 End With End Sub '-------------------------
Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est un peu lourd comme méthode. C'est pourquoi je cherche à détecter le contrôle image sur lequel on clique pour appeler ma procédure, comme ça peu importe le nombre de contrôles images...
Merci pour ton aide
@+ Kristof
"Raymond [mvp]" a écrit dans le message de news:uHYw%
Bonjour.
tu peux utiliser: Screen.ActiveControl.Name sauf si le focus a été mis ailleurs entre-temps. bien tester cette valeur en
sortie immédiate du bouton.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" a écrit dans le message de news:
Bonjour à tous,
Admettons que 3 bouttons différents déclenchent la même procédure ; comment
faire pour savoir quel bouton est à l'origine de l'action ?
Par avance merci,
Kristof
Raymond [mvp]
exact, si tu cliques sur une image, le focus ne se déplace pas et tu ne peux pas utiliser l'objet screen. tu est obligé d'indiquer le nom de l'image dans la passation à ta fonction: dans événement click de l'image 1 tu mets: =Mafonction("image1")
dans mafonction qui sera comme ceci: Public Mafonction( Nomimage as string) as Boolean tu récupèreras le nom de ton image.
(ce n'était pas l'objet de ta question d'origne, petit canaillou (3 boutons))
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" a écrit dans le message de news:
Salut Raymond,
C'est cette soluce que j'avais testée en 1er, mais il semble que chez moi cela ne s'applique qu'aux contrôles qui peuvent recevoir un focus (me renvoi
tjrs le nom du dernier bouton utilisé, et pas du contrôle image qui déclenche l'action...) Mon formulaire contiens plusieur contrôles images et je cherche à détecter celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma procédure actuelle est : '---------------------- Private Sub Image1_Click() Dim Ctl As Control ' RAZ des mises en forme des contrôles image For Each Ctl In Me If Ctl.ControlType = 103 Then 'Si c'est un cadre image With Ctl .BorderColor = RGB(0, 0, 0) .BorderWidth = 0 End With End If Next Ctl
With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel on
viens de cliquer .BorderColor = RGB(255, 0, 0) .BorderWidth = 1 End With End Sub '-------------------------
Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est un peu lourd comme méthode. C'est pourquoi je cherche à détecter le contrôle image sur lequel on clique
pour appeler ma procédure, comme ça peu importe le nombre de contrôles images...
Merci pour ton aide
@+ Kristof
exact, si tu cliques sur une image, le focus ne se déplace pas et tu ne peux
pas utiliser l'objet screen.
tu est obligé d'indiquer le nom de l'image dans la passation à ta fonction:
dans événement click de l'image 1 tu mets:
=Mafonction("image1")
dans mafonction qui sera comme ceci:
Public Mafonction( Nomimage as string) as Boolean
tu récupèreras le nom de ton image.
(ce n'était pas l'objet de ta question d'origne, petit canaillou (3
boutons))
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" <campain.christophe_PasDePub@libertysurf.fr> a écrit
dans le message de news:OPJHzwSKEHA.2704@TK2MSFTNGP10.phx.gbl...
Salut Raymond,
C'est cette soluce que j'avais testée en 1er, mais il semble que chez moi
cela ne s'applique qu'aux contrôles qui peuvent recevoir un focus (me
renvoi
tjrs le nom du dernier bouton utilisé, et pas du contrôle image qui
déclenche l'action...)
Mon formulaire contiens plusieur contrôles images et je cherche à détecter
celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma
procédure actuelle est :
'----------------------
Private Sub Image1_Click()
Dim Ctl As Control
' RAZ des mises en forme des contrôles image
For Each Ctl In Me
If Ctl.ControlType = 103 Then 'Si c'est un cadre image
With Ctl
.BorderColor = RGB(0, 0, 0)
.BorderWidth = 0
End With
End If
Next Ctl
With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel
on
viens de cliquer
.BorderColor = RGB(255, 0, 0)
.BorderWidth = 1
End With
End Sub
'-------------------------
Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est un
peu lourd comme méthode.
C'est pourquoi je cherche à détecter le contrôle image sur lequel on
clique
pour appeler ma procédure, comme ça peu importe le nombre de contrôles
images...
exact, si tu cliques sur une image, le focus ne se déplace pas et tu ne peux pas utiliser l'objet screen. tu est obligé d'indiquer le nom de l'image dans la passation à ta fonction: dans événement click de l'image 1 tu mets: =Mafonction("image1")
dans mafonction qui sera comme ceci: Public Mafonction( Nomimage as string) as Boolean tu récupèreras le nom de ton image.
(ce n'était pas l'objet de ta question d'origne, petit canaillou (3 boutons))
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" a écrit dans le message de news:
Salut Raymond,
C'est cette soluce que j'avais testée en 1er, mais il semble que chez moi cela ne s'applique qu'aux contrôles qui peuvent recevoir un focus (me renvoi
tjrs le nom du dernier bouton utilisé, et pas du contrôle image qui déclenche l'action...) Mon formulaire contiens plusieur contrôles images et je cherche à détecter celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma procédure actuelle est : '---------------------- Private Sub Image1_Click() Dim Ctl As Control ' RAZ des mises en forme des contrôles image For Each Ctl In Me If Ctl.ControlType = 103 Then 'Si c'est un cadre image With Ctl .BorderColor = RGB(0, 0, 0) .BorderWidth = 0 End With End If Next Ctl
With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel on
viens de cliquer .BorderColor = RGB(255, 0, 0) .BorderWidth = 1 End With End Sub '-------------------------
Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est un peu lourd comme méthode. C'est pourquoi je cherche à détecter le contrôle image sur lequel on clique
pour appeler ma procédure, comme ça peu importe le nombre de contrôles images...
Merci pour ton aide
@+ Kristof
Christophe CAMPAIN
Toutes mes excuses...
En effet, au début je ne voulais pas entrer trop dans les détails... Je voulais une soluce de principe pour pouvoir l'appliquer moi même... Je m'aperçois que ce n'est pas aussi simple que je me l'imaginais.
Ta soluce me semble correspondre à ce que je cherche à faire (en tout cas pour le moment, car par la suite je cherche à pouvoir créer/ supprimer autant de ctl image que je souhaite sur mon formulaire --> il faudra donc que je puisse associer ce petit bout de code (=Mafonction("image1") ) à chaque création de ctl image... Mais je verrai ça un peu plus tard, pour le moment je vais mettre en application...
Merci @+ Kristof
"Raymond [mvp]" a écrit dans le message de news:uw6NJ$
exact, si tu cliques sur une image, le focus ne se déplace pas et tu ne peux
pas utiliser l'objet screen. tu est obligé d'indiquer le nom de l'image dans la passation à ta fonction:
dans événement click de l'image 1 tu mets: =Mafonction("image1")
dans mafonction qui sera comme ceci: Public Mafonction( Nomimage as string) as Boolean tu récupèreras le nom de ton image.
(ce n'était pas l'objet de ta question d'origne, petit canaillou (3 boutons))
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" a écrit dans le message de news:
Salut Raymond,
C'est cette soluce que j'avais testée en 1er, mais il semble que chez moi
cela ne s'applique qu'aux contrôles qui peuvent recevoir un focus (me renvoi
tjrs le nom du dernier bouton utilisé, et pas du contrôle image qui déclenche l'action...) Mon formulaire contiens plusieur contrôles images et je cherche à détecter
celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma procédure actuelle est : '---------------------- Private Sub Image1_Click() Dim Ctl As Control ' RAZ des mises en forme des contrôles image For Each Ctl In Me If Ctl.ControlType = 103 Then 'Si c'est un cadre image With Ctl .BorderColor = RGB(0, 0, 0) .BorderWidth = 0 End With End If Next Ctl
With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel on
viens de cliquer .BorderColor = RGB(255, 0, 0) .BorderWidth = 1 End With End Sub '-------------------------
Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est un
peu lourd comme méthode. C'est pourquoi je cherche à détecter le contrôle image sur lequel on clique
pour appeler ma procédure, comme ça peu importe le nombre de contrôles images...
Merci pour ton aide
@+ Kristof
Toutes mes excuses...
En effet, au début je ne voulais pas entrer trop dans les détails...
Je voulais une soluce de principe pour pouvoir l'appliquer moi même...
Je m'aperçois que ce n'est pas aussi simple que je me l'imaginais.
Ta soluce me semble correspondre à ce que je cherche à faire (en tout cas
pour le moment, car par la suite je cherche à pouvoir créer/ supprimer
autant de ctl image que je souhaite sur mon formulaire --> il faudra donc
que je puisse associer ce petit bout de code (=Mafonction("image1") ) à
chaque création de ctl image...
Mais je verrai ça un peu plus tard, pour le moment je vais mettre en
application...
Merci
@+
Kristof
"Raymond [mvp]" <XYZ.access.seneque@free.fr> a écrit dans le message de
news:uw6NJ$SKEHA.1392@TK2MSFTNGP09.phx.gbl...
exact, si tu cliques sur une image, le focus ne se déplace pas et tu ne
peux
pas utiliser l'objet screen.
tu est obligé d'indiquer le nom de l'image dans la passation à ta
fonction:
dans événement click de l'image 1 tu mets:
=Mafonction("image1")
dans mafonction qui sera comme ceci:
Public Mafonction( Nomimage as string) as Boolean
tu récupèreras le nom de ton image.
(ce n'était pas l'objet de ta question d'origne, petit canaillou (3
boutons))
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" <campain.christophe_PasDePub@libertysurf.fr> a écrit
dans le message de news:OPJHzwSKEHA.2704@TK2MSFTNGP10.phx.gbl...
Salut Raymond,
C'est cette soluce que j'avais testée en 1er, mais il semble que chez
moi
cela ne s'applique qu'aux contrôles qui peuvent recevoir un focus (me
renvoi
tjrs le nom du dernier bouton utilisé, et pas du contrôle image qui
déclenche l'action...)
Mon formulaire contiens plusieur contrôles images et je cherche à
détecter
celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma
procédure actuelle est :
'----------------------
Private Sub Image1_Click()
Dim Ctl As Control
' RAZ des mises en forme des contrôles image
For Each Ctl In Me
If Ctl.ControlType = 103 Then 'Si c'est un cadre image
With Ctl
.BorderColor = RGB(0, 0, 0)
.BorderWidth = 0
End With
End If
Next Ctl
With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel
on
viens de cliquer
.BorderColor = RGB(255, 0, 0)
.BorderWidth = 1
End With
End Sub
'-------------------------
Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est
un
peu lourd comme méthode.
C'est pourquoi je cherche à détecter le contrôle image sur lequel on
clique
pour appeler ma procédure, comme ça peu importe le nombre de contrôles
images...
En effet, au début je ne voulais pas entrer trop dans les détails... Je voulais une soluce de principe pour pouvoir l'appliquer moi même... Je m'aperçois que ce n'est pas aussi simple que je me l'imaginais.
Ta soluce me semble correspondre à ce que je cherche à faire (en tout cas pour le moment, car par la suite je cherche à pouvoir créer/ supprimer autant de ctl image que je souhaite sur mon formulaire --> il faudra donc que je puisse associer ce petit bout de code (=Mafonction("image1") ) à chaque création de ctl image... Mais je verrai ça un peu plus tard, pour le moment je vais mettre en application...
Merci @+ Kristof
"Raymond [mvp]" a écrit dans le message de news:uw6NJ$
exact, si tu cliques sur une image, le focus ne se déplace pas et tu ne peux
pas utiliser l'objet screen. tu est obligé d'indiquer le nom de l'image dans la passation à ta fonction:
dans événement click de l'image 1 tu mets: =Mafonction("image1")
dans mafonction qui sera comme ceci: Public Mafonction( Nomimage as string) as Boolean tu récupèreras le nom de ton image.
(ce n'était pas l'objet de ta question d'origne, petit canaillou (3 boutons))
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"Christophe CAMPAIN" a écrit dans le message de news:
Salut Raymond,
C'est cette soluce que j'avais testée en 1er, mais il semble que chez moi
cela ne s'applique qu'aux contrôles qui peuvent recevoir un focus (me renvoi
tjrs le nom du dernier bouton utilisé, et pas du contrôle image qui déclenche l'action...) Mon formulaire contiens plusieur contrôles images et je cherche à détecter
celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma procédure actuelle est : '---------------------- Private Sub Image1_Click() Dim Ctl As Control ' RAZ des mises en forme des contrôles image For Each Ctl In Me If Ctl.ControlType = 103 Then 'Si c'est un cadre image With Ctl .BorderColor = RGB(0, 0, 0) .BorderWidth = 0 End With End If Next Ctl
With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel on
viens de cliquer .BorderColor = RGB(255, 0, 0) .BorderWidth = 1 End With End Sub '-------------------------
Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est un
peu lourd comme méthode. C'est pourquoi je cherche à détecter le contrôle image sur lequel on clique
pour appeler ma procédure, comme ça peu importe le nombre de contrôles images...