Pour les brutes d'ACCESS

Résolu
Signaler
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
-
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
-
Bonjour à tous ,



J'ai un tas d'évènements du genre Private sub N1_DblClick(cancel as integer)

de N1.à ..N32_DblClick SOUS ACCESS

Je rappelle que sous ACCESS on ne peut pas faire de groupe avec un
control du même nom donc on ne peut pas faire Me.N1(i).DblClick...



J'aimerais pouvoir faire une boucle du genre

Private Sub Commencer_Click()
Dim i As Integer
For i = 1 To 32
Me("N" & Cstr(i)).OnDlbClick
Next i
End Sub

Pour pouvoir toutes les lancer à la suite

Donc simuler un double click sur chaque boutons

Mais ça ne marche pas avec la propriété DblClick

Si je mets .visible = false ça marche



Merci

TBBUIM

13 réponses

Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Voilà le truc tout bidon qu'il fallait écrire...

CallByName Me,"N" & i & "_DblClick",vbMethod
TBBUIM
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
58
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
5 août 2005

salut TBBUIM

Si j'ai bien comprise, ce que tu veux faire c'est déclencher toi même les événememnts pour faire une simulation ??
Si c'est bien cela, tu peux essayer ceci:
Essaie de déclarer tous les événements sur ta feuille avec la propriété PUBLIC
(public sub N1_DBlClick). Alors tu pourras les appeler à partir de tes propres fonctions.

J'espère que cela t'aidera ...

Titi & Panpan
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Non cela ne m'aide pas du tout

Si j'écris

public sub Lancer()

N1_DblClick(0)

N2_DblClick(0)

....

End sub



Ca marche, pas besoin de les déclarer en public puisque je veux les
lancer du même formulaire. Ce que je veux, c'est pouvoir lancer les
actions qui sont dans chaque click, pour cela, il me faut, soit
recopier 32 lignes de Nx_DblClick et là ça marche.

Ma question (Pour les brutes d'acess je le rappelle )

C'est comment faire la même chose mais en écrivant cela dans une boucle For?!

Parce qu'imaginons qu'au lien de 32 j'en ai 32000, ça le ferais pas...
TBBUIM
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
12
'lut

j'ai pas access, mais je ferai comme ca:

Private Sub Commencer_Click()
Dim i As Integer
For i = 1 To 32
Me.controls("N" & Cstr(i)).OnDlbClick
Next i
End Sub

++
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Bien essayé, mais j'ai déjà essayé aussi!

Et lorsque je fais ça, il me dit:

Propriété ou méthode non gérée par cet objet.



En fait, sous ACCESS, on peut remplacer cela par

Me("N1").Onclick

Mais en VB, on est obligé de mettre controls

Mais c'est la même chose, l'inconvénient, c'est qu'en faisant ça

On peut uniquement changer la propriété OnClick par exemple mettre

= true mais on ne peut pas lancer l'évènement!



Encore, une de mes nombreuses questions, auxquelles personnes ne peut répondre!

J'ai le don pour trouver des colles



PS: J'ai trouvé la fonction Run, qui semblait être la solution à mon
problème, l'inconvénient c'est que cette dernière ne lance que les
fonctions définie dans un module et pas ailleurs, même si elles sont
déclarées en Public...
TBBUIM
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
12
essaie un truc comme ca (la syntaxe est ptre pas exacte)

Public Function GROUPER(MaForm As Form, NomGroupe As String, NomFonction As String) As Boolean
On Error GoTo Err Dim Ctl As Control
For Each Ctl In MaForm.Controls
If Ctl.Tag = NomGroupe Then
Ctl.OnClick = "=" & NomFonction & "(""" & Ctl.Name & """)"
End If
Next Ctl
GROUPER=true
Err
End Function

Public Function Click_Etiq(NomEtiq As String) As Boolean
MsgBox "vous avez cliqué sur l'étiquette " & NomEtiq
End Function

Private Sub Form_Load()
GROUPER Me, "Groupe", "Click_Etiq"
End Sub

tu n'a plus qu'a mettre "Groupe" dans le tag des controles que tu veux grouper.

n'ayant pas access à disposition, la syntaxe n'est peut etre pas parfaite.

++
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Pas mal, j'y ai pensé également, mettre directement le nom de la
fonction dans l'affectation du OnClick. Le soucis, c'est que ça ne fait
que mettre le nom de la fonction mais ça ne l'exécute pas!



Il faudrait un truc du style

For each fonction in Form

Execute fonction

Next



Ca serait vraiment le top, mais je commence à perdre espoir.
TBBUIM
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
12
et comme ca apres ?

for each ctl in me
if ctl.tag="Groupe" then
call click_Etiq(ctl.name)
end if
next
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Ouais mais non, c pas bon, ça ne marchera pas comme ça.

En plus, c'est chaque fonction click de chaque bouton que je veux
lancer pas une fonction à part qui prend les noms en param. Peu importe
d'ailleurs, si je dois réécrire toutes les fonctions, autant faire
comme je l'ai dit toute à l'heure, je les mets toutes dans un module et
je les appelle avec la fonction Run "N" & Cstr(i)

Là jsuis sur que ça marche, mais le but, c'est justement de ne pas en mettre des tartines.

Le truc serait peut être possible, si la fonction Run marchait pour les
fonctions qui ne sont pas dans un module, mais ce n'est pas le cas
apparemment.
TBBUIM
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
12
je jeterai un coup d'oeil ce soir..
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Merci

Mais je doute que tu trouves quelque chose...

À mon avis, ya un truc bidon, ou alors ya pas de truc!

TBBUIM
Messages postés
1471
Date d'inscription
mardi 5 février 2002
Statut
Membre
Dernière intervention
20 octobre 2014
12
faut passer la sub en public aussi, non ?
Messages postés
940
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
3 février 2011
9
Oui aussi Sinon, ça plante lamentablement
TBBUIM