Access download excel ?

Fermé
Thibal_jam Messages postés 50 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 18 mai 2005 - 22 déc. 2004 à 15:34
Thibal_jam Messages postés 50 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 18 mai 2005 - 29 déc. 2004 à 14:47
Bonjour à tous,

Qqun saurait-il comment downloader un report sur un template (modèle) d'excel.

pour pouvoir ainsi avoir les bons noms des champs et les colonnes dans le bon ordre et un titre sur ma feuille excel.
dites moi si vous n'avez pas tout compris mon problême.

Merci d'avance et joyeuse fêtes de fin d'année

Thibal
A voir également:

8 réponses

Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
22 déc. 2004 à 16:56
salut Thibal_jam,

ça va peut-être t'aider (si j'ai bien compris ton pb) :

Dim objConn As Connection
Dim objRS As Recordset
Dim wbkClasseur As Workbook
Dim strSQL As String, strFCR As String
Dim lngLigne As Long, lngIndex As Long, lngNbFields As Long, lngCount As Long
Dim intCell As Integer

On Error GoTo Err_

' definition de la chaine de connexion
Application.StatusBar = "Connection à la base..."
Set objConn = New Connection
objConn.ConnectionString = CONST_BDOTC_PROD
' ouverture de la connexion
objConn.Open

Set wbkClasseur = Workbooks.Add
' détruire les feuilles inutiles
Do Until wbkClasseur.Sheets.Count = 1
wbkClasseur.Sheets(wbkClasseur.Sheets.Count).Delete
Loop

strSQL = "SELECT * FROM tfcrcrm ORDER BY nomfcr"
Set objRS = New Recordset
Application.StatusBar = "Lancer la requête..."
objRS.Open strSQL, objConn
lngLigne = 1
lngNbFields = objRS.Fields.Count - 1
' écriture les noms des champs renvoyés dans la requête
For lngIndex = 0 To lngNbFields
Cells(1, lngIndex + 1).Value = objRS.Fields(lngIndex).Name
Next
lngLigne = lngLigne + 1
' écriture du recordset dans la feuille
Do While Not objRS.EOF
Application.StatusBar = "Ecriture du recordset... (enr #" & lngLigne & ")"
For lngIndex = 0 To lngNbFields
Cells(lngLigne, lngIndex + 1).Value = objRS(lngIndex).Value
Next
lngLigne = lngLigne + 1
objRS.MoveNext
Loop
lngCount = objRS.RecordCount
objRS.Close
Set objRS = Nothing: Set objConn = Nothing: Set wbkClasseur = Nothing


A+,
Kobaya.
0
Thibal_jam Messages postés 50 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 18 mai 2005 3
23 déc. 2004 à 10:59
yes merci Kobaya,

Mais en faite j'ai déja fait une grande partie du boulo:

stDocName = "R_reports"

DoCmd.OpenReport stDocName, acViewPreview, , mareq
mareq me permet de poser une clause where a mon report.

ensuite je fais le download excel
DoCmd.OutputTo acReport, stDocName, acFormatXLS

et je ferme le report Excel
DoCmd.Close

je sais k'on peut travailler avec un template

DoCmd.OutputTo acReport, stDocName, acFormatXLS,,, "nom template.xls"

mais il l'ecrase et le remplace je sais pas pourquoi.peut tu m'aider?

ou m'expliquer comment utiliser ton code si c'est ça la solution

encore merci

Thibal
0
Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
29 déc. 2004 à 14:31
salut Thibal,

je reviens sur ce post : si le format des colonnes de ton fichier Excel ne change pas, je pense qu'il vaut mieux que tu utilises la fonction d'importation du format Excel dans Access. Si je me rappelle bien, ça doit donner quelquechose comme DocCmd.ImportExcelFile arg1,arg2,etc...

il faudrait que je trouve un peu de temps quand je suis à la maison, le soir, pour te donner le code VBA exact dans ACCESS...

A+,
Kobaya.
0
Thibal_jam Messages postés 50 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 18 mai 2005 3
23 déc. 2004 à 11:28
rebonjour
je suis désolé mais j'aurais une deuxième question :

comment loader automatiquement un fichier Excel qui n'aura pas tjs le meme nb de ligne mais qui aura tjs les memes colonnes

merci d'avance pour vos réponses

Thibal
0
Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
23 déc. 2004 à 12:20
je n'ai plus Access sur mon poste... Peut-être y-a-t-il une commande Access qui te permettra de charger une feuille Excel dans une table, quel que soit le nombre de lignes. Sinon, il faut faire une boucle du style :

Do
' ici tu fais ton traitement



' ligne suivante
Activecell.Offset(1, 0).Select
Loop Until Activecell.Value = ""

A+,
Kobaya.
0
Thibal_jam Messages postés 50 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 18 mai 2005 3
23 déc. 2004 à 13:59
merci bien

ok je vais essayer ça

par traitement tu entends juste copier les cellules et les coller dans excel.

ou plutot utiliser un insert qui va rechercher les valeurs dans les cellules.

je sais pas quelle solution choisir et surtout laquelle est réalisable.

merci

Thibal
0
Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
23 déc. 2004 à 14:33
je pensais plutot à utiliser un insert qui va rechercher les valeurs dans les cellules

A+,
Kobaya.
0

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

Posez votre question
Thibal_jam Messages postés 50 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 18 mai 2005 3
23 déc. 2004 à 16:09
ok je pense aussi


mais je connais pas du tout les commandes vba lié a excel et mon aide est en anglais je capte que dalle.

mais je pense que comme ça ça devrait passer:
rien a voir le code c'est just une idée générale et en plus je sais pas comment nommer les cellules ni ou mettre des guimets , des &,...


while indice colonne A <> ""
moncode = "insert into table1 (1,2,3,4,5,...) values (indice colonne(A), indice colonne (B),indice colonne(B),...)"
docmd.runsql moncode
indice = indice+1
end while

si ça t'inspire un peu et que tu sais remplacer ce code par les vrai nom de colonne et tous le ratata qui va avec n'ésite pas
sinon j'essayerai de me débroullier mais comme tu vois jsuis pas près d'y arriver.

merci encore
0
Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
23 déc. 2004 à 16:21
peux-tu me donner les différents champs de la table où tu veux insérer les valeurs d'Excel, avec leur format (texte, entier, simple, double, etc...)?

A+,
Kobaya.
0
Thibal_jam Messages postés 50 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 18 mai 2005 3
29 déc. 2004 à 10:50
hello dsl de n 'avoir pas répondu avant j'ai pris 3 jours de vacances.

merci de ta réponse voici les champs et leur format:

Table T_product :

Product_type number
supplier_code number
Sap description text
Size number
pcb number
production_line text
comment¬es memo
active_supplier yes/no
formula number
shelf number
minimum number

Product_type, size et pcb sont des clés étrangères en fait il va falloir utiliser une table tampon en prenant des champs textes pour ces trois clés.

merci bcp

Thibal
0
Thibal_jam Messages postés 50 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 18 mai 2005 3
29 déc. 2004 à 14:47
hello kobaya merci de ton attention

et pour l'upload de excel dans Access t'as des news ?

merci

Thibal
0