VBA procedure publique et param form

VBA procedure publique et param form - VB/VBA/VBS - Programmation

Marsh Posté le 13-01-2003 à 15:37:59    

salut
(bon alors a fait pas si longtps que ça que je fais du vba alors bon)
 
alors j'ai un procedure public que je fous ds un module pasque utilisée par tous les formulaires..
ça donne ça:
 
Public Sub masquerhaut1(f As Form)
bt_creer.Visible = False
bt_modif.Visible = False
bt_suppr.Visible = False
bt_rech.Visible = False
bt_prec.Visible = False
bt_suiv.Visible = False
bt_val.Visible = True
bt_annul.Visible = True
End Sub

 
et l'appelle dans le code des formulaire ça donne :
 
masquerhaut1 (Forms!service)
 
et le pb, c que qd c exécuté, il me surligne la ligne ci dessus et me dit "incompatibilité de type"  arf
 
- logiquement, le module, avec les proc public, est un module, et pas un module de class ...
- "f as form", form, c bon kom type de déclaration?  
- Forms!service = Forms!nomformulaire (form_service, c bien que le nom du module? de toute façon, ça marche pas)
et puis la syntaxe comme ça, c'est dans l'aide alors...
- ya des trucs particulier  à cocher dans /outils/références ..??
 
si vous plais aidez moi! pasque, qd je trouve pas le pb, ça me soule très vite arf
 
++


Message édité par nightmaster le 13-01-2003 à 15:40:05
Reply

Marsh Posté le 13-01-2003 à 15:37:59   

Reply

Marsh Posté le 13-01-2003 à 15:58:04    

nightmaster a écrit :

salut
(bon alors a fait pas si longtps que ça que je fais du vba alors bon)
 
alors j'ai un procedure public que je fous ds un module pasque utilisée par tous les formulaires..
ça donne ça:
 
Public Sub masquerhaut1(f As Form)
bt_creer.Visible = False
bt_modif.Visible = False
bt_suppr.Visible = False
bt_rech.Visible = False
bt_prec.Visible = False
bt_suiv.Visible = False
bt_val.Visible = True
bt_annul.Visible = True
End Sub

 
et l'appelle dans le code des formulaire ça donne :
 
masquerhaut1 (Forms!service)
 
et le pb, c que qd c exécuté, il me surligne la ligne ci dessus et me dit "incompatibilité de type"  arf
 
- logiquement, le module, avec les proc public, est un module, et pas un module de class ...
- "f as form", form, c bon kom type de déclaration?  
- Forms!service = Forms!nomformulaire (form_service, c bien que le nom du module? de toute façon, ça marche pas)
et puis la syntaxe comme ça, c'est dans l'aide alors...
- ya des trucs particulier  à cocher dans /outils/références ..??
 
si vous plais aidez moi! pasque, qd je trouve pas le pb, ça me soule très vite arf
 
++


 
Déjà, les sub ne prennent pas de parenthèses à l'appel.
 
taSub paramètre
 
Donc soit tu n'en met pas, soit tu fais un call
 
call taSub(parmètre)
 
Sinon, la syntaxe avec le "!" m'est inconnue. A mon avis il y a un problème à ce niveau.
 
En fait, j'essaie de comprendre :D
 
Logiquement, si tu appelles cette sub depuis une form qui doit se modifier elle-même :
 
form_service.masquerhaut1 Me
 
Si c'est ailleurs, ou qu'une form demande à une autre form de subir la modif :
 
form_service.masquerhaut1 NomDeLaForm
 
Par exemple :
form_service.masquerhaut1 service
 
Mais bon, je suis pas certain de tout comprendre ce que tu essaies de faire ;)
 
Sinon, un truc, je pense que les "bt_xxxx" qu'il y a dans ta sub sont des éléments de la form passée en paramètre non ?
 
Alors :
 

Code :
  1. Public Sub masquerhaut1(byref f As Form)
  2. with f
  3.   .bt_creer.Visible = False
  4.   .bt_modif.Visible = False
  5.   .bt_suppr.Visible = False
  6.   .bt_rech.Visible = False
  7.   .bt_prec.Visible = False
  8.   .bt_suiv.Visible = False
  9.   .bt_val.Visible = True
  10.   .bt_annul.Visible = True
  11. end with
  12. End Sub

Reply

Marsh Posté le 13-01-2003 à 16:25:06    

Citation :


Public Sub masquerhaut1(byref f As Form)  
with f  
 .bt_creer.Visible = False  
 .bt_modif.Visible = False  
 .bt_suppr.Visible = False  
 .bt_rech.Visible = False  
 .bt_prec.Visible = False  
 .bt_suiv.Visible = False  
 .bt_val.Visible = True  
 .bt_annul.Visible = True  
end with  
End Sub  
 


 
euh, oki, ça ça marche, c kool ;)
mais je comprend pas bien le principe de fonctionement du byref
ça veux dire koi en gros?
pasque faudrai que je puisse l'expliquer  comment que ça marche
et pi au cas je le rutiliserai un jour..
 
pour ce qui est de ce que je veux faire , bah , j'ai plein de formulaires, tous pareils, et bah ça c une partie commune
c sur que de base c que ducopier coller, mais ça fait plus style et plus propre (moins bourrinage) de faire juste des pub

Reply

Marsh Posté le 13-01-2003 à 17:03:23    

nightmaster a écrit :

Citation :


Public Sub masquerhaut1(byref f As Form)  
with f  
 .bt_creer.Visible = False  
 .bt_modif.Visible = False  
 .bt_suppr.Visible = False  
 .bt_rech.Visible = False  
 .bt_prec.Visible = False  
 .bt_suiv.Visible = False  
 .bt_val.Visible = True  
 .bt_annul.Visible = True  
end with  
End Sub  
 


 
euh, oki, ça ça marche, c kool ;)
mais je comprend pas bien le principe de fonctionement du byref
ça veux dire koi en gros?
pasque faudrai que je puisse l'expliquer  comment que ça marche
et pi au cas je le rutiliserai un jour..
 
pour ce qui est de ce que je veux faire , bah , j'ai plein de formulaires, tous pareils, et bah ça c une partie commune
c sur que de base c que ducopier coller, mais ça fait plus style et plus propre (moins bourrinage) de faire juste des pub
 


ça devrait quand meme marcher sans le "byref" ,a mon avis c'est surtout le "wiht f" qui manquait

Reply

Marsh Posté le 13-01-2003 à 17:23:37    

Public Sub parcours(ByRef f As Form, ByVal c As Integer)
 
wai, effectivement, le byref est pas indispensable, masi c qd meme mieux de passer une adresse que un form
bon
 maintenant, je veux fair ça
 
Public Sub parcours(ByRef f As Form, ByVal c As Integer)
 
If c = 0 Then
    With f
    .bt_modif.Enabled = False
    .bt_suppr.Enabled = False
    .bt_rech.Enabled = False
    End With
Else
    With f
    .bt_modif.Enabled = True
    .bt_suppr.Enabled = True
    .bt_rech.Enabled = True
    End With
     
End If

 
 
et pi ça marche po
j'ai essayer avec juste with f au début et end with à la fin de la procedure, et ça marche po ;(
qqn peut m'en dire  + sur ce with?

Reply

Marsh Posté le 13-01-2003 à 17:35:05    

nightmaster a écrit :

Public Sub parcours(ByRef f As Form, ByVal c As Integer)
 
wai, effectivement, le byref est pas indispensable, masi c qd meme mieux de passer une adresse que un form
bon
 maintenant, je veux fair ça
 
Public Sub parcours(ByRef f As Form, ByVal c As Integer)
 
If c = 0 Then
    With f
    .bt_modif.Enabled = False
    .bt_suppr.Enabled = False
    .bt_rech.Enabled = False
    End With
Else
    With f
    .bt_modif.Enabled = True
    .bt_suppr.Enabled = True
    .bt_rech.Enabled = True
    End With
     
End If

 
 
et pi ça marche po
j'ai essayer avec juste with f au début et end with à la fin de la procedure, et ça marche po ;(
qqn peut m'en dire  + sur ce with?


 
 
 
sur le principe ,je vois pas d'erreur mais fait plutot comme ça:
 
Public Sub parcours(ByRef f As Form, ByVal c As Integer)
 
With f
     
If c = 0 Then
    .bt_modif.Enabled = False
    .bt_suppr.Enabled = False
    .bt_rech.Enabled = False
Else
    .bt_modif.Enabled = True
    .bt_suppr.Enabled = True
    .bt_rech.Enabled = True
     
End If
End With
 
end sub
 
le with te permet d'eviter de taper F.bt...  a chq fois
c'est peut etre l'emploi de ton c qui pose probleme

Reply

Marsh Posté le 13-01-2003 à 17:44:41    

Tu passes bine le nombre en paramètre comme il faut ?
 
Syntaxe:
 
maSub maForm, monNombre

Reply

Marsh Posté le 14-01-2003 à 08:46:50    

oki  
alors ct bien avec with - end with au début et à la fin
 
le pb était plus loin dans la procedure
sur mon select case CurrentRecord
il failait en fait select case f.CurrentRecord
soit select case .CurrentRecord
je viens de trouvé ça en 2 min, comme koi à tête reposée, ça va mieux ;)
 
merci bien de votre aide

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed