VBA Probleme d'exécution - pas assez d'arguments

Bonjour tout le monde j’ai un probleme d’éxécution il me met trop peu de parametre 9 attendu mais je sais pas ou est le souci il me l’indique pas si quelqu’un peut m’aider je le remercie d’avacne

 
Private Sub Commande13_Click()
On Error GoTo Err_Commande13_Click

Set db = CurrentDb


Dim m As String
Dim a As String
Dim name As String

    m = Me!mois
    a = Me!année


DoCmd.Se
tWarnings False

'Affectation du lieu de récupération  des fichiers

Dim NomDir As String

NomDir = "D:\Eric\dossier_projets\TDB\PJPF\"

'On atteint le répertoire concerné où se trouvent les fichiers

ChDir (NomDir)

Dim XL As Excel.Application
Dim nomClasseur1 As String 
 
 
Set XL = CreateObject("Excel.Application" ) 
nomClasseur1 = "PJPF2007-" & a & m & ".xls" 
 
DoCmd.TransferSpreadsheet acImport, , "TableTest" & a & m, "D:\Eric\dossier_projets\TDB\PJPF\" & nomClasseur1, 0 
name = "TableTest" & a & m 
 
Dim dbCourante As DAO.Database 
 
'Définir la base de travail comme la base actuelle 
Set dbCourante = CurrentDb 
 
'Définir la requête 
Sql = " INSERT INTO TableTest ( année, OPPO, MPE, MPF, MRE, MRF, M__ ) SELECT '2005_T3', " & name & ".OPPO, " & name & ".MPE, " & name & ".MPF, " & name & ".MRE, " & name & ".MRF, " & name & ".M__ FROM " & name & " WHERE " & name & ".CBQD='total' And " & name & ".MOIS='total' And " & name & ".CMOP='total';" 
 
'Exécuter la requête 
dbCourante.Execute (Sql) 
 
Set dbCourante = Nothing 
 
     
Exit_Commande13_Click: 
    Exit Sub 
 
Err_Commande13_Click: 
    MsgBox Err.Description 
    Resume Exit_Commande13_Click 
End Sub


Bonjour,
pour trouver ton erreur, il faudrait supprimer le "on error" pour que tu sache sur quelle ligne tu plante (et éventuellement passer en mode debug) ou afficher ce no de ligne, ça doit être "erl".

Là, c’est un appel de fonction auquel il manque des arguments, comme il n’y en a pas beaucoup, ça doit être celle-là:DoCmd.TransferSpreadsheet

essaye de vérifier avec la doc les arguments à utiliser (moi je ne connais pas assez access).

Tu devrais préciser VBA + Access dans ton titre
Comme le dit deltree, inhibe temporairement ton on error pour voir d’où vient le pb.

Je ne pense pas que ce soit TransferSpreadsheet dans la mesure où presque tous ses arguments sont facultatifs.

Dans un premier temps, tu compiles ton programme (debug > compile) pour verifier qu’il n’y a pas d’erreur de syntaxe.
Ensuite, tu places un point d’arrêt (F9) sur la première ligne active de ta fonction (set db …) et tu lances ton programme.
Quand il va s’arrêter sur le break, tu avances ensuite ligne par ligne (F8) en visualisant les valeurs que prennent les variables en les survolant avec la souris.
Normalement, tu vas vite trouver la ligne fautive.
Après, il faudra trouver le pourquoi …

Meric donc pour la ligne c’est

dbCourante.Execute (Sql)

Donc, ce qui est intéressant, c’est de savoir la valeur exacte de la variable Sql au moment où tu tentes d’exécuter la requete.
Elle doit être un peu longue pour bien la visualiser dans la fenêtre espions, mais tu peux l’afficher avec
MsgBox "Sql a pour valeur : "+Sql
et la copier par ex dans notepad

Et après, tu vérifies si tes arguments sont cohérents

justement c’est fait c’est ue chose que j’avais faites auparavant mais j’ai trouvé la solution c’est un probleme de colonne il m’en manque une voila tout

Ok c’est résolu donc :wink:

petite remarque, c’est normal qu’il y a un accent à ton nom de colonne “année”?
c’est pas trop conseillé comme truc :slight_smile:

oui et non en fait la ligne etait la fusion de deux requêtes et je vois pas comment ajouter mon champs années en mettant la valeur moi meme
Sinon oui c’est normal pour année dans ma table fixe c’est comme ca et ca marche parfaitement