Insertion données dans colonne Excel

cs_antonio75 Messages postés 38 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 18 mai 2007 - 14 mai 2007 à 11:02
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 14 mai 2007 à 11:28
Bonjour à tous,

j'ai un petit probleme VB-excel, j'ai fait des recherches sur le net mais j'ai rien trouvé, c est pour cela que je fais appel a votre aide.

Je recupere des donnes d'une base access à l'aide de recordset et apres je cree un fichier excel pour insérer ces données. Pour l'instant, les différents champs sont séparés par des ; (a la maniere d'un .csv) et je souhaiterais que chaque champ soit dans une colonne plutot que séparé par les ;.

voila mon code

Set rst = New ADODB.Recordset
rst.Open "SELECT NOMPRENOM, MATRICULE, DATEECHEANCE FROM echeancier WHERE (DATEECHEANCE = #" & Format(Date_ech, "mm/dd/yyyy") & "#) ORDER BY NOMPRENOM", Connexion, adOpenDynamic, adLockOptimistic
rst1.Open "SELECT SONNOM, ARVMAT, ARVENCOURS FROM DB_1 WHERE (ARVENCOURS = 1)", Connexion, adOpenDynamic, adLockOptimistic

g = FreeFile
Open "C:\fichier_test.xls" For Output As #g

While Not (rst.EOF)
champ1 = rst("NOMPRENOM")
champ2 = rst("MATRICULE")

rst1.MoveFirst
While Not rst1.EOF
Print #g, champ1 & " ; " & champ2
rst1.MoveNext
Wend
rst.MoveNext
Wend

Close #g
MsgBox (" Le fichier a été généré")
rst.Close
rst1.Close

En fait, je voudrais que champ1 soit dans la colonne A et champ2 dans la colonne B, merci d'avance pour votre aide.

++, Antoine.

5 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 mai 2007 à 11:09
Salut,
Je pense qu'au lieu de passer par OPen XXX For OUtput, tu devrais essayer de piloter directement Excel depuis ton porgramme.
Fait une petite recherche sur Codyx pour voir comment s'y prendre.
Puisque de cette maniere tu auras la possibilité d'utiliser directement les objets relatif à excel (Classeur, Feuille, Cellule).
Tu perdra peu être un peu de temps à comprendre (et encore pas sur on est là pour t'aider)
mais après ce sera plus facile pour toi  il me semble

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 mai 2007 à 11:12
Re,
Mais d'ailleurs n'est ce pas DEJA ce que je te proposais de faite ICI
Discution à laquelle tu n'as estimé utile de donner suite ... pourtant déjà pres de trois semaine...
Si tu ne prends pas en considération les conseils que l'on te donne à quoi bon venir chercher de l'aide
@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 mai 2007 à 11:14
Regarde la commande CopyFromRecordset

Ce qui donne grosso modo, une fois le recordset appelé,
Sheets("MaFeuille").Range("A1").CopyfromRecordset Rst1

MPi
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
14 mai 2007 à 11:16
Salut jrivet,
je me suis fait encore avoir par ta vitesse...

MPi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 mai 2007 à 11:28
Re,

> [auteurdetail.aspx?ID= 6078 MPi]: pas forcément puisque tu le mets sur une piste (et en plus j'ai appris l'existance de cett procédure).
Aller un petit exemple pour [auteurdetail.aspx?ID=1031790 antonio75] , essaies AU MOINS de le mettre en pratique

Option Explicit

Private Sub Form_Load()
Dim Cnn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim XlApp As New Excel.Application
Dim XlWokBook As Excel.Workbook

       Cnn.Open "DRIVER ={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=HISTORIQUE;USER=root"
       Set Rst = Cnn.Execute("SELECT * FROM EVENEMENTS")
       Set XlWokBook = XlApp.Workbooks.Open("C:\test.xls")
       Call XlWokBook.ActiveSheet.Range("A1").CopyFromRecordset(Rst)
End Sub<hr />

, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
Rejoignez-nous