Bonjour,
Je me tourne vers vous parce que je suis tombé sur un colle (du moins pour moi).
Voila l'idée: j'ouvre une connexion sur ma base de données access, j'ouvre mon fichier excel contenant soit des nouvelles lignes, soit des lignes à mettre à jour, et je traite le bazar.
La macro que j'ai écrite fonctionne plutôt bien, sur 25 fichiers de >50k lignes, 23 fichier fonctionne correctement.
Par contre, sur 2 fichier, j'ai des lignes qui causent une erreur:
Ce problème apparait sur la ligne 20833, la ligne 20911, etc... pour vous dire que ça sort vraiment de nulle part. J'ai vérifié et revérifié les lignes en questions, elles fonctionne. J'ai copié collé la requête qui plante dans access, et ça me sort mon résultat comme il faut. j'ai essayé de mettre la ligne en question au début du fichier, et elle plante toujours.Erreur d’exécution '-2147467259 (80004005)':
Impossible d'ouvrir la base de données « ». Ce n'est peut être pas un base de données que votre application reconnait ou le fichier est peut être endommagé.
J'ai écrit un error handler qui check la description de l'erreur et fait "con.close... con.open" quand il trouve cette fameuse erreur... ça n'a rien résolu.
J'ai passé 2h30 sur google, et pas moyen de trouver quoi que ce soit qui peut m'aider...
Le code en lui même doit être juste, et honnêtement il est très compliqué donc je vous épargne d'avoir à le lire; voici ce que j'ai pour la connexion:
Un exemple de requete qui plante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CHEM_DB = main.Range("B1") CHEM_SRC = main.Range("B2") 'ouvrir la connexion con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & CHEM_DB & "; Persist Security Info=False;" con.Open
et une qui marche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part update `VIQMEL` set `VIQMEL`.`Fact date`='01/07/2011' where `VIQMEL`.`Notification`=306585712;
C'est l'erreur que je ne comprends pas, on dirait que la connexion cafouille, mais pourquoi sur ces lignes, et pourquoi je ne peut pas la rétablir?
Code : Sélectionner tout - Visualiser dans une fenêtre à part update `VIQMEL` set `VIQMEL`.`Fact date`='INCORRECT' where `VIQMEL`.`Notification`=306650456;
Merci d'avance.
Partager