VBA probleme avec insert into

Bonjour,

Je voudrais concatener via le VBA les choix faits dans une zone a choix multiples, j'ai bien sur fait maintes essai ..
je ne sais pas trop si mon problème viens de ma concatenation ou de l'insert into , peut etre les 2 me direz vous ..
Income_gen est le champs de la liste déroulante, et le champs ou l'enregistrement doit se faire dans ma table tbl_lc_lu
voici mon code

Private Sub Income_gen_current()
Dim varI As Variant
Dim Selec As String
Dim strSQL As String
Dim MyDB As DAO.Database

Selec = ""
If Me.Income_gen.ItemsSelected.Count <> 0 Then
For Each varI In Me!Income_gen.ItemsSelected
Selec = "Selec & Me![Income_gen].ItemData(varI)"
Next varI
End If
MsgBox Selec

Set MyDB = CurrentDb
strSQL = "INSERT INTO [Tbl_lc_lu] [Income_gen] VALUES (""&Selec& "")"
CurrentDb.Execute Selec
MsgBox Selec
End Sub

merci de m'aider s'il vous plait je patine pas mal.

10 réponses

  • Votes
  • Date
  • Date décroissante
  1. Regarde ici

    Selec = "Selec & Me![Income_gen].ItemData(varI)"

    Je pense qu'il faudrait enlever les " " non ?

    Selec = Selec & Me![Income_gen].ItemData(varI)

    Cdlt
    1. De plus n'hésite pas a faire un message box sur ton strSQL pour voir et dans

      VALUES (""&Selec& "")" faut mettre des espaces

      strSQL = "INSERT INTO Tbl_lc_lu (Income_gen) VALUES ("" & Selec & "")"

      Je ne suis pas sur, ça fait un moment que je n'ai pas touché au VBA et je ne suis pas un pro :p

      Cdlt.
      1. merci mais cela ne résout pas le problème, j'ai un message d'erreur qui s'affiche :
        le moteur de base de données microsoft office access ne peut pas trouver la table ou la requête source "".
        assurez-vous qu'elle existe et qu'elle est correctement orthographiée .
        ( erreur d'execution '3078'
        1. SQL = "INSERT INTO TABLE1(champ) VALUES ("" & Selec & "")"
          CurrentDb.Execute SQL

          Tu remplaces TABLE1 par le nom de ta table.
          Tu remplaces champ par le champ de ta table.

          Je viens de faire le teste est ça fonctionne chez moi !

          Fait quand meme un msgbox strSQL.

          Cdlt.
          1. Voilà tu n'as plus qu'a faire un copier coller :p

            If Me.Income_gen.ItemsSelected.Count <> 0 Then
                For Each varI In Me!Income_gen.ItemsSelected
                    If selec = "" Then
                        selec = Me!Income_gen.ItemData(varI)
                    Else
                        selec = selec & "," & Me!Income_gen.ItemData(varI)
                    End If
                Next varI
            End If
            
            strSQL = "INSERT INTO tbl_lc_lu(Income_gen) VALUES ('" & selec & "')"
            CurrentDb.Execute strSQL


            Cordialement.
            1. sa marche ! merci beaucoup nirG95, j'avais fais une erreur bête (je m'y attendai un peu ! )
              j'avais mis " "&selec&" " au lieu de ' "& selec& " '

              encore merci !
              1. hum voila une chose a laquelle je n'ai pas pense, cela n'enregistre pas les données dans la même ligne que le reste des champs du formulaire ce qui est assez gênant,
                vu l'organisation de mon code je ne devrais pourtant pas en être étonné, j'ai change la structure pour mettre cette commende dans le bouton de sauvegarde, mais voila du coup j'ai la commande de sauvegarde puis l'enregistrement de ce champs..

                DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
                Me.AllowEdits = True

                Dim varI As Variant
                Dim Selec As String
                Dim strSQL As String
                Dim MyDB As DAO.Database

                If Me.Income_gen.ItemsSelected.Count <> 0 Then
                a = Me.No_Id
                For Each varI In Me!Income_gen.ItemsSelected
                Selec = Selec & Me![Income_gen].ItemData(varI) & ";"
                Next varI
                End If
                MsgBox Selec

                Set MyDB = CurrentDb
                SQL = "INSERT INTO tbl_lc_lu (Income_gen,No_Id) VALUES ('" & Selec & "')"
                CurrentDb.Execute SQL
                MsgBox Selec
                MsgBox strSQL

                une idée pour que tous s'enregistre en même temps ?
                1. Bonjour Abaline,

                  Je ne comprend pas trop ta question ! Tu as d'autres champs sur ton formulaire ? Si oui, il faut mettre tout les champs dans ton insert into !

                  Je suppose que No_Id est un champs de ta table tbl_lc_lu !

                  SQL = "INSERT INTO tbl_lc_lu(Income_gen,No_Id) VALUES ('" & Selec & "','" & Me.No_ld & "')"

                  Je ne vois pas a quoi te sert la variable a !

                  Cdlt.
                  1. effectivement il y a d'autres champs, je redoutai cette réponse ... les champs sont nombreux .. j'espérais que quelqu'un aurait peut-être eu une autre idée ^^
                    allez je m'y atèle et j'arrête de te harceler !
                    encore merci de tes réponses et de ta vitesse de réaction !!