Access download excel ?

Thibal_jam Messages postés 50 Statut Membre -  
Thibal_jam Messages postés 50 Statut Membre -
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

8 réponses

  1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    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
  2. Thibal_jam Messages postés 50 Statut Membre 3
     
    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
    1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
       
      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
  3. Thibal_jam Messages postés 50 Statut Membre 3
     
    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
    1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
       
      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
  4. Thibal_jam Messages postés 50 Statut Membre 3
     
    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
    1. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
       
      je pensais plutot à utiliser un insert qui va rechercher les valeurs dans les cellules

      A+,
      Kobaya.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Thibal_jam Messages postés 50 Statut Membre 3
     
    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
  7. Kobaya Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   214
     
    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
  8. Thibal_jam Messages postés 50 Statut Membre 3
     
    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&notes 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
  9. Thibal_jam Messages postés 50 Statut Membre 3
     
    hello kobaya merci de ton attention

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

    merci

    Thibal
    0