Access download excel ?
Thibal_jam
Messages postés
50
Date d'inscription
Statut
Membre
Dernière intervention
-
Thibal_jam Messages postés 50 Date d'inscription Statut Membre Dernière intervention -
Thibal_jam Messages postés 50 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Access download excel ?
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Microsoft store download - Guide
8 réponses
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.
ç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.
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
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
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.
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.
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
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
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.
Do
' ici tu fais ton traitement
' ligne suivante
Activecell.Offset(1, 0).Select
Loop Until Activecell.Value = ""
A+,
Kobaya.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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.
A+,
Kobaya.
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
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