Problèmes et questions

Bonjour tout le monde,

Je me permets de demander votre aide à ce forum qui à une très bonne réputation. Voila je suis actuellement étudiant en alternance en informatique et j'aurai quelques questions concernant le vba et les fichiers excel.

Mes problèmes :

Voila bientôt tous le système informatique va etre changé et je suis en train de tester les différentes macros car on va passer de word 2003 à word 2010 mais je rencontre quelques soucis.

Dans un soucis d'être un maximum efficasse j'ai créé mon propre fichier excel avec mes macros pour pouvoir la tester sous 2010 mais je rencontre des problèmes dans le code lui même, je m'explique : j'ai une base de donnée Access 2003 et j'aimerai faire quelques test dessus, j'arrive bien à selectionner(SELECT) les données de ma base de donnée mais cependant je n'arrive pas à faire de l'insertion avec INSERT j'ai toujours la même erreur.

Voici une partie de mon code :

Sub Bouton1_QuandClic()
Dim Connexion As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim CheminBase As String
Dim CompteChamps As Long
Dim ReqeteNbLigne As String
Dim Requete As String
Dim i, NombreLibreTable As Integer
Dim NomTable As String
Dim VariableNom, VariablePrenom, VariableAge As String

    ' Création du chemin où chercher la base de données
    CheminBase = ThisWorkbook.Path & "\" & "\base_de_donnees\base_de_test.mdb"
    ' Nom de la table principale
    NomTable = "Personne"

    Cells(8, 36).CurrentRegion.Clear

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''' NOM ''''''''''''''''''''''''''''''''''''''''''''''''''''
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    'Récupération des valeurs des différentes cel
     VariableNom = Range("B2").Value
     VariablePrenom = Range("C2").Value
     VariableAge = Range("D2").Value

    Connexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & CheminBase & ";"
    Requete = "INSERT INTO" &NomTable& "(Personne_nom)&_
                "(Personne_nom)"&_
                " VALUES("&VariableNom&")"&_

    ReqeteNbLigne = "SELECT COUNT(Personne_nom) FROM Personne"
    With Rs
        .CursorLocation = adUseClient
        .Open ReqeteNbLigne, Connexion, adOpenDynamic, adLockOptimistic

    End With

    NombreLibreTable = Rs(0).Value

    If NombreLibreTable < CalculerNombreLigneRemplis("D") Then
    Range("D2:D65536").Value = ""
    End If

    Set Rs = Nothing
End Sub

Public Function CalculerNombreLigneRemplis(ByVal LettreColonne As String) As Integer
    Dim nbcells As Integer

    If LettreColonne = "D" Then
    nbcells = Application.WorksheetFunction.CountA(Range("D2:D65536"))
    End If

    If LettreColonne = "E" Then
    nbcells = Application.WorksheetFunction.CountA(Range("E2:E65536"))
    End If

    If LettreColonne = "F" Then
    nbcells = Application.WorksheetFunction.CountA(Range("F2:F65536"))
    End If

    CalculerNombreLigneRemplis = nbcells
End Function

L'erreur ce passe sur cette ligne : Requete = "INSERT INTO" &NomTable& "(Personne_nom)&_

Le message affiché : Erreur de compilation: Erreur de syntaxe.

Encore merci à tout ceux qui vont m'aider et je vous souhaites une très bonne journée.

bonjour,

Ne faut -il pas un espace en le & et NomTable

& NomTable &

Bonjour merci de votre réponse, je viens d'essayer mais le problème persiste.

La meme chose ici peut etre

&VariableNom& remplacer par & VariableNom &

et je crois que dans cette instruction il y a 1 \ en trop

CheminBase = ThisWorkbook.Path & "\" & "\base_de_donnees\base_de_test.mdb"

J'ai déjà fait des select et tout marche bien il n'y a pas eut de soucis particulier mais c'est uniquement en faisant des insert que je n'y arriv pas.

J'ai même tenté ceci mais ça ne fonctionne pas mieux :

    Requete = "INSERT INTO "
    Requete = Requete + NomTable
    Requete = Requete + "(Personne_nom,Personne_prenom,Personne_age)"
    Requete = Requete + "VALUES("
    Requete = Requete + VariableNom
    Requete = Requete + VariablePrenom
    Requete = Requete + VariableAge
    Requete = Requete + ")"

    ReqeteNbLigne = "SELECT COUNT(Personne_nom) FROM Personne"
    With Rs
        .CursorLocation = adUseClient
        .Open Requete, Connexion, adOpenDynamic, adLockOptimistic
    End With
    Set Rs = Nothing

Il me met comme erreur :

erreur de syntaxe dans l'instruction INSERT INTO pourtant j'ai vérifié et tout est bon.

EDIT je viens de vérifier via un espion que la chaine final vaut : "INSERT INTO Personne(Personne_nom,Personne_prenom,Personne_age)VALUES()"

Elle n'a pas prit mes trois variables. Je ne comprends plus rien.

je ne me rappel plus la syntaxe SQL, mais il ne manque pas 1 ; à la fin de l'instruction???

ah ben non je viens de vérifier

J'ai trouvé le problème justement à l'instant. Si ça peut aider on ne sait jamais, je rechercher les lignes vides et donc je rentrais des valeurs nulles mais le soucis est que maintenant il me dit ceci :

Aucune valeur données pour un ou plusieurs des paramètres requis.

Voici la requête que j'envois :

INSERT INTO Personne(Personne_nom,Personne_prenom,Personne_age) VALUES(Neil,Jack,55);

(J'ai mit un ; mais sans j'ai exactement le même soucis)

J'ai trouvé la solution ce n'était que des bétises,voici le code de solution si ça peut aider :

Requete = "INSERT INTO "

Requete = Requete + NomTable

Requete = Requete + "(Personne_nom,Personne_prenom,Personne_age)"

Requete = Requete + " VALUES("

Requete = Requete + """"

Requete = Requete + VariableNomTemp

Requete = Requete + """"

Requete = Requete + ","

Requete = Requete + """"

Requete = Requete + VariablePrenomTemp

Requete = Requete + """"

Requete = Requete + ","

Requete = Requete + """"

Requete = Requete + VariableAgeTemp

Requete = Requete + """"

Requete = Requete + ");"

Mais j'ai un autre soucis lorsque je veux joindre mes quelques tables :

Requete = "SELECT Voiture_nom "

Requete = Requete + "FROM "

Requete = Requete + NomTable

Requete = Requete + " LEFT JOIN Lien "

Requete = Requete + "ON Personne.Personne_id = Lien.Lien_personne "

Requete = Requete + "LEFT JOIN Voiture "

Requete = Requete + "ON Voiture.Voiture_id = Lien.Lien_voiture "

Requete = Requete + "WHERE Personne.Personne_id = 1;"

Il me met :

Erreur de syntaxe (Opérateur absent) dans l'expression :

Personne.Personne_id = Lien.Lien_personne LEFT JOIN Voiture ON Voiture.Voiture_id = Lien.Lien_voiture WHERE Personne.Personne_id = 1;"

Rechercher des sujets similaires à "problemes questions"