Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2962 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA procedure publique et param form

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VBA procedure publique et param form

n°285260
nightmaste​r
Posté le 13-01-2003 à 15:37:59  profilanswer
 

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
mood
Publicité
Posté le 13-01-2003 à 15:37:59  profilanswer
 

n°285301
MagicBuzz
Posté le 13-01-2003 à 15:58:04  profilanswer
 

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

n°285336
nightmaste​r
Posté le 13-01-2003 à 16:25:06  profilanswer
 

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

n°285366
nur
Posté le 13-01-2003 à 17:03:23  profilanswer
 

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

n°285392
nightmaste​r
Posté le 13-01-2003 à 17:23:37  profilanswer
 

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?

n°285414
nur
Posté le 13-01-2003 à 17:35:05  profilanswer
 

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

n°285428
MagicBuzz
Posté le 13-01-2003 à 17:44:41  profilanswer
 

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

n°285741
nightmaste​r
Posté le 14-01-2003 à 08:46:50  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  VBA procedure publique et param form

 

Sujets relatifs
[VBA] Barre de progression ?[VBA] : ouvrir EXCEL par Access, sans changer de fenêtre active
[VBA] Tri de colonne dans une listboxVBA Access Facile mais pas pour moi
[HTML|JS] balise form et espace sous IEacces 2000, VBA et temps d'éxécution
[VBA Access] vous connaitriez pas un site bien pour apprendreOcx : Accéder au propriétés à partir d'une autre form...
Problème avec une procedure stockée (INSERT INTO)Delphi 7 : Rendre un form translucide PENDANT le run
Plus de sujets relatifs à : VBA procedure publique et param form


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR