Je suis développeur de macro Excel 2010 dans une cellule technique et je rencontre un pb en lien avec votre tutoriel sur les classeurs fermés.
En effet, je connais bien le SQL et mon entreprise veut gérer une base de données sous excel. Donc un formulaire dans un classeur excel qui communique avec une base de données sous Excel .xlsm.
Ils ne souhaitent pas changer de type de base (cause budget).
Les Select fonctionnent très bien. Aléatoirement, les INSERT et UPDATE ne passent pas. Il n'y a pas de modifications de la base mais pas de message d'erreur non plus.
J'avais détecté qu'en ouvrant,enregsitrant et fermant le fichier base, le problème était résolu et le formulaire fonctionnait à nouveau pour les INSERT et UPDATE.
Aujourd'hui, cette solution ne fonctionne plus. Ca passe la 1ere fois mais pas les fois suivantes même si je referme le classeur.
Oui, je leur ai proposé Access (car ils souhaitent pouvoir modifier les données de la base sans passer par des requêtes SQL).
Mais la direction ne veut pas de ce logiciel soit disant "non homologué".
Alors ma base est sous excel avec une gestion de lock et file d'attente pour gérer les accès simultanés.
Même si l'on peut faire des petites choses interressantes avec Excel et msAdodb, l'utiliser en milieu professionnel pour une gestion complète d'une base de donnée est dangereux.
Ceci dit en passant par un object Recordset et ses méthodes .AddNew, .UpdateBatch on a souvent moins de problème qu'avec les requêtes directes d'insertion et de modification.
Propriétés de connexion à vérifier: .cursorLocation=adUseClient '3
Recordset idem et ouverture: rs.Open sql, cnx, adOpenDynamic, adLockBatchOptimistic ' (2,4)
Voir la littérature sur ADODB. Pour le provider si Base .xlsm rajouter Macro:
Dans cette config je ne reproduit pas ton problème.
Si fonctionne pas, envoi un exemple de ton fichier requete et base.
UPDATE: SQL Serveur 2008 Express est gratuit et limité à 10Go de data.
Mais peut être qu'il est pas validé par ta direction!
(pense à changer de chef...)
Bon, impossible de télécharger le moteur Access car "non autorisé"
Hier, le fichier base xlsm était devenu illisible (= corrompu). Excel a pu le réparer sans perte de données mais à mon avis c'est de la chance...
La solution temporaire est de ne pas passer par SQL mais d'ouvrir à chaque fois la base et de rechercher la ligne pour la mettre à jour. C'est très long mais cela garantit le fonctionnement.
Pour passer à une SGBD, il faut que je dépose un cahier des charges justifiant les besoins qui nécessitent un autre logiciel autre que Excel... Après la direction verra si ma demande est pertinente. Voila ce qui m'a été répondu hier.
Il y a sûrement une solution avec PALO. Tu restes sur Excel, tu stockes tes données dans un (ou des) datamarts et tu mets tes cubes à disposition des utilisateurs via une simple interface Excel : simple et gratuit (PALO CE 3.2). Les données numériques (quantité dans ton cas de figure) sont gérées via un cube et les enregistrements alimentent une table d'attributs qu'il est possible de consulter, modifier et supprimer toujours à partir d'Excel.