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

Access Discussion :

[VBA] "Expression sans paramètre"


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut [VBA] "Expression sans paramètre"
    Bonjour à tous,

    J'ai réalisé dans ma base de données un code afin d'afficher un message à l'utilisateur si il a des remarques à traiter pour des commandes.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Form_Open(Cancel As Integer)
    Dim msg, style, title, Response, mystring
    If Me.remarques <> 0 Then
    msg = "Il vous reste des remarques non traitées, voulez-vous le faire maintenant ?"
    style = vbYesNo + vbInformation + vbDefaultButton1
    title = "Attention !"
    Response = MsgBox(msg, style, title)
        If Response = vbYes Then
        DoCmd.OpenReport "requeteremarques"
        DoCmd.Close acReport, "requeteremarques"
        End If  
    End If
    End Sub
    Mon problème est que mon code fonctionne bien lorsqu'il y a une ou plusieurs remarque à traiter. Mais s'il n'y en a plus aucune, un message d'erreur apparait m'indiquant "Erreur d'exécution 2427 : Expression sans paramètre"

    Quelqu'un a-t-il une idée de ce qui se passe?

    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    Ah oui, au fait, j'ai oublié de préciser que l'erreur concerne la troisième ligne qui apparait en surbrillance dans mon code lorsque je clique sur "débogage" :

    Merci

  3. #3
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Et qu'est ce que c'est remarques dans Me.remarques ?
    Autre chose (Bah heureusement que ton code marche) sinon je ne comprends pas tres bien ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DoCmd.OpenReport "requeteremarques"
    DoCmd.Close acReport, "requeteremarques"
    tu ouvres ton report et tu le refermes la ligne suivante; comprends pas.
    @+

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    Oki, je me suis peut-être mal exprimée.

    J'ai une table pour enregistrer les factures. Si un problème apparait concernant une facture (adresse de facturation non valide, absence de certaines informations obligatoires pour la mise en paiement...), l'utilisateur doit l'indiquer dans un mémo appelé "remarques".

    Dans mon formulaire principal, j'ai inséré le champ "remarques" afin qu'à chaque connexion, l'utilisateur sache qu'il lui reste des remarques à traiter si le champ n'est pas vide. Le code que j'ai donc fait affiche un message à l'utilisateur. Lorsque l'utilisateur souhaite avoir un état de ses remarques (report) il clique sur le bouton "oui" et l'état s'imprime. Cependant, il n'est pas utile que l'état s'affiche puisqu'il est imprimé. C'est pour cela que l'état s'ouvre pour imprimer et se ferme aussitot après.

    Mon problème est que mon code fonctionne lorsqu'il y a une ou plusieurs remarques mais qu'une erreur 2427 apparait s'il n'y a aucune remarque.

    Est-ce vraiment plus clair ? (pas sure lol)

    N'hésitez pas si vous ne comprenez rien du tout...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 41
    Points : 51
    Points
    51
    Par défaut
    Si qd ton Me.Remarque est en surbrillance, qd tu pointe sur me.remarque, il t'affiche null alors c normal.

    ton Me.Remarque, c'est quoi comme objet ? une zone de texte, une liste, ou autre ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    Bonjour bizu31,

    Mon objet est une zone de texte.

    Lorsque je pointe ma souris sur me.remarques, il m'affiche :

    Me.remarques = <Expression sans paramètre>

    J'ai essayé de remplacé par et par mais ça ne fonctionne toujours pas.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 41
    Points : 51
    Points
    51
    Par défaut
    sans le cas d'une zone de texte, dans la propriété afterupdate, il te faut un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    me.remarque.value=iif(isnull(me.remarque.value),Valeur_Si_Null,me.remarque.value))
    ' Valeur_Si_Null correspondant à une valeur que tu choisis par défaut, pour que jamais ton champ ne soit nul.
    ' Ensuite sur ton bonton qui commande ton action, tu verifie si la valeur de ton champ est égale à Valeur_Si_Null avnt de continuer
    ' Si c'est le cas, bah tu saura et tu gère

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    Bizu31,

    Je ne clique sur aucun bouton pour afficher le message, la propriété d'ouverture du message indiquant qu'il y a des remarques est sur ouverture de mon formulaire menu principal.

  9. #9
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par bizu31
    sans le cas d'une zone de texte, dans la propriété afterupdate, il te faut un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    me.remarque.value=iif(isnull(me.remarque.value),Valeur_Si_Null,me.remarque.value))
    ' Valeur_Si_Null correspondant à une valeur que tu choisis par défaut, pour que jamais ton champ ne soit nul.
    ' Ensuite sur ton bonton qui commande ton action, tu verifie si la valeur de ton champ est égale à Valeur_Si_Null avnt de continuer
    ' Si c'est le cas, bah tu saura et tu gère

    Tu viens de recoder inutilement la fonction Nz

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nz(Me.remarque.Value, Valeur_Si_Null)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 41
    Points : 51
    Points
    51
    Par défaut
    quand un utilisateur se connecte, tu connais nom numéro d'identification.
    A partir de la tu peux faire un recordset sur ses remarques.
    Si ton recordset est null, tu zap toute cette partie, sinon tu l'exécute.
    C'est pas un truc comme ca qu'il te faut ?

    et tof, c pas forcement inutile, qd tu trouve pas un truc tu l'encode, sauf pour un developpeur microsoft peut -etre ? qd tu trouve pas t'attend ?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    Bonjour Tofalu,

    cette solution ne fonctionne pas non plus, je ne sais plus comment faire.

  12. #12
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Toutes tes variables sont déclarées en Variant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Form_Open(Cancel As Integer)
    Dim msg as string, style as integer ....
    If Nz(Me.remarques) <> "" Then
    msg = "Il vous reste des remarques non traitées, voulez-vous le faire maintenant ?"
    style = vbYesNo + vbInformation + vbDefaultButton1
    title = "Attention !"
    Response = MsgBox(msg, style, title)
        If Response = vbYes Then
        DoCmd.OpenReport "requeteremarques"
        DoCmd.Close acReport, "requeteremarques"
        End If  
    End If
    End Sub

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    J'ai toujours la même erreur... Je ne comprends pas...

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 41
    Points : 51
    Points
    51
    Par défaut
    Est-ce que tu rempli ton champ me.remarque par une requete ?

  15. #15
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Peut être que l'évènement n'est pas le bon

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    Bizu, je rempli mon champ remarques dans un sous formulaire présent dans un formulaire d'enregistrement, basé sur ma table directement, donc, pas dans une requête.

    On va quand même bien réussir à trouver une soluttion à nous trois!!! lol

  17. #17
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Dans un sous formulaire ? ça veut dire que pour un dossier, tu as plusieurs remarques ? Dans ce cas, tu n'es pas du tout sur la bonne voie en comparant le champ à 0. Il te faut utiliser DAO et un recordset pour savoir s'il contient des remarques ou pas

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 41
    Points : 51
    Points
    51
    Par défaut
    evite les sous formulaire lol ca pose plus de probleme que ca n'a d'avantages :p Tu peux tout controler à partir d'un formulaire unique, mais ptet qu'on va trouver un truc xD

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    Woupssss, lol

    Je ne sais même plus comment j'ai fait ma BD, en fait, le champ des remarques que j'ai inclu à mon formulaire est basé sur une requête, celle que j'ai faite pour pour état. Son instruction SQL est la suivante :

    SELECT devisdacda.fournisseur, devisdacda.numerocda, Factures.remarques
    FROM devisdacda INNER JOIN Factures ON devisdacda.numerocda = Factures.numerocda
    WHERE (((Factures.remarques) Is Not Null))
    ORDER BY devisdacda.fournisseur;


    Est-ce que ça peut vous aider ?

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    Youpi, j'ai trouvé la solution !!!!!

    Je vous explique :

    Ma table contenant mon champ "remarques" se nomme "Factures".
    Ma requête comprenant trois champs dont le champ "remarques" qui a pour critère "Est Pas Null".
    Mon report est basé sur la requête puisque je ne veux imprimer que les informations des factures pour lesquelles il y a des remarques.

    Mon erreur était en fait de prendre le champ "remarques" de ma requête, car, en effet, si je n'ai aucune remarque dans ma table facture, la valeur de mon champ est "#ERREUR", ce que je n'avais pas remarqué puisque qu'en mode formulaire, mon champ remarques n'est pas visible.

    Afin de résoudre le problème, j'ai mis pour source le champ "remarques" de ma table "Factures" sur mon formulaire principal et ça fonctionne très bien.

    Ainsi, lors de l'ouverture de mon menu principal, mon code (qui est finalement celui que j'ai posté au départ) cherche parmi mes enregistrements s'il y a une ou plusieurs remarques, affiche le message s'il en trouve et n'affiche rien s'il n'en trouve pas.

    Merci beaucoup pour votre aide. Si j'avais un peu plus regardé dès le départ, j'aurai vu le problème. Désolée si je vous ai fait perdre votre temps.

    A bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA Word] Next sans for
    Par Dobyan08 dans le forum VBA Word
    Réponses: 6
    Dernier message: 20/10/2016, 10h57
  2. [VBA][Word]Sauvegarder sans les macros
    Par Oui-Oui MB dans le forum VBA Word
    Réponses: 3
    Dernier message: 23/07/2007, 12h29
  3. Expression sans parametre
    Par lmollard dans le forum Access
    Réponses: 4
    Dernier message: 08/11/2005, 17h19

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