|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
Bonjour à tous,
J'ai lu le tuto de connexion entre access et excel et j'en ai repris le code. J'ai une base access et j'ai un fichier excel dans lequel je veux récupérer des résultats à partir d'une requete dans le code vba. Il y a quelques mois, j'étais sous 2003, et ça fonctionnait (pas tout mon code lol, mais la connexion se faisait et je récupérais des chiffres dans excel. Aujourd'hui, je suis sous 2010, j'ai touché à mon code et je ne récupère plus rien. Pourtant, le verrou de la base access apparait bien, ce qui prouve qu'il y a une connexion entre excel et access. Le code, avec l'endroit où ça s'arrete (sans message d'erreur) : Code :
Merci de votre aide |
||
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 920 ![]() |
Bonjour,
En première lecture je me demande ou est instancié la variable cnx et à quoi sert la variable rec. Peux tu m'éclairer ?
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
ouh là...
alors le vba je l'utilise en prenant des bouts de code à droite à gauche. dans le cas présent également. j'ai pris le tuto de caféine ici et j'ai tout coper coller, sans forcément comprendre cnx est déclarée public en haut du code et défini dans auto_open du tutoriel (moi j'ai mis une sub appelée CheckDB mais tout le reste est pareil). et rec, je me suis posé la meme question que toi... Code complet: Code :
|
||
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 920 ![]() |
Dans ton code, je ne retrouve pas l'appel à la procédure CheckDB.
Si tu ne l'appelles pas, ta variable cnx ne fonctionnera pas Code :
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|||
|
|
00
|
|
|
#5 | ||
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
C'est de ma faute, j'ai oublié de mettre une partie du code.
En fait, je me rappelle plus pourquoi j'ai fait ça, mais la sub auto open du tuto, je l'ai divisée en 2 parties: 1. dans ThisWorkbook, le code Code :
En écrivant ce message, je me rends compte que cnx est déclarée Public dans ThisWorkbook et dans Module1, il doit surement y en avoir un qui sert à rien... |
||
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 920 ![]() |
Citation:
Personnellement, je supprimerais celui de thisworkbook
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
||
|
|
00
|
|
|
#7 | ||
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
J'ai donc supprimé celui de ThisWorkbook. Alors, je viens de voir un truc suite à cette modif. Quand je mets un breakpoint sur la fonction xretrieve:
1. je vais dans une cellule (exemple A1) comportant la fonction xretrieve 2. j'entre dans la formule et je tape entrée 3. le debuggeur se met en route 4. la cellule A1 affiche 0 (ce n'est pas le bon chiffre) 4. qd j'arrive à rst.Open strSQL, cnx alors un F8 entraine le déplacement du curseur de A1 vers A2. Mais A1 m'affiche #VALEUR. Et un F8 supplémentaire n'avance pas dans le code donc a priori, on ne rentre jamais dans la partie Code :
|
||
|
|
00
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 920 ![]() |
Quand tu dis que la fonction retourne 0 c'est qu'elle est passé par la gestion d'erreur?
la ligne ci-dessous plantera si le champ est NULL Autre chose affiche la requête dans une msgbox avant son exécution. Cela te permettra de voir s'il y a une anomalie, voir de la tester directement dans access afin de vérifier son retour
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
Ah oui dsl, encore
Je me suis imprimée le tuto sur les recordsets car je ne maitrise pas du tout le sujet, p'tet que ça me permettra d'y voir plus clair. Si vous avez une idée, n'hésitez pas à m'en faire part. Merci |
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé Sénior
![]() Jérôme FONTAINEContrôleur de Gestion Inscription : juin 2006 Messages : 3 920 ![]() |
Tu trouveras ci dessous un exemple de fonction que j'utilise.
Tu noteras l'utilisation d'un ODBC pour la connexion à la base (Je trouve cela plus simple si cette base est utilisée dans divers fichiers) Code :
__________________
Jérôme Citation:
nous encouragera.Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
|
|||
|
|
00
|
|
|
#11 | |||
|
Membre habitué
![]() Inscription : janvier 2005 Messages : 527 ![]() |
Salut,
Je ne réponds que maintenant car j'ai testé ton code mais je n'ai pas réussi (rq: je n'y connais rien aux connexions mais j'ai eu un message d'erreur. vu que la base n'est utilisée que dans un seul fichier, j'ai gardé le type de connexion précédent). Mais ton code m'a permis de voir un truc: je me demande si ce n'est pas lié au mot de passe que j'ai mis sur la base. Le truc, c'est que j'ai un peu foiré quand j'ai suivi le tuto de sécurité (j'ai d'ailleurs posté ici ). Quand j'utilise le raccourci, on me demande le mot de passe. Quand j'utilise l'accès direct, on ne me demande pas le mot de passe... Dans le fichier excel, j'ai mis le chemin de l'accès direct donc je ne sais pas si le mot de passe est utile. Vu que le verrou de la base apparait, c'est que la connexion s'est faite, non ? Quoi qu'il en soit, j'ai testé en mettant le mot de passe à vide dans le code et en regroupant tout en une seule partie, mais je ne suis pas sure de le faire correctement. Voici mon code: Code :
Citation:
Je précise que comme avant, en mode pas à pas, l'execution s'arrete à rst.Open strSQL et le verrou de la base disparait. Merci de votre aide |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com