424-Objet requis : INSERT/SELECT SQL

Bonjour a toutes et a tous,

J'ai l'erreur "424-Objet requis" qui ressort lors de l'exécution de ma fonction VBA.

Qui est:
-----------------------------------------------------------------------
Public Function MAJ_SCAT_Avoirs()

    Dim rst As DAO.Recordset
    Dim Cible As String
    Dim Origine As String
    Dim Val As Integer
    
    
    sql = "SELECT NCMD FROM TD_MargeOnline WHERE TCMD=3 OR TCMD=4 ;"
    Set rst = db.OpenRecordset(sql, dbOpenSnapshot)
        
    While Not rst.EOF And rst.BOF
        Cible = rst!NCMD
           
        sql = "SELECT NFAR FROM TD_Avoirs WHERE NCMD=" & Cible & ";"
        Set rst = db.OpenRecordset(sql, dbOpenSnapshot)
            Origine = rst!NFAR
        
        Val = DLookup("[S-CAT]", "TD_MargeOnline", "[NCMD]='" & Origine & "'")
        
        db.Execute "UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & Val & "WHERE TD_MargeOnline.NCMD=" & Cible & ";"
        
        'passage a la ligne suivante
        rst.MoveNext
    Wend

End Function

-------------------------------------------------------------

Je me remet au savoir infini des utilisateur de ce forum...
Merci a vous par avance a bientôt.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.
.

5 réponses

  1. Contributeur
    Bonjour
    sql = "SELECT NFAR FROM TD_Avoirs WHERE NCMD=" & Cible & ";" 
    

    Cible est du texte donc syntaxe comme tu l'as écrit + plus bas

    je ne connais pas ce que tu veux faire mais tu as des relations entre 2 tables margeonline et avoirs: l'emploi des jointures ne pourraient elles pas être utilisées dans ton cas ?

    **** Attention ****
    Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
    Explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    .

    Michel
    0
    1. Bonjour,

      Manque un espace devant le WHERE TD_MargeOnline

      et votre erreur est sur quelle ligne (si ligne surlignee)
      0
      1. J'ai ajouter l'espace devant le where.
        Lors du plantage il ne propose pas d'accéder au debuggeur :/
        L'erreur vient forcement de cette fonction étant donné qu'il n'est survenu qu'apres son implémentation
        0
    2. --------------------------------------------------------------------------
      Public Function MAJ_SCAT_Avoirs()
      
          Dim rst As DAO.Recordset
          Dim Cible As String
          Dim Origine As String
          Dim valeur As Integer
          Dim sql As String
          
          
          sql = "SELECT NCMD FROM TD_MargeOnline WHERE TCMD=3 OR TCMD=4 ;"
          Set rst = db.OpenRecordset(sql, dbOpenSnapshot)
              
          While Not rst.EOF And rst.BOF
              Cible = rst!NCMD
                 
              sql = "SELECT NFAR FROM TD_Avoirs WHERE NCMD=" & Cible & ";"
              Set rst = db.OpenRecordset(sql, dbOpenSnapshot)
                  Origine = rst!NFAR
              
              valeur = DLookup("[S-CAT]", "TD_MargeOnline", "[NCMD]='" & Origine & "'")
              
              db.Execute ("UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & valeur & "WHERE TD_MargeOnline.NCMD='" & Cible & "';")
              
              'passage a la ligne suivante
              rst.MoveNext
          Wend
      
      End Function
      

      ------------------------------------------------------------------------
      Voila la dernière version du code.
      Si quelqu'un voie la moindre erreur même un simple caractère un espace ou quoi que ce soit , qu'il me le signal.
      J'en peut plu de ce problème :'( la solution doit être toute simple mais je ne la vois pas.
      Je désespère...

      Je vous remercie d'avance

      EDIT : Ajout des balises de code (la coloration syntaxique).
      Explications disponibles ici :
      https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

      Merci d'y penser dans tes prochains messages.
      .
      0
      1. Contributeur
        bonjour
        syntaxe SQl variable de type string
        '" &cible & "' 
        soit apostrophe guillemets variable guillemets apostrophe
        ou
        ["cible"]
        --

        a voir
        en VBA Val est un mot réservé
        et si la valeur c'est un nombre tu peux marqué directement
        S-CAT =Valeur suivi d'un espace avant where

        Michel
        0
        1. J'ai revérifier la syntaxe des mes requêtes par rapport a ton conseil mais ça na rien changer toujours la même erreur :/
          0
      2. Bonjour,

        Je crois que tu as oublié de déclarer sql en tant que variable
        0
        1. Voila le code après modif :
          ---------------------------------------------------------------------------------
          Public Function MAJ_SCAT_Avoirs()
          
              Dim rst As DAO.Recordset
              Dim Cible As String
              Dim Origine As String
              Dim Val As Integer
              Dim sql As String
              
              
              sql = "SELECT NCMD FROM TD_MargeOnline WHERE TCMD=3 OR TCMD=4 ;"
              Set rst = db.OpenRecordset(sql, dbOpenSnapshot)
                  
              While Not rst.EOF And rst.BOF
                  Cible = rst!NCMD
                     
                  sql = "SELECT NFAR FROM TD_Avoirs WHERE NCMD=" & Cible & ";"
                  Set rst = db.OpenRecordset(sql, dbOpenSnapshot)
                      Origine = rst!NFAR
                  
                  Val = DLookup("[S-CAT]", "TD_MargeOnline", "[NCMD]='" & Origine & "'")
                  
                  db.Execute "UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & Val & "WHERE TD_MargeOnline.NCMD=" & Cible & ";"
                  
                  'passage a la ligne suivante
                  rst.MoveNext
              Wend
          
          End Function
          

          -----------------------------------------------------------------------------------------
          L'erreur ressort toujours :'(

          EDIT : Ajout des balises de code (la coloration syntaxique).
          Explications disponibles ici :
          https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

          Merci d'y penser dans tes prochains messages.
          .
          0
        2. db.Execute "UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & Val & "WHERE TD_MargeOnline.NCMD=" & Cible & ";"

          c'est pas plutôt :
          db.Execute("UPDATE TD_MargeOnline SET TD_MargeOnline.S-CAT =" & Val & "WHERE TD_MargeOnline.NCMD=" & Cible & ";");
          0
        3. ça ne fonctionne pas :'(
          0
        4. sans le point virgule à la fin de ma phrase my bad je suis en plein java la lol. Toujours la même erreur ?
          0
        5. j'avais enlever le ";" et ça n'a pas fonctionner
          je ne comprend pas le sens de l'erreur méme dans la doc de microsoft ce n'est pas très clair
          0