VBA procedure publique et param form - VB/VBA/VBS - Programmation
Marsh Posté le 13-01-2003 à 15:58:04
| nightmaster a écrit : salut   | 
 
 
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 
 
 
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 :
  | 
Marsh Posté le 13-01-2003 à 16:25:06
| Citation :    | 
 
 
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 
Marsh Posté le 13-01-2003 à 17:03:23
nightmaster a écrit :
    | 
 
ça devrait quand meme marcher sans le "byref" ,a mon avis c'est surtout le "wiht f" qui manquait
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?
Marsh Posté le 13-01-2003 à 17:35:05
| nightmaster a écrit : Public Sub parcours(ByRef f As Form, ByVal c As Integer)   | 
 
 
 
 
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 
Marsh Posté le 13-01-2003 à 17:44:41
Tu passes bine le nombre en paramètre comme il faut ? 
 
Syntaxe: 
 
maSub maForm, monNombre
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
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