[ACCESS] Exectuer Macro Excel dans Access

artamys Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   -  
artamys Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je dois a partir d'un BDD, extraire a la demande (bouton) des requetes sur fichier excel.
L'extraction ne pose pas de problème.

Mon objectif est que je puisse lancer une Macro excel située dans un SUB d'access sur la feuille excel nouvellement créé.

et la gros problème.
la reprogrammation pour piloter excel depuis access pose probleme notament pour la définition des longueurs... width ne passe pas ...

donc merci pour une solution éventuelle.
j'ai bien essayé de lancer une commande comme : xlApp.Run ("c:\.....\Bureau\BDD.mdb!MacroExcel") mais je suis rejeté car la base est ouverte... et surtout il est pas évident que le code sera interprété sur le format excel.

L'objectif étant de limiter au maximum les dépendances avec d'autre fichiers excel qui contiendrait éventuellement le code pour optimiser le suivi et la viabilité.

Merci.
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Au préalable, il faut cocher la référence "Microsoft Excel X.y library" dans outils-références de l'éditeur VB

    à partir d'une sub access

    Dim appliXL As Excel.Application
    Dim classeur As Excel.Workbook

    ' Par exemplr: On veut ouvrir le classeur concerné
    Set appliXL = CreateObject("Excel.Application")
    par exemple:
    Set classeur= xlApp.Workbooks.Open("chemin+nom du classeur concerné")
    ton code
    set classeur=nothing
    appliXL.Quit
    set appliXL=nothing

    nota: certains antivrus trouvent suspect l'instruction "Quit"... Passer outre
    0
  2. artamys Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   7
     
    merci michel,
    La librairie est cochée par le programme en amont qui vérifie si la librairie est active et a défaut elle l'active.

    voici mon code, il ne pose pas de probleme. il marche mal pour une raison indéterminée.

    Private Sub Extraction_DEI_Projet_Click()
    Call ReferenceActive("Excel")

    'fonction de vérification de l'existence de la bibliotheque excel

    If Not ReferenceActive("Excel") Then ActiverReference "Excel.exe"
    Dim AccApp As Access.Application
    Dim ref As Reference
    Set ref = References!Access
    Dim ref2 As Reference
    Set ref2 = References!Excel
    Dim DayJour As Integer
    Dim MonthJour As Integer
    Dim YearJour As Integer
    Dim heureJour As Integer
    Dim MinuteJour As Integer
    Dim Dateinstant As Date
    Dateinstant = Now()
    HeureJour = Hour(Dateinstant)
    MinuteJour = Minute(Dateinstant)
    DayJour = Day(Dateinstant)
    MonthJour = Month(Dateinstant)

    Dim XlApp As Excel.Application
    Dim XlSheet As Excel.Worksheet
    Dim XlBook As Excel.Workbook
    Set XlApp = CreateObject("Excel.Application")

    XlApp.SheetsInNewWorkbook = 1

    Dim tempo As Integer
    tempo = heureJour & MinuteJour

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Extraction_Projet", "..\DeskTop\Extraction DEI" & DayJour & MonthJour & tempo & ".xls"
    XlApp.Visible = True
    Set XlBook = XlApp.Workbooks.Open("..\DeskTop\Extraction DEI" & DayJour & MonthJour & tempo & ".xls")
    XlBook.Worksheets(1).Visible = True
    XlBook.Worksheets(1).Select

    XlBook.Worksheets(1).Cells.Select
    XlBook.Worksheets(1).Columns.AutoFit
    XlBook.Worksheets(1).Columns("B:B").Select

    With Selection.Font
    .Name = "arial"
    End With

    ' attention cette partie fonctionne de maniere aléatoire. une fois il passe une fois il dit que la selection n'est pas définie...

    Set XlSheet = XlBook.Worksheets(1)

    XlSheet.Columns("B:B").Select
    'Set Selection = XlSheet.Columns(0, 2).Select
    Set test = XlSheet.Columns
    With test.Width = 45
    End With

    XlSheet.Cells(1, 1).Select

    XlSheet.Columns("C:C").Select
    'Set Selection = XlSheet.Columns("C:C").Select
    Selection.ColumnWidth = 50
    With Selection
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlBottom
    .WrapText = True
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    End With
    ' attention cette partie fonctionne de maniere aléatoire. une fois il passe une fois il dit que la selection n'est pas définie...

    End Sub
    0