Sie sind auf Seite 1von 4

Bonjour,

J'ai une table saisie_donnes qui regroupe toutes les saisies (code_article, date, entres, sorties) et
une requete qui appelle les donnes en fonction du critre code_article.
L'objectif est d'avoir un tat qui affiche les entres, les sorties et un champ calcul qui affiche le
rsultat 'stock= stock_dbut + [entres]-[sorties] ceci chaque ligne de l'tat.
Avec la requete select je parviens runir les donnes mais le problme est d'avoir le champ calculer
'stock'

Voici les formules appropries (Source Microsoft). Bien entendu il faut les adapter votre
situation.

Pour les recevoir, il faut d'abord crer 2 champs de type texte dans le pied
de formulaire.

=Somme(nz([UnitsCommandes])-nz([UnitsReues]))
=Somme(nz([UnitsReues])-nz([PerteUnits])-nz([UnitsVendues]))





I maginons que vous dsiriez importer non pas une seule feuille Excel, mais toutes les
feuilles d'un classeur. Comment faire ?
Astuce aimablement envoye par Ludovic.
Si vous dsirez plus d'explications concernant l'importation simple d'une feuilles Excel, c'est
par ici.
Mode d'emploi :
- Dans la base de donnes Access dans laquelle vous dsirez importer l'ensemble de
toutes les feuilles de calcul d'un fichier Excel, crivez le code suivant dans un module
VBA, et excutez le. Le fichier Excel s'appelle ici C:\TOTO.XLS. Il faut bien
videmment l'adapter votre situation.
Sub ImportationGlobale
Dim appXl As Excel.Application
Dim intNbFeuille As Integer
Dim intIndex As Integer
Dim avarTabFeuille() As Variant
Dim WorkSheet As Excel.WorkSheet
Dim tdf As TableDef
Set appXl = CreateObject("Excel.Application")
intNbFeuille = 1

'OUVRE LE FICHIER .XLS ET TROUVE LERS DIFFERENTES FEUILLES
With appXl
.Workbooks.Open "C:\toto.xls"
ReDim avarTabFeuille(.Worksheets.Count)
For Each WorkSheet In .Worksheets
avarTabFeuille(intNbFeuille) = WorkSheet.name
intNbFeuille = intNbFeuille + 1
Next
.Quit
End With
Set appXl = Nothing

'CREE UNE TABLE LINKEE POUR CHACUNES DES FEUILLES TROUVEES
For intIndex = 1 To UBound(avarTabFeuille)
fEntrer = False
Set tdf =
CurrentDb.CreateTableDef(avarTabFeuille(intIndex))
tdf.Connect = "Excel 5.0;DATABASE=" & Result
tdf.SourceTableName = avarTabFeuille(intIndex) & "$"
CurrentDb.TableDefs.Append tdf
CurrentDb.TableDefs.Refresh
Next
End Sub


1. Re : Importer 100 fichiers excel dans 1 table Access
bonsoir

Juste pour le Fun, voici une procdure qui boucle sur tous les classeurs d'un rpertoire sans les ouvrir
et transfert les donnes de la Feuil1 vers une table Access (Table1).

L'exemple suppose que
Tous les onglets portent le mme nom.
Les classeurs sont structurs comme une vraie base (pas de donnes parpilles) et de structure
identique la base Access (nombre de colonne et type de donnes
adapts:date,texte,numerique...etc...)

la procdure ncessite d'activer la rfrence Microsoft ActiveX Data Objects x.x Library

Code :
Sub tranfertFeuilleClasseursFermes_VersAccess()
Dim Cn As New ADODB.Connection
Dim oProdRS As New ADODB.Recordset, oRS As ADODB.Recordset
Dim oConn As ADODB.Connection
Dim j As Integer
Dim Fichier As String, Repertoire As String

'------------------------------------------------------
'Connection la Base Access
Set oConn = New ADODB.Connection
oConn.Open "Provider='Microsoft.Jet.OLEDB.4.0';" & _
"Data Source= 'C:\maBase.mdb';"

'les donnes seront placs dans Table1
Set oRS = New ADODB.Recordset
oRS.Open "Select * from Table1", oConn, adOpenKeyset, adLockOptimistic
'------------------------------------------------------

'Boucle sur les classeurs Excel du rpertoire cible
Repertoire = "C:\Documents and
Settings\mimi\dossier\general\excel\Nomdossier"
Fichier = Dir(Repertoire & "\*.xls")

Do While Fichier <> ""
'Connection au classeur Excel
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Repertoire & "\" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;"""

'requte pour extraire les donnes de la Feuil1
oProdRS.Open "SELECT * FROM [Feuil1$]", Cn, adOpenStatic

' --- Transfert des donnes dans la base ---
Do While Not (oProdRS.EOF)
oRS.addNew
For j = 0 To oRS.Fields.Count - 1
oRS.Fields(j) = oProdRS.Fields(j).Value
Next j
oRS.Update
oProdRS.moveNext

Loop
'-------------------------------------------

oProdRS.Close
'Fermeture de la connection au classeur Excel
Cn.Close
Fichier = Dir
Loop

oRS.Close
Set oRS = Nothing
'Fermeture de la connection Access
oConn.Close
Set oConn = Nothing
End Sub

SELECT Tonnages.Client, Sum(Tonnages.Volume) AS SommeDeVolume,
Tonnages.numAnnee,convDate(Tonnages.numAnnee,[SemaineACalculer]) AS
dateconvertie
FROM Tonnages
WHERE Tonnages.tDate>=DateAdd("ww",-4,dateconvertie) And (
Tonnages.tDate<dateconvertie)
GROUP BY Tonnages.Client, Tonnages.tDate, Tonnages.numAnnee;

Das könnte Ihnen auch gefallen