nicolasvanhoutte
Messages postés2Date d'inscriptionlundi 28 juin 2004StatutMembreDernière intervention29 juin 2004
-
28 juin 2004 à 16:22
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 2006
-
29 juin 2004 à 20:31
Bonjour,
Voici mon problème:
j'ai une table Access contenant plus de 500000 enregistrements ayant chacun une date associée.
Je veux enregistrer chaque enregistrement de cette table dans une feuille excel ayant comme nom la date de l'enregistrment.
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 28 juin 2004 à 21:01
Bonsoir, un tit ex pour créer un fichier excel avec des feuilles du nom que tu veux :
' dans projet/références......... Microsoft Excel x.x Object Library
Private Sub Command1_Click()
Dim AppExcel As Excel.Application
Dim ClasseurExcel As Excel.Workbook
Dim FeuilleExcel As Excel.Worksheet
Dim FichierXls As String
FichierXls = "c:\toto.xls"
' si le claseur existe on le supprime
If Dir(FichierXls) <> "" Then Kill FichierXls
' Chargement de l'application Excel
On Error Resume Next
Set AppExcel = GetObject(, "Excel.Application") ' si obj excel déjà chargé
If Err.Number <> 0 Then
Set AppExcel = CreateObject("Excel.Application") ' sinon création
End If
Err.Clear
On Error GoTo 0
' création classeur excel + sauvegarde
AppExcel.Workbooks.Add
' là, on crée les feuilles du classeur : à la place de "toto1" tu peux faire une requete qui liste tes dates et intégrer les 2 lignes qui suivent dans une boucle qui créera des feuilles avec tes dates comme nom
AppExcel.ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "toto1"
'là, tu sauvegardes ton classeur
AppExcel.ActiveWorkbook.SaveAs FileName:=FichierXls, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
AppExcel.Quit
' RéOuverture du classeur Excel créé
Set ClasseurExcel = AppExcel.Workbooks.Open(FichierXls)
' tu fais tes requetes par date et, à la place de "toto1" tu sélectionnes ta feuille suivant la date et tu remplis tes feuilles.
' remplissage de qques cellules for example
With ClasseurExcel.Sheets("toto1")
' le format, c cells(ligne,colonne)
.Cells(1, 1) = 100
.Cells(1, 2) = 200
.Cells(1, 3) = 300
.Cells(1, 4) = 400
.Cells(1, 5) = 500
cs_dragon
Messages postés2336Date d'inscriptionsamedi 14 juillet 2001StatutMembreDernière intervention 5 mai 20096 28 juin 2004 à 23:53
ce que j'avasi compris de la question, tu avais un table ou des données et tu voulais aller chercher des données qui se trouver dans les données que tu as
select * from table where champ1 in ('a','b','c','d','e', ....)
ou
select * from table where champ1 in (select intervale from table2)
voici 2 façon pour avoir des données qui se trouve dasn un intervale
aussi tu peut y mettre "not in" pour ceux qui se trouve pas dans l,intervale
Fichier Excel:
Nommer une feuille : 10_10_2004 et mettre les valeurs : 200 et 250
Nommer une feuille : 11_10_2004 et mettre les valeurs : 150 et 200
Nommer une feuille : 12_10_2004 et mettre les valeurs : 187
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
dim wdate
do while not rst.eof
if format(rst![date],"dd_mm_yyyy")<>wdate then
wdate = format(rst![date],"dd_mm_yyyy")
AppExcel.ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = wdate
end if
rst.movenext
loop
ensuite, à la place de :
With ClasseurExcel.Sheets("toto1")
' le format, c cells(ligne,colonne)
.Cells(1, 1) = 100
.Cells(1, 2) = 200
.Cells(1, 3) = 300
.Cells(1, 4) = 400
.Cells(1, 5) = 500
End With
tu écris
dim col as integer
wdate=""
rst.movefirst
do while not rst.eof
if format(rst![date],"dd_mm_yyyy")<>wdate then
wdate = format(rst![date],"dd_mm_yyyy")
col=1
else
col=col+1
end if
ClasseurExcel.Sheets(wdate).Cells(1, col) = rst![valeur]
rst.movenext
loop
Bon, ça c un exemple écrit vite fait mais tu devrais t'en sortir.