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 :

Syntaxe DLookup vba sur Access


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut Syntaxe DLookup vba sur Access
    Bonjour tout le monde,

    Voilà j'ai un problème de syntaxe en vba...
    En fait, j'ai un formulaire et je dois modifier le montant d'une de mes tables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      MontantQuiReste = DLookup("[MontantRestant]", "Encours", "[Type]='Investissement' and Année = '" & Modifiable39.Value & "' ")
        Nouveau_Montant = MontantQuiReste - " & Texte29.Value & "
        DoCmd.RunSQL "UPDATE Encours SET [MontantRestant] = '" & Montant_Restant & "' WHERE ([Type] = 'Investissement' & [Année] = '" & Modifiable39.Value & "');"
    Je récupère le montant de ma table pour lui soustraire un montant qui se trouve dans ma table Encours et le remplacer par sa nouvelle valeur.

    Mais j'ai plein de problèmes de syntaxe.
    Merci d'avance pour votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Première chose à faire, nommer tes contrôles... Texte29 et Modifiable39 ne signifient rien de parlant pour un relecteur.

    Ensuite, si Texte29 est un numérique, il ne se délimite pas par des quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nouveau_Montant = MontantQuiReste - Me!Texte29
    Idem pour le contenu d'une liste...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "UPDATE Encours SET [MontantRestant] = " & Montant_Restant & " WHERE ([Type] = 'Investissement' & [Année] = " & Me!Modifiable39 &");"
    Argy
    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.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    J'ai changé ce que vous m'avez dit mais il me trouve une erreur sur le DLookup...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim MontantQuiReste As Variant
     
    MontantQuiReste = DLookup("[MontantRestant]", "Encours", "[Type]='Investissement' and Année = '" & Modifiable39.Value & "'")
    Merci d'avance

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut
    Qu'as tu changé ?
    Année est censé être un nombre donc pas de '' sauf si tu as fait la pseudo-bêtise de considérer que ce champ est de type texte...

    Argy
    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.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  5. #5
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Je vous met mon code entier :


    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
    Dim Gestion_Du_Budget As DAO.Database
    Dim db As Database
    Dim idDuFournisseur As Variant
    Dim MontantQuiReste As Variant
    Dim Nouveau_Montant As Variant
    Dim AnnéeEnCours As Long
    Set db = CurrentDb()
     
    idDuFournisseur = DLookup("[id]", "Fournisseur", "[Nom]='" & Modifiable33.Value & "'")
    AnnéeEnCours = Modifiable39.Value
     
    If Modifiable15.Value = "Investissement" Then
        db.Execute "INSERT INTO Investissement([Date],[NumCommande],[MotifCommande],[Montant],[idFournisseur]) VALUES (' " & Texte9.Value & " ' , ' " & Texte24 & " ', ' " & Texte26.Value & " ', ' " & Texte29.Value & " ', ' " & idDuFournisseur & " ')"
        MontantQuiReste = DLookup("[MontantRestant]", "Encours", "[Type]='Investissement' and Année = '" & Modifiable39.Value & "'")
        Nouveau_Montant = MontantQuiReste - Me.Texte29
        DoCmd.RunSQL "UPDATE Encours SET [MontantRestant] = " & Nouveau_Montant & " WHERE ([Type] = 'Investissement' & [Année] = " & Me!Modifiable39 & ");"
        MsgBox ("Mise à jour effectuée")
    End If

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 134
    Billets dans le blog
    5
    Par défaut
    J'en suis fort aise...
    Je répète donc :
    Citation Envoyé par Argy
    Première chose à faire, nommer tes contrôles... Texte29 et Modifiable39 ne signifient rien de parlant pour un relecteur.
    ...
    J'ajouterais : préciser le type de chacun de ces contrôles et vérifier en amont leur non nullité et leur validité en les passant à des variables de type Variant.

    Argy
    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.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

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

Discussions similaires

  1. [AC-2010] programme vba sur access
    Par judejuda dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/10/2012, 20h52
  2. Erreurs de syntaxes CREATE TABLE sur Access + MySQL
    Par bmarcesche dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 17/06/2009, 08h56
  3. Problème de VBA sur access 2003
    Par sweetty dans le forum VBA Access
    Réponses: 2
    Dernier message: 11/11/2007, 22h16
  4. [VBA-E]Ecrire et lancer une requete sur Access
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/03/2006, 14h32
  5. Macro VBA sur Access
    Par beurnoir dans le forum Access
    Réponses: 3
    Dernier message: 12/10/2005, 16h46

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