Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/07/2011, 11h48   #1
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 99
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juin 2011
Messages : 99
Points : 9
Points : 9
Par défaut Bouton "Click" qui ne marche pas

Bonjour,

J'utilise un code VBA pour la fermeture d'un formulaire avec condition.
Voici le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub Cmd_Fermer_Click()
 
If IsNull(Me.Matricule) Then
    'Message
    Matriculemanquant
    Me.Matricule.SetFocus
    Me.AllowEdits = True
ElseIf IsNull(Me.Nom) Then
    Nommanquant
    Me.Nom.SetFocus
    Me.AllowEdits = True
ElseIf IsNull(Me.Prenom) Then
    Prenommanquant
    Me.Prenom.SetFocus
    Me.AllowEdits = True
ElseIf IsNull(Me.Avion) Then
    Avionmanquant
    Me.Avion.SetFocus
    Me.AllowEdits = True
ElseIf IsNull(Me.SousEquipe) Then
    Equipemanquant
    Me.SousEquipe.SetFocus
    Me.AllowEdits = True
ElseIf IsNull(Me.Cigles) Then
    Siglevide
    Me.Cigles.SetFocus
    Me.AllowEdits = True
Else
    'Fermeture
    Me.AllowEdits = False
    DoCmd.Close , ""
End If
End Sub
Tout me semble bon, mais malheuresement ce n'est pas le cas car ça ne marche plus.
C'est assez étrange car sur une version précédente de ma base (qui date de 2 jours), ce même code fonctionne très bien. Je me dis que non et pourtant c'est forcement le cas, mais qu'est ce que j'aurai pu modifier sans le vouloir pour que ce code ne fonctionne plus?

Merci de votre aide
Williamm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 16h36   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Bonjour,

Qu'est-ce qui ne marche pas ?
n'est pas correct ! : tu dois préciser soit soit ce que tu veux fermer sinon, tu enlèves la virgule et les guillemets.

Euh, entre (), qu'est ce que c'est que cette procédure étrange ?
Tu aurais pu la rendre un peu plus générique...
Imagine que tu aies 75 champs à vérifier, tu vas créer 75 procédures et les appeler 75 fois pour dire que tel champ n'est pas correcte ?
Hummm, c'est pas très bien pensé comme façon d'écrire....
Voici une piste à adapter :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub CommandSave_Click()
Dim ctl                                                As Control
    If MyFormDataIsCorrect(strTargetFieldName, strTargetFieldCaption) = False Then
        MsgBox strTargetFieldCaption & " doit contenir une valeur !", vbExclamation
        Set ctl = Me.Controls(strTargetFieldName)
        ctl.SetFocus
    Else
        MsgBox "C'est bon, merci !"
        DoCmd.Close acForm, Me.Name
    End If
    Set ctl = Nothing
End Sub
 
Private Function MyFormDataIsCorrect(ByRef strTargetFieldName As String, ByRef strTargetFieldCaption As String) As Boolean
 
    On Error GoTo L_ErrMyFormDataIsCorrect
    If isbull(Me.Matricule) Then
        If IsNull(Me.Nom) Then
            [....]
        Else
            strTargetFieldName = "Nom": strTargetFieldCaption = "le nom du quidam"
            Err.Raise 94
        End If
    Else
        strTargetFieldName = "Matricule": strTargetFieldCaption = "le Matricule"
        Err.Raise 94
    End If
    MyFormDataIsCorrect = True
    On Error GoTo 0
L_ExMyFormDataIsCorrect:
    Exit Function
 
L_ErrMyFormDataIsCorrect:
    MyFormDataIsCorrect = False
    Resume L_ExMyFormDataIsCorrect
End Function
Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 11h02   #3
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 99
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juin 2011
Messages : 99
Points : 9
Points : 9
Merci pour ta réponse,

Alors par rapport à mon code j'ai trouvé la solution; j'ai remplacé la source de mon formulaire qui provient d'une table par une requete. (je ne comprends pas la raison pour laquelle cette méthode a marchée)

Ensuite par rapport à ton code, je suis étudiant en école d'ingénieur mais je n'ai pas suffisamment de connaissance en vba pour élaborer le code que tu as posté.
D'ailleurs je n'ai pas fais beaucoup de programmation dans mon cursus.
Je n'arrive pas à intégrer ton code pour que ça fonctionne correctement :/

Will
Williamm est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h35.


 
 
 
 
Partenaires

Hébergement Web