IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

export de requete vers excel(pb de mise en forme)


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 15
    Par défaut export de requete vers excel(pb de mise en forme)
    Bonjour

    J'ai access97 sous win NT4.
    Dans un script VBA j'exporte le resultat de requêtes vers des excel. Je génére une quinzaine de fichiers excel avec chacun 8-9 onglets.
    J'utilise la commande suivante
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel7, NomPartielRequete & result2("site"), PathFileXLS, False

    NomPartielRequete & result2("site")= nom de ma requête qui est variable puisque je fais une boucle, les requêtes sont créées juste avant dans une boucle par le script.
    En gros dans une boucle je génére des requetes spécifiques puis je les exporte dans des onglets excel.

    Les fichiers excels sont bien générés avec les onglets mais la mise en forme n'est pas terrible. Par exemple dans l'excel la colonne contenant le champs MARQUE n'est pas assez large(il faut l'elargir à la main pour lire la marque complète). Je ne sais pas si on peut spécifier la largeur de la colonne en faisant l'export vers excel.
    Qqun aurait il une idée?

    merci

    PS: je sais que c 'est un cas avancé et spécifique

  2. #2
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    A prioris y a aucune solution a ton problème. En effet, c'est juste de la mise en forme et l'exportation de données comme cont nom l'indique, n'exporte que les données.
    Y aurais possibilité de faire ça avec les objets de la librairie Excel. Avec notemmant le Worksheet. Mé la c'est s'aventurer vers pas mal de code.

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Par défaut
    Voila ce que j'ai fait pour mettre en forme un fichier EXCEL. Si ca peut t'aider ...

    Set DocExcel = CreateObject("EXCEL.Application")
    DocExcel.Workbooks.Open FileName:="chemin.xls", Editable:=True

    'on change la largeur des colonnes
    DocExcel.Columns("A:A").ColumnWidth = 8
    DocExcel.Columns("B:B").ColumnWidth = 9
    DocExcel.Columns("C:C").ColumnWidth = 7

    DocExcel.Visible = True

  4. #4
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    L'actuce de Ricou est bonne sauf qu'il faut connaitre par avance la taille de cahque colonne. Il faudra donc calculer pour chaque colonne et chaque feuille la largeur adaptée en fonction de la plus grande valeurs ou bien alors definir des largeurs maximum

  5. #5
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 15
    Par défaut
    C'est du bien spécifique en effet.

    Le type EXCEL.Application n'est pas reconnu dans le script, est-ce en rapport avec ma version 97 d'access?? ou faut il un module que je n'ai pas?

  6. #6
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Il te faut ajouter la référence :

    Microsoft Excel 9.0 Object Library

  7. #7
    Membre éprouvé

    Inscrit en
    Mars 2004
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 92
    Par défaut
    Bonjour,
    Et ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("A:A").EntireColumn.AutoFit
    pour adapter la largeur à la taille du champ maxi de la colonne
    En espérant t'aider

  8. #8
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Citation Envoyé par sasmira_
    Bonjour,
    Et ceci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns("A:A").EntireColumn.AutoFit
    pour adapter la largeur à la taille du champ maxi de la colonne
    En espérant t'aider
    En effet, ça limite la galère. Y a pu qu'a boucler sur chaque colonne et chaque classeur et hop c'est finit.

  9. #9
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 20
    Par défaut
    Bonjour,
    une solution que j'utilise:

    -une macro de mise en forme dans excel
    -apres l'export éxecution de cette macro via access ou a la main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    Sub Mise_en_forme()
    '****************************************************************************************************************
    '                                      ***     Macro Mise_en_forme     ***
    '
    'mise en forme de tous les entetes de colonne de toutes les feuilles du fichier excel
    '
    '16/12/2003 V1                                                                                           BlakSun
    '****************************************************************************************************************
     
    Dim colonne, num_page As Double
     
        num_page = 1 'initialisation 1eme feuilles du classeur
     
        While (num_page <= Worksheets.Count) 'tant que toutes les pages pas effectuée
     
            Worksheets(num_page).Activate 'met la page active
            Set CurrentPage = ActiveSheet 'selection page active
            colonne = 1 'initialisation colonne 1
     
            While (Not (IsEmpty(Cells(1, colonne).Value) Or Cells(1, colonne).Value = "")) 'tant que cellule non vide
     
                Cells(1, colonne).Select 'selection cellule
     
                '***mise en forme cellule***
     
                With Selection.Interior
                    .ColorIndex = 39
                    .Pattern = xlSolid
                End With
     
                Selection.Font.Bold = True
                Cells.Select
                Cells.EntireColumn.AutoFit
                Cells.EntireColumn.AutoFit
     
                '***************************
     
                colonne = colonne + 1 'changement de colonne
     
            Wend
     
            Cells(1, 1).Select 'on selectionne la premiére cellule
            num_page = num_page + 1 'on change de feuille
     
        Wend
     
    End Sub
    note:*num_page permet d'indiquer a partire de quelle page la mise en forme est nécessaire.
    *ce code est pour excel il demande donc quelque modification pour access
    *la commande .Application.Run ("non macro") te permet de ne pas modifier ce code car avec tu peux executer une macro ce trouvant dans un fichier excel

    en esperrant t'aider un peut.
    @+
    BkS.

  10. #10
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 15
    Par défaut
    merci ça marche impec.( j'ai la version Microsoft Excel 8.0 Object Library)
    Mais maintenant dans ma boucle j'ai un message qui me demande si je veux sauvegarder le doc excel qui a été modifié apres le docexcel.Workbooks.Close, comment eviter ce message?


    (Je suis pas tres fort dans la manip de fichier)

  11. #11
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 20
    Par défaut
    ah oui j'ai oublier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = False
    de mémoire il me semble que c'est cela (pour excel).

    @+
    BkS.

  12. #12
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 15
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = False
    fonctionne bien et me supprime les message mais le pb est que cela doit répondre NON à la question car quand j'ouvre mon excel les colonnes ne sont pas redimensionnées.

    PS: en tout cas merci de vos réponses à mon ignorance

  13. #13
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Remplace ta ligne par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DocExcel.ActiveWorkbook.Close(true)

  14. #14
    Membre averti
    Inscrit en
    Septembre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 15
    Par défaut
    merci ça marche impeccable
    mon pb est résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] erreur 3190 en exportant une requete vers excel via DoCmd
    Par dg6969 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 17/06/2014, 12h51
  2. exporter une requete vers excel
    Par tzinzin dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/11/2007, 16h08
  3. Exporter Résultat requete vers Excel
    Par kahya dans le forum Langage
    Réponses: 14
    Dernier message: 04/05/2007, 22h38
  4. exporter un requete vers excel
    Par chamus dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 12/02/2007, 17h10
  5. Réponses: 41
    Dernier message: 02/05/2006, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo