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 :

Demande d'aide pour la création d'un code VBA entre 2 tables [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut Demande d'aide pour la création d'un code VBA entre 2 tables
    Bonjour la communauté,

    Je me tourne vers vous, car je souhaiterai optimiser ma base de données de mon compte bancaire.

    Vous trouverez ci-joint les relations de ma base de données :
    Nom : Relation de ma BDD.JPG
Affichages : 713
Taille : 55,1 Ko

    Ci-joint ma table "Cheques" :
    Nom : Table Cheques.JPG
Affichages : 386
Taille : 29,4 Ko

    Ci-joint ma table "Mouvements" :
    Nom : Table Mouvements.JPG
Affichages : 426
Taille : 32,6 Ko


    Je souhaiterais optimiser ma base de données au niveau de la table « Cheques » et « Mouvements ».

    Alors dans la table « cheques » on retrouve les chèques émis et les chèques reçus où j’enregistre le numéro du chèque, la banque, l’intitulé, la date, et son montant.
    Cette table me permet de pointer les chèques encaissés et les chèques en attente d’encaissement.

    Lorsqu’un chèque est encaissé, je coche la case de la colonne « ChqEncaisse » en indiquant la date d’encaissement de ce dernier.
    Il est bon de savoir qu’un chèque peut correspondre à un ou plusieurs enregistrements au sein de la table « Mouvements » où l’on retrouve le numéro de chèque via la colonne « NumChq ».

    Donc à chaque fois, que j’indique un chèque encaissé, c’est-à-dire que je coche la colonne « ChqEncaisse » dans la table « Cheques », je dois effectuer des opérations manuelles afin de décocher la case « EnAttente » dans la table « Mouvements » pour chaque ligne correspondant au chèque encaissé.

    La colonne « EnAttente » coché signifie que le montant de la ligne d’enregistrement au sein de la table « Mouvements » n’est pas pris en compte pour le calcul du solde bancaire.
    En outre, comme vous pouvez l’imaginer cette opération manuelle peut être fastidieuse lorsqu'une remise de chèque correspondant à dix lignes d’enregistrements, et accroitre des erreurs sur le solde bancaire.

    C’est pour cela, que j’aimerais créer un code VBA, dans le but que lorsque je coche la case « ChqEncaisse » dans la table « Cheques », toutes les lignes d’enregistrement ayant un numéro de chèque identique dans la table « Mouvements » via la colonne « NumChq » qui est la clé primaire de la table « Cheques », alors tous les enregistrements s’actualisent automatiquement afin d’être pris en compte pour le solde bancaire, c’est-à-dire que le code décoche la case « EnAttente » dans la table en « Mouvements » dès lors que je coche la case « ChqEncaisse » dans la table « Cheques ».

    Ayant un niveau débutant dans le codage VBA, est ce que la communauté pourrait me donner une base de code et/ou des explications pour y arriver s'il vous plaît.

    J'espère être compréhensif dans mon explication, et je reste à votre disposition pour répondre à toutes questions.

    Une nouvelle fois, je tiens à remercier les internautes qui vont m’aider afin de réussir à développer mon projet.

    Dans le plaisir de vous lire, bonne soirée à vous et bon week-end.

    Bien cordialement Benjamin.

  2. #2
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Donc à chaque fois, que j’indique un chèque encaissé, c’est-à-dire que je coche la colonne « ChqEncaisse » dans la table « Cheques », je dois effectuer des opérations manuelles afin de décocher la case « EnAttente » dans la table « Mouvements » pour chaque ligne correspondant au chèque encaissé.
    Une suggestion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE table     SET newvalue     WHERE criteria;
    Un update de EnAttente avec un where sur le numero du cheque encaissé
    voir:UPDATE Statement (Microsoft Access SQL)
    https://msdn.microsoft.com/en-us/lib...ffice.12).aspx
    avec un exemple en vb

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Michel Voir le message
    Bonjour

    Une suggestion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE table     SET newvalue     WHERE criteria;
    Un update de EnAttente avec un where sur le numero du cheque encaissé
    voir:UPDATE Statement (Microsoft Access SQL)
    https://msdn.microsoft.com/en-us/lib...ffice.12).aspx
    avec un exemple en vb
    Bonjour Michel,

    je te remercie pour ton aide.

    Alors voici le code que j'ai préparé avec votre suggestion :
    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
    Option Compare Database
     
    Sub UpdateX()
     
        Dim dbs As Database
        Dim qdf As QueryDef
     
     
        Set dbs = OpenDatabase("Chèque non encaissé")
     
        ' Le changement se fait au niveau de la colonne en attente dans la table Mouvement
        'On relie le numéro de chèque de la table chèque avec la table mouvement
         'Le changement s'effectue à condition que la case cheque encaisse soit coche'
        dbs.Execute "UPDATE Mouvements " _
            & "SET EnAttente = No " _
            & "WHERE Cheques.NumChq = Mouvements.NumChq;" _
            & "Cheques.ChqEncaisse = Yes; " _
     
        dbs.Close
     
    End Sub
    Pourriez-vous me dire si le codage est bon s'il vous plaît ?

    Encore merci pour votre aide.

    Bien cordialement,
    Benjamin.

  4. #4
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    A priori, cela me semble correct; pour tester faire une copie des tables et essayer

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Michel Voir le message
    A priori, cela me semble correct; pour tester faire une copie des tables et essayer
    Bonjour Michel,

    j'espère que vous allez bien.

    Malheureusement j'ai essayé le code, et j'ai un message d'erreur lorsque je coche la case chèque encaissé, la première ligne du code est surligné en jaune.

    Ci dessous le message d'erreur :
    Nom : Capture d'erreur.PNG
Affichages : 428
Taille : 45,7 Ko

    J'ai inséré le code dans la propriété de la case "ChqEncaisse" lors d'un click, ci-dessous la capture d'écran de la propriété :
    Nom : Propriété chéque encaissé.PNG
Affichages : 337
Taille : 10,3 Ko

    Merci pour votre aide.

    Bien cordialement,
    Benjamin.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Tu as inclu le code dans une autre procédure.
    Ton code devrait ressembler à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub ChgEncaisse_Cilck()
        call updateX 'Le call est optionnel mais j'aime bien
    end sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public sub UpdateX()
      'ici le code de updateX
    end sub
    updateX pourrait être dans un autre module éventuellement.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut
    Bonjour marrot,

    merci pour les explications.

    J'en déduis que le code private sub se place dans la propriété de la casse chèque encaissé de mon formulaire ou de ma table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub ChgEncaisse_Cilck()
        call updateX 'Le call est optionnel mais j'aime bien
    end sub

    Mais par contre, le code public sub, je dois le placer où ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public sub UpdateX()
      'ici le code de updateX
    end sub
    Encore merci pour votre aide.

    Bien cordialement,
    Benjamin.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Par exemple en dessous du End Sub de ChgEncaisse_Cilck ou alors carrement dans un module à part.

    Si tu ne t'en sers que dans le formulaire qui contient ChgEncaisse, je te reccomande de le mettre après le end sub.
    Si tu t'es sers dans plus d'un endrois, alors il faut le mettre dans un module.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Par exemple en dessous du End Sub de ChgEncaisse_Cilck ou alors carrement dans un module à part.

    Si tu ne t'en sers que dans le formulaire qui contient ChgEncaisse, je te reccomande de le mettre après le end sub.
    Si tu t'es sers dans plus d'un endrois, alors il faut le mettre dans un module.

    A+
    Du coup par précaution, j'ai mis le code dans un module nouveau.

    Cependant, j'ai un problème d'exécution du code, qui provient sur le nom de mon formulaire.

    Je mets ci-dessous le code du module :
    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
    Option Compare Database
     
    Public Sub UpdateX()
     
        Dim dbs As Database
        Dim qdf As QueryDef
     
     
        Set dbs = OpenDatabase("Chèque non encaissé")
     
        ' Le changement se fait au niveau de la colonne en attente dans la table Mouvement
        'On relie le numéro de chèque de la table chèque avec la table mouvement
         'Le changement s'effectue à condition que la case cheque encaisse soit coche'
        dbs.Execute "UPDATE Mouvements " _
            & "SET EnAttente = No " _
            & "WHERE Cheques.NumChq = Mouvements.NumChq;" _
            & "Cheques.ChqEncaisse = Yes; " _
     
        dbs.Close
     
    End Sub
    De plus les différents messages d'erreurs :
    - le message d'erreur :
    Nom : Message VBA.PNG
Affichages : 376
Taille : 5,1 Ko

    - le soulignement de l'erreur :
    Nom : Surlignement du message d'erreur.PNG
Affichages : 426
Taille : 28,9 Ko

    Serais-je moi qui aurais commis une erreur sur le champ indiqué ?

    Encore merci pour votre aide.

    Bien cordialement,
    Benjamin.

  10. #10
    Membre expérimenté

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set dbs = OpenDatabase("Chèque non encaissé")
    C'est une table pas une base

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Michel Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set dbs = OpenDatabase("Chèque non encaissé")
    C'est une table pas une base
    Je ne sais pas s'il faut utiliser OpenTable ou alors OpenForms, donc j'ai opté pour la deuxième comme ci-dessous :
    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
    ublic Sub UpdateX()
     
        Dim dbs As DoCmd
        Dim qdf As QueryDef
     
     
        Set dbs = DoCmd.OpenForm("Cheques")
     
        ' Le changement se fait au niveau de la colonne en attente dans la table Mouvement
        'On relie le numéro de chèque de la table chèque avec la table mouvement
         'Le changement s'effectue à condition que la case cheque encaisse soit coche'
        dbs.Execute "UPDATE Mouvements " _
            & "SET EnAttente = No " _
            & "WHERE Cheques.NumChq = Mouvements.NumChq;" _
            & "Cheques.ChqEncaisse = Yes; " _
     
        dbs.Close
     
    End Sub
    Mais que ceci soit la première proposition ou la deuxième, j'ai un problème d'exécution au sein de mon code d'après le message d'erreur.
    Pourriez-vous m'aider s'il vous plaît.

    Bien cordialement,
    Benjamin.

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Bonsoir,
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #13
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Comme ta base est la base courante :

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  14. #14
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut
    Bonsoir,

    je vous remercie pour l'astuce au niveau du code, je ne connaissais pas.

    Bon j'ai essayé est malheureusement ma requête ne fonctionne pas, c'est-à-dire que lorsque je clique sur chèque encaissé, mes lignes enregistrement restent en attentes au lieu d'être décochées..

    Donc j'ai effectué ma requête via le générateur afin de m'assurer qu'elle fonctionne. Et elle fonctionne lorsque je mets le chèque en tant que encaissé, mes mouvements en attentes disparaissent.
    Cependant le code incorporé m'indique plusieurs messages d'erreur de compilation..

    Le code est le suivant :
    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
    Public Sub UpdateX()
     
        'Déclaration des variables
        Dim Db As DAO.Database
        Dim qdf As QueryDef
     
        ' excecution du code
        Set Db = CurrentDb
     
        ' Le changement se fait au niveau de la colonne en attente dans la table Mouvement
        'On relie le numéro de chèque de la table chèque avec la table mouvement
         'Le changement s'effectue à condition que la case cheque encaisse soit coche'
        Db.Execute ("Update Cheques _
            INNER JOIN (Mouvements) ON (Cheques.NumChq) = (Mouvements.NumChq)" &
            " SET ((Mouvements.EnAttente) =  No ")  &
            " WHERE (((Cheques.ChqEncaisse)=Yes)) ;
     
     
     
        MsgBox "Ajout effectué avec succès."
     
        dbs.Close
     
    End Sub
    Encore merci aux gens qui m'aide une nouvelle fois.
    Ceci n'est pas facile quand on ne connait rien au VBA..

    Bien cordialement,
    Benjamin.

  15. #15
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 637
    Points : 14 611
    Points
    14 611
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Db.Execute ("Update Cheques INNER JOIN (Mouvements) ON (Cheques.NumChq)=(Mouvements.NumChq) SET Mouvements.EnAttente=No WHERE Cheques.ChqEncaisse=Yes;")
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  16. #16
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Db.Execute ("Update Cheques INNER JOIN (Mouvements) ON (Cheques.NumChq)=(Mouvements.NumChq) SET Mouvements.EnAttente=No WHERE Cheques.ChqEncaisse=Yes;")
    Merci à vous, comment fonctionne les parenthèses et guillemets dans un code VBA s'il vous plaît ?

    Par contre, désormais j'ai un message d'erreur dans la case de propriété :
    - Message d'erreur :
    Nom : Message d'erreur.JPG
Affichages : 343
Taille : 17,6 Ko

    - Soulignement en jaune dans le code :
    Nom : Erreur click.JPG
Affichages : 388
Taille : 23,7 Ko

    Et si j’enlève le X à Update pour qu'il soit identique à celui dans le module, j'ai un autre message d'erreur me disant :
    " Erreur de compilation. Sub ou Function non définie."

    Pourriez-vous me dire pourquoi cette erreur désormais et pour quelle raison s'il vous plaît.

    Encore merci pour votre temps, et votre patience.

    Bien cordialement,
    Benjamin.

  17. #17
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je ne sais pas si c'est une erreur lors du post mais tu as oublié le p de public dans ublic Sub UpdateX().

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  18. #18
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Je ne sais pas si c'est une erreur lors du post mais tu as oublié le p de public dans ublic Sub UpdateX().

    A+
    Bonjour marot,

    surement une erreur de frappe, car les codes semble être bon.

    Code de la propriété (Erreur de compilation. Nom ambigu détecté : UpdateX) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Sub ChqEncaisse_Click()
     
        Call UpdateX
     
    End Sub

    Code intégré dans le module :
    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
    Public Sub UpdateX()
     
        'Déclaration des variables
        Dim Db As DAO.Database
        Dim qdf As QueryDef
     
        ' excecution du code
        Set Db = CurrentDb
     
        ' Le changement se fait au niveau de la colonne en attente dans la table Mouvement
        'On relie le numéro de chèque de la table chèque avec la table mouvement
         'Le changement s'effectue à condition que la case cheque encaisse soit coche'
        Db.Execute ("Update Cheques INNER JOIN (Mouvements) ON (Cheques.NumChq)=(Mouvements.NumChq)" _
                    & " SET Mouvements.EnAttente=No " _
                    & " WHERE Cheques.ChqEncaisse=Yes;")
     
     
        MsgBox "Ajout effectué avec succès."
     
        dbs.Close
     
    End Sub
    Encore merci de votre aide une nouvelle fois.

    Bonne journée à vous.

    Bien cordialement,
    Benjamin.

  19. #19
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Nom ambigu détecté : UpdateX
    La réponse au problème est là.
    Tu as définis 2 (ou plus) procédures qui s'appellent UpdateX et Access ne sait pas laquelle choisir.
    Soit c'est une erreur et il faut en supprimer une.
    Soit si l'une est utilisée dans le même module tu peux la définir private et non public.
    Soit tu peux prefixer son nom par le nom du module (ex : mdlMonModule.UpdateX).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  20. #20
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.



    La réponse au problème est là.
    Tu as définis 2 (ou plus) procédures qui s'appellent UpdateX et Access ne sait pas laquelle choisir.
    Soit c'est une erreur et il faut en supprimer une.
    Soit si l'une est utilisée dans le même module tu peux la définir private et non public.
    Soit tu peux prefixer son nom par le nom du module (ex : mdlMonModule.UpdateX).

    A+
    Bonjour marot,

    Effectivement j'avais déjà un Update utilisé pour autre chose donc j'ai suivi ton conseil, je l'ai renommée.
    Le code fonctionne correctement après un essai.

    Existe-t-il une solution pour qu'il me demande de valider ou d'annuler l'opération d'encaissement du chèque, pour sécuriser la manipulation en cas d'erreur svp ?

    Merci pour vos aides sur mes différentes questions.

    Bonne journée à vous.

    Bien cordialement,
    Benjamin.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Demande d'aide pour la création d'une requête SQL
    Par defcom60 dans le forum Langage SQL
    Réponses: 14
    Dernier message: 02/11/2015, 20h21
  2. demande d'aide pour la création d'une BDD
    Par RasWisdom dans le forum Débuter
    Réponses: 2
    Dernier message: 16/04/2013, 11h49
  3. Réponses: 4
    Dernier message: 03/06/2012, 08h08
  4. demande d'aide pour la création d'un driver
    Par thor76160 dans le forum C#
    Réponses: 3
    Dernier message: 20/12/2009, 21h20
  5. Réponses: 2
    Dernier message: 29/11/2006, 22h52

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