Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Excel comme "interface" a une BD access

2 réponses
Avatar
Segu.
Bonjour,

Je souhaite faire une chose (relativement) simple :
Mettre a jour des donnees via Excel en local tout en proposant un acces
distant aux donnees via un petit script asp.
Les donnees n'etant pas tres importantes et n'ayant pas vocation a le
devenir, elles sont actuellement stockées dans un fichier excel et le
script asp me permet d'utiliser le fichier via ADO.
Avec une limitation, lorsque le fichier xls est en cours de mise a jour
avec excel ouvert, impossible pour le script asp de l'utiliser puisque
le fichier est verrouillé.

J'aurai donc voulu migrer les donnes sous Access pour pouvoir y acceder
de maniere concurrente, comme dans une vraie base de donnée ( enfin,
presque une vraie base de donnée, c'est Access quand meme :o) )

Y a t'il moyen avec Excel d'editer les donnees d'une base Access de
maniere transparente ? Du genre, je sauve sous Excel, ca sauve les
donnees dans la base Access et tout ça sans empecher le script asp
d'acceder aux donness.
J'ai fait quelques essais avec Data->Get External Data, mais sans
succes, j'ai peut etre loupé un truc ?

--
Segu.

ps : la version d'excel utilisée est la 2000 mais j'en suis pas tres sur
en fait :o)

2 réponses

Avatar
Jean-Marc Tailhades
Jusqu'à présent le problème n'est pas trés compliqué.
J'utilise EXCEL97 et ACCESS97 sous NT.
Une feuille EXCEL peut servir d'écran de saisie en
utilisant "Données, Assistant modèle". A chaque sauvegarde
de ta feuile, les données sont basculées dans une table
ACCESS ou dans une base de données EXCEL. Une légère
restriction, les temps de sauvegarde peuvent être
relativement longs.
Pour le rapatriement de données d'ACCESS vers EXCEL, aprés
avoir défini ta "Source de données ODBC, DSN
Utilisateur ..." tu peux programmer ce que tu veux :

Public Function RappelFonction(DateRSoc)
' Rappel des données
On Error Resume Next

'Déclarations et initialisations
Dim Table(15)
Table(n) = ...

Dim Zone(15)
Zone(n) = "An" ....

'Purge des données anciennes
Worksheets("BdD").Range("A1:BA12").ClearContents
Worksheets("BdD").Activate

'Interrogation de la base de données
Dim Connstring As String

Connstring = "ODBC;DSN=[DSn utilisateur];UID­min;PWD=;"

Dim SQLString As String
Dim I As Integer
For I = 1 To n
SQLString = "SELECT " & Table(I) & ".* FROM " & Table
(I) & " WHERE (((" & Table(I) & ".DateRS)= '" & DateRSoc
& "' ));"
With ActiveSheet.QueryTables.Add
(Connection:=Connstring, _
Destination:=Range(Zone(I)), Sql:=SQLString)
.Refresh (False)
End With
Next I
'Transfert des données dans la feuille de saisie
Dim I00 As Integer
With Worksheets("BdD")
For I00 = 9 To 19
Worksheets("Jour").Cells(I00, 3) = .Cells(2, I00)
Worksheets("Jour").Cells(I00, 4) = .Cells(4, I00)
Worksheets("Jour").Cells(I00, 6) = .Cells(6, I00)
.........
Next I00
End With
End Function

Tout cela fonctionne correctement jusqu'à EXCEL 2002 mais
attention, pour l'instant dans EXCEL2003 et ACCESS2003
sous XP , l'interrogation de la base de données fonctionne
toujours mais la partie Assistant modèle a disparu ?.
Bonne chance.
Avatar
Segu.
Jean-Marc Tailhades wrote:
Jusqu'à présent le problème n'est pas trés compliqué.
J'utilise EXCEL97 et ACCESS97 sous NT.
Une feuille EXCEL peut servir d'écran de saisie en
utilisant "Données, Assistant modèle". A chaque sauvegarde
de ta feuile, les données sont basculées dans une table
ACCESS ou dans une base de données EXCEL. Une légère
restriction, les temps de sauvegarde peuvent être
relativement longs.
Pour le rapatriement de données d'ACCESS vers EXCEL, aprés
avoir défini ta "Source de données ODBC, DSN
Utilisateur ..." tu peux programmer ce que tu veux :

/tchac pour faire un peu de place


Tout cela fonctionne correctement jusqu'à EXCEL 2002 mais
attention, pour l'instant dans EXCEL2003 et ACCESS2003
sous XP , l'interrogation de la base de données fonctionne
toujours mais la partie Assistant modèle a disparu ?.
Bonne chance.



Merci de m'avoir repondu. Il n'y pas (helas) la partie Assistant Modele
sous Excel 2002 et XP. Dommage car c'etait exactement ce qu'il fallait.
A la place, j'ai ecrit une petite macro Excel qui met a jour une base
Access a partir du classeur courant. C'est plutot brutal puisque le
script supprime tous les enregistrements de la BD Access avant d'inserer
les données en provenance d'excel, mais ca fonctionne. Heureusement
qu'il n'y a qu'une cinquantaine d'enregistrements :o)

--
Segu.