Appel d'une procédure dans Access avec plus de 30 arguments
Bonjour,
Je suis sur un projet alliant le VBA dans Excel et Access. Je ne sais pas très bien s'il faut que je commence cette discussion sur le forum Excel ou le forum Access :?
Contexte:
J'ai un fichier Excel qui est ma base de donnée initiale. A côté, j'ai un fichier Access copie de ma BDD Excel. Je dois créer un programme qui permette de mettre à jour le fichier Access quand le fichier Excel est modifié. Je précise que je suis obligée de partir depuis mon fichier Excel pour mettre à jour le fichier Access (je ne peux PAS faire de mon fichier Access le "masterfile"), ce sont les contraintes du projet qui l'impose.
Mon problème se situe dans le cas où j'ajoute une ligne au fichier Excel.
Voilà ce que j'ai fait :
J'utilise ici un exemple pour illustrer. La table est constituée des champs suivant : id | Nom | Prénom | Age
- Dans Access: j'ai une fonction NewEntry qui ajoute un enregistrement à ma table. Je l'ai testé directement sur Access, ça marche.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Function newEntry(newId As String, newNom As String, newPrenom As String, newAge As String)
Dim db As Database
Set db = CurrentDb
Dim rs As Recordset
Set rs = db.OpenRecordset("Table1")
rs.AddNew
rs!id = newId
rs!nom = newNom
rs!prenom = newPrenom
rs!age = newAge
rs.Update
rs.Bookmark = rs.LastModified
End Function |
- Dans Excel: j'ai une procédure qui appelle cette dernière fonction:
Code:
1 2 3 4 5 6 7 8 9
| Sub test()
'Run function from Access to add entry to Access-table
Dim acApp As New Access.Application
Set acApp = New Access.Application
acApp.OpenCurrentDatabase ("H:\Documents\09. Ink jet\Essai.accdb")
acApp.Run "NewEntry", 7, "Hugo", "Victor", 50
acApp.Quit
Set acApp = Nothing
End Sub |
Si vous testez cela, vous verrez que ça marche. Mon problème, alors?
Problème:
Ceci est un exemple, dans le véritable fichier que j'utilise, j'ai exactement le même type d'architecture, seulement ma table compte 58 champs.
Lorsque je fait un teste de la fonction sur Access, pas de problème, ça marche. Cependant, lorsque je veux lancer ma procédure sur Excel, j'obtiens le message d'erreur suivant: Appel de fonction illégal.
Je pensais que ça viendrait peut-être du fait qu'il y a trop d'arguments dans ma fonction (j'ai cru comprendre qu'on ne pouvait avoir que jusqu'à 30 arguments). Du coup, j'ai changé mon code, même procedures mais en prenant comme argument un Array. Cependant, j'ai le même message d'erreur :(
Question:
Pensez-vous que ça vient, en effet, du nombre d'arguments? Les Array sont-ils aussi limités en nombre d'éléments? Comment puis-je contourner la limite de 30 arguments?
Merci!