IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Message d'erreur VBA


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Pharmacien
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Par défaut Message d'erreur VBA
    Bonjour,
    j'ai créé une base de données Clients, qui contient ceux qui possèdent la CARTE CHIFA ( carte à puce ). puisque je suis nul en VBA, j'ai demandé à un ami de réaliser un formulaire de recherche qui filtre les enregistrements à l'aide de code VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Private Sub Commande32_Click()
    Dim strsearch As String
    strsearch = " select * from client_h "
    Me.recherch_chifa1.Form.RecordSource = strsearch
    Me.recherch_chifa1.Form.Requery
    End Sub
     
    Private Sub n1_AfterUpdate()
    Dim strsearch As String
    Dim strtext As String
    strtext = Me.n1.Value
    strsearch = " select * from client_h where ((num_assure like ""*" & strtext & "*"" ) or (nom_assure like ""*" & strtext & "*"" ))"
    Me.recherch_chifa1.Form.RecordSource = strsearch
    End Sub
     
    Private Sub n2_AfterUpdate()
    Dim strsearch As String
    Dim strtextn1 As String
    Dim strtextn2 As String
    strtextn1 = Me.n1.Value
    strtextn2 = Me.n2.Value
    strsearch = " select * from client_h where ((num_assure like ""*" & strtextn1 & "*"" ) and (nom_assure like ""*" & strtextn2 & "*"" ))"
    Me.recherch_chifa1.Form.RecordSource = strsearch
    Me.recherch_chifa1.Form.Requery
    End Sub
     
    Private Sub n3_AfterUpdate()
    Dim strsearch As String
    Dim strtextn1 As String
    Dim strtextn3 As String
    Dim strtextn2 As String
     
    strtextn1 = Me.n1.Value
    strtextn2 = Me.n2.Value
    strtextn3 = Me.n3.Value
     
    strsearch = " select * from client_h where ((num_assure like ""*" & strtextn1 & "*"" ) and (nom_assure like ""*" & strtextn2 & "*"" ) and (prenom_assure like ""*" & strtextn3 & "*"" ))"
    Me.recherch_chifa1.Form.RecordSource = strsearch
    Me.recherch_chifa1.Form.Requery
    End Sub
     
    Private Sub Texte18_AfterUpdate()
     
    End Sub
    je n'ai changé les noms des commandes et des zones de texte pour éviter tout conflit.
    pour expliquer le contenu de code:
    recherch_chifa1 : la table qui contient toutes les informations des clients dont: num_assure ( numéro assuré ), nom_assure, prenom_assure
    commande32: permet l'annulation du filtre.
    n1 : zone de texte qui filtre les données du champ num_assure
    n2 : zone de texte qui filtre les données du champ nom_assure
    n3 : zone de texte qui filtre les données du champ prenom_assure.

    le filtre fonctionne bien, mais le message d'erreur suivant apparait si je ne saisie rien dan la zone de texte n1, " erreur d’exécution '94': utilisation incorrecte de Null.

    je veux une solution qui permet le filtrage des données sans être obligé à saisir dans la zone de texte n1.

    Merci Beaucoup.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonsoir,

    Il aurait été plus simple j'imagine de créer un module qui construit le filtre à partir des 3 valeurs des critères et appeler ce module sur les évènements Après mise à jour des 3 champs. Il faut tester les valeurs des critères et ne les prendre en compte que si elles sont différentes de NULL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    37
    38
    39
    40
    41
    42
    43
     
    Private Sub n1_AfterUpdate()
    SourceFiltre
    End Sub
     
    Private Sub n2_AfterUpdate()
    SourceFiltre
    End Sub
    Private Sub n3_AfterUpdate()
    SourceFiltre
    End Sub
    'Construire la source en testant les valeurs des critères
    Private Sub SourceFiltre()
    Dim strsearch As String, strWhere As String
    Dim strtextn1 As String
    Dim strtextn3 As String
    Dim strtextn2 As String
     
    strtextn1 = Me.n1.Value
    strtextn2 = Me.n2.Value
    strtextn3 = Me.n3.Value
    strWhere = " WHERE "
    If Not IsNull(Me.n1) Then
    strWhere = strWhere & " num_assure like ""*" & strtextn1 & "*"" "
    End If
    If Not IsNull(Me.n2) Then
        If strWhere <> " WHERE " Then
            strWhere = strWhere & " AND nom_assure like ""*" & strtextn2 & "*"" "
        Else
            strWhere = strWhere & " nom_assure like ""*" & strtextn2 & "*"" "
        End If
    End If
    If Not IsNull(Me.n3) Then
        If strWhere <> " WHERE " Then
            strWhere = strWhere & " AND prenom_assure like ""*" & strtextn3 & "*"" "
        Else
            strWhere = strWhere & " prenom_assure like ""*" & strtextn3 & "*"" "
        End If
    End If
    strsearch = " select * from client_h" & strWhere
    Me.recherch_chifa1.Form.RecordSource = strsearch
    Me.recherch_chifa1.Form.Requery
    End Sub
    Attention, code non testé !

    Cordialement,

  3. #3
    Membre habitué
    Homme Profil pro
    Pharmacien
    Inscrit en
    Mars 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Pharmacien
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 8
    Par défaut
    Merci Pour la réponse,
    Mais ça n'a pas marché pour moi, le même message d'erreur s'affiche. comme je l'ai dit, je suis nul en VBA. peut-être que j'ai mal entré le code ?

Discussions similaires

  1. message d'erreurs VBA
    Par HERBINE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/08/2011, 14h44
  2. message d'erreur VBA
    Par alexistak dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2008, 09h33
  3. message d'erreur VBA à l'ouverture du switchboard
    Par tci_idf dans le forum VBA Access
    Réponses: 0
    Dernier message: 11/01/2008, 18h57
  4. Message d'erreur VBA
    Par bouba_95 dans le forum Access
    Réponses: 5
    Dernier message: 22/02/2007, 15h27
  5. [VBA-E+SQL] Message d'erreur et excel qui plante
    Par Deejoh dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/02/2006, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo