Vb: form et module

raro Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   -  
sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   -
salut à tous!

afin d'aérer mon programme j'ai décidé de mettre toutes mes procédure dans un module le problème c'est que lorsque j'exécute l'application j'ai un message d'erreur comme si l'application ne lisait pas ce qu'il y a dans le module
voici le code module:
Sub p_charger_donnees()
text_licence.Text = rs("licence_nageur").Value
text_nom.Text = rs("nom_nageur").Value
text_prenom.Text = rs("prenom_nageur").Value
text_datnais.Text = rs("datnais_nageur").Value
text_sexe.Text = rs("sexe_nageur").Value
End Sub

Sub p_transfert_donnees_disque()
rs.Fields("licence_nageur") = text_licence.Text
rs.Fields("nom_nageur") = text_nom.Text
rs.Fields("prenom_nageur") = text_prenom.Text
rs.Fields("datnais_nageur") = text_datnais.Text
rs.Fields("sexe_nageur") = text_sexe.Text
End Sub

Sub p_blanc()
text_licence.Text = ""
text_nom.Text = ""
text_prenom.Text = ""
text_datnais.Text = ""
text_sexe.Text = ""
End Sub
Sub p_afficher_frame1()
Frame1.Visible = True
End Sub
Sub p_afficher_frame2()
Frame2.Visible = True
text_nom.Visible = False
text_prenom.Visible = False
text_datnais.Visible = False
text_sexe.Visible = False
End Sub

Sub p_test_caracteres()
Const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZÄËÏÖÜÀÁÂÃÄÅÆÇÈÉÊËÒÓÔÕÖÙÚÛÜÝÌÍÎÏ-"
Dim h As Integer
Dim dum As String
Dim rep As Long
dum = "Caractère"
h = 0
For h = 1 To Len(dum)
rep = InStr(1, alphabet, UCase(Trim(Mid(dum, h, 1))), vbTextCompare)
If (rep = 0) Then
MsgBox "La saisie ne peut comporter que des lettres"
dum = ""
Exit Sub
End If
Next h
text_nom = UCase(text_nom.Text)
End Sub

Sub p_chiffres()
Dim i As Integer
i = 0
For i = 1 To Len(text_licence.Text)
If UCase(Trim(Mid(text_licence.Text, i, 1))) Like "[!0-9]" Then
MsgBox "La saisie ne peut comporter que des chiffres"
text_licence = ""
text_licence.SetFocus
Exit Sub
End If
Next i
End Sub

Sub p_nombre_chiffres()
If Len(text_licence) <> 16 Then
MsgBox "La saisie doit comporter exactement 16 chiffres"
text_licence = ""
text_licence.SetFocus
Exit Sub
End If
End Sub

Sub p_prenom()
Dim m As Integer
m = 0
text_prenom = UCase(Left(text_prenom, 1)) & LCase(Mid(text_prenom, 2))
If InStr(text_prenom, " ") > 0 Or InStr(text_prenom, "-") > 0 Or InStr(text_prenom, ".") > 0 Then
For m = 2 To Len(text_prenom)
Select Case Mid(text_prenom, 1)
Case " ", "-", "."
text_prenom = Trim(Left(text_prenom, m - 1)) & " " & UCase(Mid(text_prenom, m + 1, 1)) & Mid(text_prenom, m + 2)
End Select
Next m
End If
p_test_caracteres
text_prenom = UCase(text_prenom.Text)
End Sub

Sub p_format_date()
If (text_datnais Like "##/##/####") = False Then
MsgBox "Saisie invalide,format demandé: JJ/MM/AAAA"
Exit Sub
End If
End Sub

Sub p_caractere_sexe()
If Len(text_sexe) <> 1 Then
MsgBox "La saisie ne peut comporter qu'un seul caractère"
Const alphabet = "FM"
Dim j As Integer
Dim lum As String
Dim reponse As Long
lum = "Caractère"
h = 0
For j = 1 To Len(lum)
reponse = InStr(1, alphabet, UCase(Trim(Mid(lum, j, 1))), vbTextCompare)
If (reponse = 0) Then
MsgBox "La saisie ne peut comporter que la lettre M ou F"
lum = ""
Exit Sub
End If
Next j
text_sexe = UCase(text_sexe.Text)
End Sub


et voici ce qu'il y a dans ma form (elle n'est pas fini mais cmd_ouvrir devrait me faire apparaitre la frame1 à l'écran, au lieu de cela j'ai le message "un objet est requis" en l'occurence p_afficher_frame1 qui se trouve dans le module):
Option Explicit

Private Sub cmd_annuler_Click()
p_blanc
Frame2.Visible = False
End Sub



Private Sub cmd_debut_Click()
If rs.RecordCount > 0 Then
rs.MoveFirst
p_blanc
p_charger_donnees
End If
End Sub

Private Sub cmd_fermer_Click()
Unload Me
End Sub

Private Sub cmd_fermer2_Click()
Unload Me
End Sub

Private Sub cmd_fin_Click()
If rs.RecordCount > 0 Then
rs.MoveLast
p_blanc
p_charger_donnees
End Sub

Private Sub cmd_modifier_Click()
Frame2.Visible = True
rs.Edit
p_transfert_donnees_disque
rs.Update
End Sub

Private Sub cmd_ouvrir_Click()
p_afficher_frame1
p_charger_donnees
End Sub

 Private Sub Form_Load()
     'frame 1 et 2 invisible (seul le bouton "ouvrir apparait"
     Frame1.Visible = False
     Frame2.Visible = False

     Set db = OpenDatabase("C:\Documents and Settings\PARENTS\Mes documents\ROGER\dossier_toutelanat\tln.mdb")
     Set rs = db.OpenRecordset("NAGEURS")

End Sub


merci encore

"Donne un poisson à un homme, il mangera une journée.
Apprends-lui à pêcher, il mangera toute sa vie"
A voir également:
  • Vb: form et module
  • Vb - Télécharger - Langages
  • Vb cable - Télécharger - Audio & Musique
  • Vb editor - Télécharger - Langages
  • Vb runtime - Télécharger - Divers Utilitaires
  • Vb express - Télécharger - Langages

1 réponse

sam3000 Messages postés 1225 Date d'inscription   Statut Membre Dernière intervention   144
 
à partir d'un module tu ne peut pas acceder au objets de la form uniquement par leurs noms!
exemple, dans la form tu ecrivais:
Sub p_charger_donnees()
text_licence.Text = rs("licence_nageur").Value
text_nom.Text = rs("nom_nageur").Value
text_prenom.Text = rs("prenom_nageur").Value
text_datnais.Text = rs("datnais_nageur").Value
text_sexe.Text = rs("sexe_nageur").Value
End Sub

si tu deplace dans un module, ca doit devenir (en supposant que la form s'appelle 'MaForm'):
public Sub p_charger_donnees()
MaForm.text_licence.Text = MaForm.rs("licence_nageur").Value
MaForm.text_nom.Text = MaForm.rs("nom_nageur").Value
MaForm.text_prenom.Text = MaForm.rs("prenom_nageur").Value
MaForm.text_datnais.Text = MaForm.rs("datnais_nageur").Value
MaForm.text_sexe.Text = MaForm.rs("sexe_nageur").Value
End Sub

0