mise à jour d'un contenu ODBC pendant la nuit [EXCEL] - VB/VBA/VBS - Programmation
Marsh Posté le 21-11-2019 à 12:26:26
Finalement j'ai réussi. Voilà le code pour ceux que ça intéresserait :
Code :
|
Marsh Posté le 24-11-2019 à 10:24:01
C'est un peu crade comme solution quand même. Si l'un des 2 scripts dépasse la tempo, tu l'as dans l'os. Tu pourrais faire que lorsqu'un script de traitement débute, il écrit dans un fichier temporaire. Le script qui attend va lire toutes les x secondes le fichier. Dès qu'il n'existe plus, il peut passer à l'étape suivante. C'est une sorte de sémaphore. Je ne sais pas si ça existe en VBA ce type d'objet mais si oui, ça serait mieux que ma solution.
Marsh Posté le 25-11-2019 à 11:47:55
Merci pour ta réponse Rufo
Je sais que c'est pas le top, mais je ne sais pas comment faire autrement.
En réalité la première temporisation est inutile, car vbs attend que le fichier soit ouvert pour poursuivre.
La base de mon problème c'est que je n'ai aucune information qui me prévient lorsque la mise à jour via l'ODBC se termine. C'est un process qui se lance en parallèle à Excel et qui vit sa vie de son côté. J'ai mesuré qu'il fallait une à deux minutes pour que mes mises à jour se fassent. Vu que ça tourne la nuit je vais lui laisser 30 minutes comme ça je suis très large.
Ça n'empêche pas que si quelqu'un a laissé ouvert le fichier sur le réseau, il va s'ouvrir en lecture seule et je ne le saurais pas...
Après au pire mes informations ne seront pas actualisées automatiquement de nuit, je pourrais toujours le faire manuellement. Ça aide à fluidifier les choses, mais si ça ne se fait pas il n'y aura pas de conséquences dramatiques.
Mais bon, si tant qu'à faire je peux faire un truc vraiment au poil...
Marsh Posté le 19-11-2019 à 08:10:49
Bonjour,
Là où je travaille notre ERP est limité au niveau du reporting. On a développé un petit fichier sous Excel 2016 qui se connecte (en lecture seule) via un connecteur ODBC à la base de données Oracle de l'ERP et nous permet un traitement derrière.
C'est presque propre, c'est efficace et très rapide à modifier.
Là où ça se corse c'est au niveau de l'automatisation de la mise à jour.
J'ai créé un script .VBS que j'exécute à heure fixe pendant la nuit :
1- il ouvre un fichier intermédiaire (batch.xlsm)
2- il lance la macro de mise à jour du contenu de batch.xlsm : on ouvre le vrai fichier excel et on lance la mise à jour via l'ODBC
3- il ferme les fichiers en les enregistrant
Le problème c'est que la mise à jour via ODBC est une tâche qui s'exécute en arrière plan. Et le fichier se referme avant que la mise à jour ne soit effective.
J'ai essayé de mettre une pause ou de lancer un autre script plus tard pour fermer le fichier. J'ai aussi décoché l'option de mises à jour ODBC en arrière plan, mais rien n'y fait.
Je passe par un fichier intermédiaire car j'ai plusieurs fichiers à mettre à jour. Je centralise les modifications dans ce fichier intermédiaire.
Quelqu'un pour me filer un coup de main ?
Merci d'avance !
Mon script vbs
Mes macros
---------------
Le topic de mon feedback ici - Je suis rarement connecté le WE - Mes ventes sont également sur d'autres sites/forums