OVH Cloud OVH Cloud

Un évenement pour 50 controles différents est-ce possible??

12 réponses
Avatar
AfterBoy
Bonjour,

J'ai un formulaire contenant 50 controles 5 * 10 qui se nomme :
A101 Jusqu'=E0 A110,
B102 jusqu'=E0 B110 ,
C102 jusqu'=E0 C110 ,
D102 jusqu'=E0 D110 ,
E101 jusqu'=E0 E110 ,
Cel=E0 repr=E9sente une plage horaire du lundi au vendredi pour des
journ=E9es de 10 p=E9riodes.
Je constate que ca va etre long de cr=E9er mes =E9v=E8nement pour chacun
de ces 50 controles...

Est-ce possible de cr=E9er des =E9v=E8nement pour des groupes de
controles, donc cr=E9er du code seulement une fois au lieu de 50 fois ??
Pour l'instant la m=E9thode que j'ai trouv=E9 est de me cr=E9er 50 code
d'=E9venement sur clic (et c'est ce que je veux =E9viter) et je call la
meme fonction en y envoyant en param=E8tre le nom du controle mais ca me
fait tout de meme 50 code d'=E9venement a faire?? y'a plus simple???

taper ceci 50 fois c'est pas l'id=E9al...:

Private Sub A101_Click()
call MaFonction(me.name)
End Sub

Merci

10 réponses

1 2
Avatar
Sylvain Lafontaine
Vous pouvez utiliser une fonction avec le controle comme paramètre à la
place d'un Event Procedure; par exemple pour l'événement AfterUpdate:

=MonControle_AfterUpdate([A101])

et dans le code module VBA:

Public Function MonControle_AfterUpdate(TextNo As TextBox)

MsgBox TextNo.name

End Function

L'initialisation de la propriété AfterUpdate peut également être automatisée
mais là, probablement que vous allez perdre autant de temps à le faire
automatiquement que manuellement.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"AfterBoy" wrote in message
news:
Bonjour,

J'ai un formulaire contenant 50 controles 5 * 10 qui se nomme :
A101 Jusqu'à A110,
B102 jusqu'à B110 ,
C102 jusqu'à C110 ,
D102 jusqu'à D110 ,
E101 jusqu'à E110 ,
Celà représente une plage horaire du lundi au vendredi pour des
journées de 10 périodes.
Je constate que ca va etre long de créer mes évènement pour chacun
de ces 50 controles...

Est-ce possible de créer des évènement pour des groupes de
controles, donc créer du code seulement une fois au lieu de 50 fois ??
Pour l'instant la méthode que j'ai trouvé est de me créer 50 code
d'évenement sur clic (et c'est ce que je veux éviter) et je call la
meme fonction en y envoyant en paramètre le nom du controle mais ca me
fait tout de meme 50 code d'évenement a faire?? y'a plus simple???

taper ceci 50 fois c'est pas l'idéal...:

Private Sub A101_Click()
call MaFonction(me.name)
End Sub

Merci
Avatar
Jac
Salut Afterboy,

je ne suis pas sûr que ton idée de départ soit la bonne... car, entre autre,
comment vas-tu gérer tes 50 contrôles pour l'impression, par exemple. Parce
qu'en te voyant arriver, j'ai l'impression que tu vas avoir une table avec
au moins 50 champs.

Ne pourrais-tu pas imaginer 10 périodes journalières et leur associer une
date. Pour ce qui est de regrouper par semaine, il suffirait de préparer
(dans XL) un calendrier avec date sans les fins de semaine et n° semaine.
Pour le choix de la date (sans contrepétrie...) un contrôle calendrier
ferait très bien l'affaire.

De plus, le fait d'avoir uniquement les tranches horaires par jour te
permettra, si nécessaire, de faire quelques stats du genre par période(s),
combien de fois la même chose de 16 à 17h, combien de plages vides pour
chaque tranche horaire, ...

Mais s'il s'agit de données qui reviennent, tu pourrais même avoir des
enregistrements avec 3 champs : date, plage horaire, et données en liste
déroulante...

On en reparle quand tu veux.

Jac

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

Bonjour,

J'ai un formulaire contenant 50 controles 5 * 10 qui se nomme :
A101 Jusqu'à A110,
B102 jusqu'à B110 ,
C102 jusqu'à C110 ,
D102 jusqu'à D110 ,
E101 jusqu'à E110 ,
Celà représente une plage horaire du lundi au vendredi pour des
journées de 10 périodes.
Je constate que ca va etre long de créer mes évènement pour chacun
de ces 50 controles...

Est-ce possible de créer des évènement pour des groupes de
controles, donc créer du code seulement une fois au lieu de 50 fois ??
Pour l'instant la méthode que j'ai trouvé est de me créer 50 code
d'évenement sur clic (et c'est ce que je veux éviter) et je call la
meme fonction en y envoyant en paramètre le nom du controle mais ca me
fait tout de meme 50 code d'évenement a faire?? y'a plus simple???

taper ceci 50 fois c'est pas l'idéal...:

Private Sub A101_Click()
call MaFonction(me.name)
End Sub

Merci
Avatar
AfterBoy
Merci pour vos réponses, je m'y lance a l'instant.
Avatar
AfterBoy

Salut Afterboy,

je ne suis pas sûr que ton idée de départ soit la bonne... car, ent re autre,
comment vas-tu gérer tes 50 contrôles pour l'impression, par exemple. Parce
qu'en te voyant arriver, j'ai l'impression que tu vas avoir une table avec
au moins 50 champs.

Ne pourrais-tu pas imaginer 10 périodes journalières et leur associer une
date. Pour ce qui est de regrouper par semaine, il suffirait de préparer
(dans XL) un calendrier avec date sans les fins de semaine et n° semain e.
Pour le choix de la date (sans contrepétrie...) un contrôle calendrier
ferait très bien l'affaire.

De plus, le fait d'avoir uniquement les tranches horaires par jour te
permettra, si nécessaire, de faire quelques stats du genre par périod e(s),
combien de fois la même chose de 16 à 17h, combien de plages vides po ur
chaque tranche horaire, ...

Mais s'il s'agit de données qui reviennent, tu pourrais même avoir des
enregistrements avec 3 champs : date, plage horaire, et données en liste
déroulante...

On en reparle quand tu veux.

Jac


Merci


Merci Jac,

En fait je n'ai pas besoin de date, lorsque je met des périodes en
lundi matin, c'est pour la session au complet. C'est pour faire des
horaires au niveau collégial Québécois.
J'avais déja fait en 1994 un logiciel d'horaires en Clipper et
maintenant on me demande un léger rafraichissement. :-) J'avais pensé
à VB ou l'on peut créer des controles avec des index mais je pense
m'en tirer avec Access.

Avatar
3stone
Salut,

"AfterBoy"
J'ai un formulaire contenant 50 controles 5 * 10 qui se nomme :
A101 Jusqu'à A110,
B102 jusqu'à B110 ,
C102 jusqu'à C110 ,
D102 jusqu'à D110 ,
E101 jusqu'à E110 ,
Celà représente une plage horaire du lundi au vendredi pour des
journées de 10 périodes.
Je constate que ca va etre long de créer mes évènement pour chacun
de ces 50 controles...

Est-ce possible de créer des évènement pour des groupes de
controles, donc créer du code seulement une fois au lieu de 50 fois ??
Pour l'instant la méthode que j'ai trouvé est de me créer 50 code
d'évenement sur clic (et c'est ce que je veux éviter) et je call la
meme fonction en y envoyant en paramètre le nom du controle mais ca me
fait tout de meme 50 code d'évenement a faire?? y'a plus simple???

taper ceci 50 fois c'est pas l'idéal...:

Private Sub A101_Click()
call MaFonction(me.name)
End Sub
---------------------------------

Tu n'as pas besoin de taper cela 50 fois...

Crée ta fonction, sélectionne les 50 contrôles en même temps,
appelle les propriétés et dans l'événement qui vas bien, tu appelle
ta fonction.

Donc, ne pas l'écrire *dans* la sub d'une procédure événementielle,
mais bien à l'endroit ou l'on appelle une macro.

Ensuite tu sauve et l'appel de la fonction se fera dans les 50 contrôles.

Précision: Seuls les événements "communs" aux contrôles sont disponibles.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Jac
Tu ne crois pas que ça pourrait se faire dans XL ?
Développement rapide, vba, couleur par matière,
multi feuilles, ..., bref, tout (ou presque) ce qu'il
faut pour arriver au résultat escompté.

Dans Access, ça sera vraiment lourd et long avant
d'obtenir quelque chose de présentable.

Jac



Merci Jac,

En fait je n'ai pas besoin de date, lorsque je met des périodes en
lundi matin, c'est pour la session au complet. C'est pour faire des
horaires au niveau collégial Québécois.
J'avais déja fait en 1994 un logiciel d'horaires en Clipper et
maintenant on me demande un léger rafraichissement. :-) J'avais pensé
à VB ou l'on peut créer des controles avec des index mais je pense
m'en tirer avec Access.


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



Salut Afterboy,

je ne suis pas sûr que ton idée de départ soit la bonne... car, entre
autre,
comment vas-tu gérer tes 50 contrôles pour l'impression, par exemple.
Parce
qu'en te voyant arriver, j'ai l'impression que tu vas avoir une table
avec
au moins 50 champs.

Ne pourrais-tu pas imaginer 10 périodes journalières et leur associer une
date. Pour ce qui est de regrouper par semaine, il suffirait de préparer
(dans XL) un calendrier avec date sans les fins de semaine et n° semaine.
Pour le choix de la date (sans contrepétrie...) un contrôle calendrier
ferait très bien l'affaire.

De plus, le fait d'avoir uniquement les tranches horaires par jour te
permettra, si nécessaire, de faire quelques stats du genre par
période(s),
combien de fois la même chose de 16 à 17h, combien de plages vides pour
chaque tranche horaire, ...

Mais s'il s'agit de données qui reviennent, tu pourrais même avoir des
enregistrements avec 3 champs : date, plage horaire, et données en liste
déroulante...

On en reparle quand tu veux.

Jac





Avatar
AfterBoy

Tu n'as pas besoin de taper cela 50 fois...

Crée ta fonction, sélectionne les 50 contrôles en même temps,
appelle les propriétés et dans l'événement qui vas bien, tu appel le
ta fonction.

Donc, ne pas l'écrire *dans* la sub d'une procédure événementiell e,
mais bien à l'endroit ou l'on appelle une macro.

Ensuite tu sauve et l'appel de la fonction se fera dans les 50 contrôle s.

Précision: Seuls les événements "communs" aux contrôles sont disp onibles.


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/


J'ai essayé et j'éprouve des problèmes. Dois-je me créer une macro
qui appelle ma fonction ?? Au lieu de placer [Procédure
événementielle] à l'événement de mes 50 controles je call la
macro? Si oui comment appeller une fonction par macro je n'utilise
jamais les macros. J'ai tenté des choses mais j'ai pas bien
compris...Je précise que la fonction appelés peut etre dans un module
ou bien dans le formulaire meme et elle doit savoir de quelle controle
elle provient.

Merci de préciser.

Avatar
3stone
Salut,

"AfterBoy"
[...]
Donc, ne pas l'écrire *dans* la sub d'une procédure événementielle,
mais bien à l'endroit ou l'on appelle une macro.





J'ai essayé et j'éprouve des problèmes. Dois-je me créer une macro
qui appelle ma fonction ?? Au lieu de placer [Procédure
événementielle] à l'événement de mes 50 controles je call la
macro?


Tu as lu ce que j'ai écrit ??
J'ai laissé le texte précis en haut...



Si oui comment appeller une fonction par macro je n'utilise
jamais les macros. J'ai tenté des choses mais j'ai pas bien
compris...Je précise que la fonction appelés peut etre dans un module
ou bien dans le formulaire meme et elle doit savoir de quelle controle
elle provient.

Si une fonction doit pouvoir être appellée d'ailleurs que le formulaire
actuel, il faut écrire cette fonction dans un module général !

Si la fonction doit connaitre le nom du formulaire appelant,
c'est à toi de le transmettre à la fonction.

Notes:
Je me demande, vu le fait que tu soit si peu à l'aise avec le VBA,
ce que tu as bien put immaginer comme méthode...
Il se peut que tu te complique la vie pour rien ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/

Avatar
AfterBoy
Oui jai lu ton texte et ta solution...ca fonctionne en partie....je
place le nom de ma macro dans le l'événement commun de mes 50
controles....et ma macro je l'ai définie ainsi : ExecuterCode avec le
nom de ma fonction qui s'appelle TEST dans le bas. Est-ce bien comme ca
que tu me l'avais expliqué ??? Ca fonctionnne, ma fonction s'execute
sur mes 50 controles sans que j'ai du code pour chacun d'eux. Par
contre je voudrais savoir maintement quel controle appelle ma fonction,
Est-ce la A101 ou la B110 pour que je puisse changer les propriétés
du controle appelant ???

Voici la fonction qui sera executé par mes 50 controles, elle n'est
pas dans un module général elle est sous mon formulaire principal la
ou mes 50 controles sont. Je tente de savoir quel controle l'appelle.

Sub test()
MsgBox screen.activecontrol.name
End Sub

J'ai tenté screen.activecontrol.name mais ca me retourne "test"

Merci




Salut,

"AfterBoy"
[...]
Donc, ne pas l'écrire *dans* la sub d'une procédure événementie lle,
mais bien à l'endroit ou l'on appelle une macro.





J'ai essayé et j'éprouve des problèmes. Dois-je me créer une macro
qui appelle ma fonction ?? Au lieu de placer [Procédure
événementielle] à l'événement de mes 50 controles je call la
macro?


Tu as lu ce que j'ai écrit ??
J'ai laissé le texte précis en haut...



Si oui comment appeller une fonction par macro je n'utilise
jamais les macros. J'ai tenté des choses mais j'ai pas bien
compris...Je précise que la fonction appelés peut etre dans un module
ou bien dans le formulaire meme et elle doit savoir de quelle controle
elle provient.

Si une fonction doit pouvoir être appellée d'ailleurs que le form ulaire
actuel, il faut écrire cette fonction dans un module général !

Si la fonction doit connaitre le nom du formulaire appelant,
c'est à toi de le transmettre à la fonction.

Notes:
Je me demande, vu le fait que tu soit si peu à l'aise avec le VBA,
ce que tu as bien put immaginer comme méthode...
Il se peut que tu te complique la vie pour rien ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



Avatar
AfterBoy

Salut,

"AfterBoy"
[...]
Donc, ne pas l'écrire *dans* la sub d'une procédure événementie lle,
mais bien à l'endroit ou l'on appelle une macro.





J'ai essayé et j'éprouve des problèmes. Dois-je me créer une macro
qui appelle ma fonction ?? Au lieu de placer [Procédure
événementielle] à l'événement de mes 50 controles je call la
macro?


Tu as lu ce que j'ai écrit ??
J'ai laissé le texte précis en haut...



Si oui comment appeller une fonction par macro je n'utilise
jamais les macros. J'ai tenté des choses mais j'ai pas bien
compris...Je précise que la fonction appelés peut etre dans un module
ou bien dans le formulaire meme et elle doit savoir de quelle controle
elle provient.

Si une fonction doit pouvoir être appellée d'ailleurs que le form ulaire
actuel, il faut écrire cette fonction dans un module général !

Si la fonction doit connaitre le nom du formulaire appelant,
c'est à toi de le transmettre à la fonction.

Notes:
Je me demande, vu le fait que tu soit si peu à l'aise avec le VBA,
ce que tu as bien put immaginer comme méthode...
Il se peut que tu te complique la vie pour rien ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



AHH enfin j'ai réussis voici en passant un parametre dans ma macro

ExecuterCode test(Forms![monform].activecontrol.name)

Merci beaucoup


1 2