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

CheckBox et fonction visual basic

7 réponses
Avatar
JGP_NoMail
Bonjour,
J'ai créé un document word avec des CheckBox ( CheckBox1 et CheckBox2)
Je fais un fonction commune CheckBox_x_Click que je veux appeler a
partir des fonctions 'CheckBox1_Click' et 'CheckBox2_Click', mais j'ai
l'erreur "Erreur d'execution '424'" "objet requis lors de l'appel a ma
fonction commune. Quel solution ?



Function CheckBox_x_Click(ByVal CheckBoxX As CheckBox)
MsgBox ("test")
End Function



Private Sub CheckBox1_Click()
MsgBox ("name : " & CheckBox1.Name)
CheckBox_x_Click (CheckBox1)
End Sub


Private Sub CheckBox2_Click()
MsgBox ("name : " & CheckBox2.Name)
CheckBox_x_Click (CheckBox2)
End Sub


Cordialement.

JGP
Sig2

7 réponses

Avatar
Guy Moncomble
Bonjour à tous,
dans le message bu962l$a70$,

| Function CheckBox_x_Click(ByVal CheckBoxX As CheckBox)
| MsgBox ("test")
| End Function

Cette fonction a l'apparence d'une fonction événement, mais ce n'en est
pas une s'il n'y a pas d'objet CheckBox_x_Click. Pour ma part, je ne
vois pas l'intérêt de ce type d'écriture.
--
A+

G.M. MVP Word
Avatar
JGP_NoMail

Bonjour à tous,
dans le message bu962l$a70$,

| Function CheckBox_x_Click(ByVal CheckBoxX As CheckBox)
| MsgBox ("test")
| End Function

Cette fonction a l'apparence d'une fonction événement, mais ce n'en est


Qu'est-ce qu'une 'fonction evenement' ?

pas une s'il n'y a pas d'objet CheckBox_x_Click. Pour ma part, je ne
vois pas l'intérêt de ce type d'écriture.



L'interet et que je dois avoir plusieurs checkbox, et le traitement
relativement complexe etant identique sur chaques clic, je préféere
faire une seule fonction, CheckBox_x_Click, a la quelle je passe comme
parametre la checkbox cliqué plutot que de faire 50 copié collé de la
fonction.


* Les fonctions CheckBox1_Click() et CheckBox2_Click() sont ici 2
fonctions corespondants au deux premiers checkbox.
* La fonction CheckBox_x_Click() etant la fonction effectuant le
traitement. Ici, le traitement a été ultra simplifié a l'affichage d'un
message avec le nom de la chexkbox cliquée.

Est-ce que l'erreur :""objet requis" viens de la declaration de cette
fonction commune

Function CheckBox_x_Click(ByVal CheckBoxX As CheckBox)
MsgBox ("test" & CheckBoxX.name)
End Function



Private Sub CheckBox1_Click()
MsgBox ("name : " & CheckBox1.Name)
CheckBox_x_Click (CheckBox1)
End Sub


Private Sub CheckBox2_Click()
MsgBox ("name : " & CheckBox2.Name)
CheckBox_x_Click (CheckBox2)
End Sub




--
A+

G.M. MVP Word



Avatar
Geo
Bonjour JGP_NoMail,


Bonjour,
J'ai créé un document word avec des CheckBox ( CheckBox1 et
CheckBox2)

Je fais un fonction commune CheckBox_x_Click que je veux appeler a
partir des fonctions 'CheckBox1_Click' et 'CheckBox2_Click', mais
j'ai

l'erreur "Erreur d'execution '424'" "objet requis lors de l'appel a
ma

fonction commune. Quel solution ?


Sub CheckBox_x_Click(CheckBoxX As integer)
MsgBox ("test " & CheckBoxX )
End Function

Private Sub CheckBox1_Click()
MsgBox ("name : " & CheckBox1.Name)
CheckBox_x_Click (1)
End Sub

Private Sub CheckBox2_Click()
MsgBox ("name : " & CheckBox2.Name)
CheckBox_x_Click (2)
End Sub

Si tant est que la procédure soit déclenchée par le clic, ce dont
parait douter Guy.
Quand j'utilise des cases à option, que ce soit des check box ou des
boutons radios, je mets un bouton qui lance le traitement en bloc, ce
qui laisse à l'utilisateur (moi-même dans la plupart des cas) le temps
de faire son marché et de changer 7 fois d'avis.

--

A+

Avatar
Anacoluthe
Bonjour !

Guy a raison. Pourquoi écrire une FONCTION avec un nom
d'événement ??? C'est quoi un événement ?
Votre Private Sub CheckBox1_Click()
en est un exemple parfait : procédure lancée par
l'événement 'click' sur CheckBox1 !

Si vous persistez à vouloir une fonction avec un nom pareil
écrivez-là ainsi :
Function CheckBox_x_Click(CheckBoxX As Object)
votre ThisDocument.Checkbox1 sera reconnu
mais alors écrivez son appel sous une forme correcte
x = CheckBox_x_Click(CheckBox1)

Si plus sagement vous placez une procédure
Sub AppelCommun(CheckBoxX As Object)
vous l'invoquerez dans les divers événements click par
Call AppelCommun(ChecBox1)
pour autant que le passage de l'objet CheckBox ait
une utilité dans votre procédure commune...

Simplifiez, simplifiez ...

Anacoluthe
« Le vrai est trop simple, il faut y arriver
toujours par le compliqué. »
- George SAND


'JGP_NoMail' nous a écrit ...


Bonjour à tous,
dans le message bu962l$a70$,

| Function CheckBox_x_Click(ByVal CheckBoxX As CheckBox)
| MsgBox ("test")
| End Function

Cette fonction a l'apparence d'une fonction événement, mais ce n'en est



Qu'est-ce qu'une 'fonction evenement' ?

pas une s'il n'y a pas d'objet CheckBox_x_Click. Pour ma part, je ne
vois pas l'intérêt de ce type d'écriture.




L'interet et que je dois avoir plusieurs checkbox, et le traitement
relativement complexe etant identique sur chaques clic, je préféere
faire une seule fonction, CheckBox_x_Click, a la quelle je passe comme
parametre la checkbox cliqué plutot que de faire 50 copié collé de la
fonction.


* Les fonctions CheckBox1_Click() et CheckBox2_Click() sont ici 2
fonctions corespondants au deux premiers checkbox.
* La fonction CheckBox_x_Click() etant la fonction effectuant le
traitement. Ici, le traitement a été ultra simplifié a l'affichage d'un
message avec le nom de la chexkbox cliquée.

Est-ce que l'erreur :""objet requis" viens de la declaration de cette
fonction commune

Function CheckBox_x_Click(ByVal CheckBoxX As CheckBox)
MsgBox ("test" & CheckBoxX.name)
End Function



Private Sub CheckBox1_Click()
MsgBox ("name : " & CheckBox1.Name)
CheckBox_x_Click (CheckBox1)
End Sub


Private Sub CheckBox2_Click()
MsgBox ("name : " & CheckBox2.Name)
CheckBox_x_Click (CheckBox2)
End Sub




--
A+

G.M. MVP Word






Avatar
JGP_NoMail

[...]


Sub CheckBox_x_Click(CheckBoxX As integer)
MsgBox ("test " & CheckBoxX )
Hé non, j'ai besoin de l'objet, checkbox, lui meme, pas que du numéro,

dans le bout de code que je donnais, je n'ai pas tout mis .

en fait il faut :
Sub CheckBox_x_Click(CheckBoxX As object)

et dans l'appel c'est :
call CheckBox_x_Click(CheckBox1)


merci quand même
jgp



End Function

Private Sub CheckBox1_Click()
MsgBox ("name : " & CheckBox1.Name)
CheckBox_x_Click (1)
End Sub

Private Sub CheckBox2_Click()
MsgBox ("name : " & CheckBox2.Name)
CheckBox_x_Click (2)
End Sub

Si tant est que la procédure soit déclenchée par le clic, ce dont
parait douter Guy.
Quand j'utilise des cases à option, que ce soit des check box ou des
boutons radios, je mets un bouton qui lance le traitement en bloc, ce
qui laisse à l'utilisateur (moi-même dans la plupart des cas) le temps
de faire son marché et de changer 7 fois d'avis.



Avatar
JGP_NoMail

Bonjour !
Bonjour,


Merci pour la réponse, maintenant ca fonctionne.


Guy a raison. Pourquoi écrire une FONCTION avec un nom
d'événement ??? C'est quoi un événement ?
Votre Private Sub CheckBox1_Click()
en est un exemple parfait : procédure lancée par
l'événement 'click' sur CheckBox1 !


Ah !!
Sub = Procédure = pas de valeur de retour
function = fonction = valeur de retour

C'est ca ?

[Snipped...]

Si plus sagement vous placez une procédure
Sub AppelCommun(CheckBoxX As Object)
OK : type object --------^^^^



vous l'invoquerez dans les divers événements click par
Call AppelCommun(ChecBox1)
^^^----- Call ??? Dans l'aide il est indiqué comme facultatif.

Pourquoi ça ne fonctionne pas sans ?


pour autant que le passage de l'objet CheckBox ait
une utilité dans votre procédure commune...


Si-si, il a une utilité

[Snipped...]

jgp

Avatar
Anacoluthe
Bonjour !

'JGP_NoMail' nous a écrit ...
^^^----- Call ??? Dans l'aide il est indiqué comme facultatif.


Faut lire l'Aide jusqu'au bout !!!
L'argument était passé entre parenthèses ...

Anacoluthe
« L'art de la parenthèse est un des grands secrets de l'éloquence. »
- Nicolas de CHAMFORT