Pb mise à jour base excel via SQL

batseb

XLDnaute Nouveau
Bonjour,

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.

Voici la connexion :
Code:
     'on ouvre la connexion
    Fichier = Params.CheminBaseTemps
    Feuille = "Database"
    Set Cn = New ADODB.Connection
    'Cn.Open "DRIVER={Microsoft Excel Driver (*.xlsm)};DBQ=" & Fichier & "; ReadOnly=False;"
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=Excel 12.0;Persist Security Info=False"

Voici la fin de la fonction qui devrait afficher un message d'erreur si il y a erreur.
Code:
    Exit Function
    
GestErr:
    MsgBox Err.Number & " - " & Err.Description
    Err.Clear

Voici les champs de la base :
Semaine
Annee_Semaine
Process
Secteur
Activite_Libelle
Indicateur_Code
Indicateur_Libelle
TypeVolume
Quantite

4500 enregistrements

Avez-vous une piste? (-Ici, ca chauffe car l'utilisateur perd ses données sans le savoir)

Cordialement,
batseb
 

batseb

XLDnaute Nouveau
Re : Pb mise à jour base excel via SQL

Bonjour pyfux,

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.

Bonne journée,
 
G

Guest

Guest
Re : Pb mise à jour base excel via SQL

Bonjour,

Oui, excel n'est pas un SGBD.

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:

cnx.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\fichier.xlsm;Extended Properties=""Excel 12.0 Macro;HDR=YES;"""

A+
 

pyfux

XLDnaute Occasionnel
Re : Pb mise à jour base excel via SQL

Bon courage alors (pour les locks et la file d'attente des commandes),

Pour le Extended Properties essaye plutôt: "Excel 12.0 Macro" (le fichier "base de données" est xlsm)
Download Microsoft Access Database Engine 2010 Redistributable from Official Microsoft Download Center

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...)

UPDATE: ok hasco a raison. +1
 
Dernière édition:

batseb

XLDnaute Nouveau
Re : Pb mise à jour base excel via SQL

Merci pour ces précisions.

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.

Bonne journée,
 

joss56

XLDnaute Accro
Re : Pb mise à jour base excel via SQL

Bonjour à tous,

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.

Bonne journée

Jocelyn
 

Discussions similaires