Données access dans un classeur excel [Résolu]

Messages postés
398
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
24 février 2015
- - Dernière réponse : Zlub
Messages postés
815
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
- 26 août 2005 à 18:35
Bonjour,

j'ai un problème avec une boucle dans access pour remplir un classeur excel si quelqu'un pouvait m'éclairer ce serait cool svp

Donc voilà

Je sélectionne des données dans une table et je les transfères dans un classeur
jusque là ça va
le problème c'est que les données n'apparaissent pas comme je le voudrais

classeur actuel
taches 02 04 06 07 15 16 50

moteurs -1
moteurs -1

Charbons -1

Charbons -1

et en fait je voudrais que ça ressemble à ça
taches 02 04 06 07 15 16 50

moteurs 1 1
charbons 1 1

Je sais que le problème vient de la boucle mais je ne sais pas exactement ce qu'il faut que j'emplois comme boucle

voici la fonction

Sub InitialiseExcel()

Dim xlApp, xlBook, xlRange As Variant 'Objets classeur
Dim xlWks, iRows, iCols, iRotate As Variant 'Objets feuille
Dim FichierXL As String
Dim Boucle, Cmpt As Integer

FichierXL = "C:\WINDOWS\Bureau\Preventif_maintenance\PréventifMill1bis2.xls"
'Création de l'objet Excel (main mise sur !)
Set xlApp = CreateObject("Excel.Application")
'Création de l'objet [Fichier Excel]
Set xlBook = xlApp.Workbooks.Open(FichierXL)
'Création de l'objet [Feuille] du classeur Excel.
xlApp.ActiveWorkbook.Worksheets.Add
Set xlWks = xlBook.ActiveSheet
'Création de la plage permise dans la feuille Excel.
Set xlRange = xlWks.Range("A1:A65535")

DoCmd.GoToRecord , , acLast
Cmpt = Forms![Générer_tableauExcel_Mill1].Recordset.RecordCount
DoCmd.GoToRecord , , acFirst
For Boucle = 1 To Cmpt
xlRange.Cells((Boucle + 1), 1).Value = Forms![Générer_tableauExcel_Mill1].[Tache]
DoCmd.GoToRecord , , acNext
Next Boucle
DoCmd.GoToRecord , , acFirst
For Boucle = 1 To Cmpt
xlRange.Cells(1, (Boucle + 1)).Value = Forms![Générer_tableauExcel_Mill1].[Semaine]
DoCmd.GoToRecord , , acNext
Next Boucle
DoCmd.GoToRecord , , acFirst
For Boucle = 1 To Cmpt
xlRange.Cells((Boucle + 1), (Boucle + 1)).Value = Forms![Générer_tableauExcel_Mill1].[Travail_Effectuer]
DoCmd.GoToRecord , , acNext
Next Boucle
DoCmd.GoToRecord , , acFirst

'Fermeture de Excel
'Rend Excel visible
xlApp.Visible = True
'Active le classeur
xlWks.Activate
'Positionnement en [ A1 ]
xlRange.Cells(1, 1).Select
'Message d'erreur en arrêt
xlApp.DisplayAlerts = False
'Sauvegarde du fichier Excel créé.
xlBook.SaveAs FichierXL
'Ferme l'application Excel
'xlApp.Quit
'Message d'erreur actif
xlApp.DisplayAlerts = True


Set xlRange = Nothing
Set xlWks = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

MsgBox "Tableau créé"

End Sub

Voila si quelqu'un pouvait m'aider je le remercie d'avance
salut
doro
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
815
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
1
3
Merci
Salut,

j'ai pas tout capté, mais déjà une question pourquoi tu parcours plein de fois ton recordset ? C'est aps plus simple comme ça ?




Dim previous As String





DoCmd.GoToRecord , , acLast

Cmpt = Forms![Générer_tableauExcel_Mill1].Recordset.RecordCount

DoCmd.GoToRecord , , acFirst

previous = xlRange.Cells(2, 1).Value



For Boucle = 1 To Cmpt

If previous = xlRange.Cells((Boucle + 1), 1).Value Then


xlRange.Cells((Boucle + 1), 1).Value = Forms![Générer_tableauExcel_Mill1].[Tache]

End If


xlRange.Cells(1, (Boucle + 1)).Value = Forms![Générer_tableauExcel_Mill1].[Semaine]


xlRange.Cells((Boucle + 1), (Boucle +
1)).Value = Forms![Générer_tableauExcel_Mill1].[Travail_Effectuer]


iF previous <> xlRange.Cells((Boucle + 1), 1).Value Then previous = xlRange.Cells((Boucle + 1),1).Value

DoCmd.GoToRecord , , acNext

Next Boucle




ça serait sympas de préciser qui est tache, semaine, travail ... voir comment sont les données sources..







++

Zlub

<hr size="2" width="100%">Click
sur le bouton ci-dessous, si la réponse te convient : pour indiquer aux
visiteurs où est(sont) la(es) réponse(s) à ta question.


Utilisateurs du Forum, merçi de lire [forum.v2.aspx?ID=445871 #445871]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 115 internautes nous ont dit merci ce mois-ci

Messages postés
398
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
24 février 2015
3
0
Merci
Salut Zlub,


De retour?!
Merci pour ta réponse mais le problème est résolu
Je te mets réponse acceptée car effectivement c'est plus simple comme ça
Mais moi et excel (surtout vba) ça fait 2
Encore merci

a+
Salut
Doro
Messages postés
815
Date d'inscription
mercredi 11 octobre 2000
Statut
Membre
Dernière intervention
29 septembre 2010
1
0
Merci
Salut Doro,

ok.



Vi je suis de retour apres un peu de vacances ;)

Que j'ai un peu prolongé ... mais bon ça fait du bien...





++

Zlub

<hr size="2" width="100%">Click
sur le bouton ci-dessous, si la réponse te convient : pour indiquer aux
visiteurs où est(sont) la(es) réponse(s) à ta question.


Utilisateurs du Forum, merçi de lire [forum.v2.aspx?ID=445871 #445871]