Erreur lors d'un clic bouton crée dans excel

Résolu/Fermé
starnours - 10 avril 2008 à 16:15
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 11 avril 2008 à 15:15
Bonjour,

J'ai un fichier excel dans lequel j'ai implémenté un bouton.

J'ai bien sur affecté du code à ce bouton...
J'ai testé avec un simple affichage d'une massagebox (dans le code du bouton) et ca marche
mais avec ca en plus dans le code :
"dim base as database" (je veux relier ma base de donnée access),
excel me sort l'erreur suivante :

"Erreur de compilation dans le module caché : "nom_de_mon_module_appelé"

Je comprends pas! D'où ça pourrait venir
A voir également:

6 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
10 avril 2008 à 16:20
bonjour,

As-tu coché dans Outils -> références -> Microsoft DAO x.x Object library ou quelque chose comme ça ?

;o)

polux
0
Non, je n'ai rien coché. Je n'arrive pas à trouver où l'on peut trouver ça... :-(
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 avril 2008 à 10:33
Bonjour à tous

ta déclaration
dim base as database est fausse:
database n'existe pas comme type de données sauf si database est (et encore que !!!...) lié à un module de classe que vba déclare caché puisqu'il ne le voit pas (il n'existe pas)...

maintenant, sans autres explications, dificille de t'aider

Michel
0
C'est bon j'ai trouvé! Merci encore Polux31, tu es d'une efficacité consternante!
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
11 avril 2008 à 11:39
de rien starnours, c'est toujours avec plaisir que j'essaie d'aider ... ... "efficacité consternante" ...mdrrr ... ce n'est que de la pratique dans le cadre de mon boulot, rien d'extraordinaire ... mais t'inkiète j'en apprends aussi tous les jours ...

bon courage pour la suite

;o)

polux
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
starnours Messages postés 48 Date d'inscription vendredi 26 octobre 2007 Statut Membre Dernière intervention 27 juillet 2009 4
11 avril 2008 à 14:36
merci.

En parlant de continuation, celle de mes soucis persiste :

Je fais un lien à partir de mon fichier excel vers une table access (via un bouton sur mon fichier excel) et j'ai l'impression qu'excel n'aime guère cette ligne :
DoCmd.RunSQL ("INSERT INTO [TEST_INFO_FOU] (id_assoc) VALUES ('3');")

Voici mon code :

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

Dim base As Database
Dim num_assoc As Integer
Dim requete As String
Dim rs As DAO.Recordset
Dim Nbre_ligne_requete As Integer
Dim cpt As Integer
cpt = 0


Set ws = DBEngine.WorkSpaces(0)
Set base = ws.OpenDatabase("C:\Documents and Settings\a069863\Desktop\SEDE.mdb", False, False, "MS Access;PWD=tilia")

num_assoc = ActiveWorkbook.ActiveSheet.Cells(101, 3).Value

requete = " SELECT cNomFou,cPays,id_AssocLignePrix FROM [Association Prix Ligne] WHERE [id_ligne_associée] = " & num_assoc & " ORDER BY id_AssocLignePrix;"

Set rs = base.OpenRecordset(requete, dbOpenSnapshot)



If rs.RecordCount > 0 Then
rs.MoveLast
Nbre_ligne_requete = rs.RecordCount
rs.MoveFirst
End If

Do While (cpt < Nbre_ligne_requete)
MsgBox rs(0) & " | " & rs(1) & " | " & rs(2)


DoCmd.RunSQL ("INSERT INTO [TEST_INFO_FOU] (id_assoc) VALUES ('3');")
'=>Erreur dans excel quand je rajoute cette ligne: erreur d'exectution 424 blablabla...
rs.MoveNext
cpt = cpt + 1
Loop

Set rs = Nothing

base.Close
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
11 avril 2008 à 15:15
re,

DoCmd.RunSQL n'est pas une instruction VBA Excel mais VBA Access. Excel ne reconnait pas cette instruction.
Il faut faire comme pour ta requête SELECT ... et passer par un recordset comme celui que tu as mis : Set rs = base.OpenRecordset(requete, dbOpenSnapshot).
0