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

VBA Access Discussion :

Comment executer une macro Excel sous Access [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut Comment executer une macro Excel sous Access
    Boujour Forum,

    Je suis en train de créer un programme sous access qui importe des données à partir d'extraction sous format excel.

    Pour l'instant mon programme fait: (ouvrir une fenetre de séléction,lance Excel et le fichier séléctionné et lance une macro (se sitant dans un autre fichier excel qui est lui aussi ouvert), Puis enregistre ferme et importe dans la table.

    Pour fair simple j'aimerai éviter de fair appelle à la macro dans un autre fichier excel, mais modifier mon fichier Excel séléctionné depuis le code de mon Module.

    - J'ai essayé de renseigner sur l'automation ect.. sans résultat.
    - j'ai essayé de Copier le code de ma macro(celui du fichier xls) et cela marche à moitier, et seulement à la premiére utilisation de la base access. (Obligé de fermé puis réouvrir pour relancer le code) Err = Le serveur distant n'existe pas ou n'est pas disponible.

    J'éspére avoir été claire dans mes propos;
    je tien par avance à vous remercier pour votre aide, j'ai la téte qui va pas tarder à imploser.

    Merci

    Alexis

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Salut,

    Le pilotage d'excel depuis Acess ne pose pas de problème, mais il faut modifier un peu la syntaxe.

    Tout dépend de ce que fait ta macro excel.
    Peux tu donner le code de la macro en question ?

    Tu trouvera ici des exemples de syntaxe pour piloter excel depuis acess.
    Ici aussi

  3. #3
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    J'ai reussi à adapter le code, mais n'ayant aucune base réél en VBA c'est un peu dur. voila une partie du code de ma macro brut EXCEL:

    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
      Rows("1:5").Select
        Range("A5").Activate
        Selection.Delete Shift:=xlUp
        Columns("A:A").Select
        Selection.Delete Shift:=xlToLeft
        Rows("7:9").Select
        Selection.Delete Shift:=xlUp
        Range("A1:G6").Select
        Range("G6").Activate
        Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Range("B1:B6,D1:D6").Select
        Range("D6").Activate
        Selection.NumberFormat = "#,##0.00 $"
    et voila le code que j'ai concut à partir de celui ci-dessu:

    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
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim i As Long
    Dim vtemp As Variant
    
    Set xlApp = New Excel.Application
        xlApp.Visible = True
    Set xlBook = xlApp.Workbooks.Open(myPath)
    Set xlSheet = xlBook.Worksheets("20091103_SAP_PT1_MB5L_LISTE_DES")
    
        xlSheet.Rows("1:5").Delete Shift:=xlUp
    
        xlSheet.Columns("A:A").Delete Shift:=xlToLeft
    
        xlSheet.Rows("7:9").Delete Shift:=xlUp
        
        xlSheet.Range("A1:G6").Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            
        xlSheet.Range("A1:G6").Replace What:=".", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            
    '    xlSheet.Range("B1:B6,D1:D6").NumberFormat = "0.00" <-- La mise au format Nombre ne marche pas???
        xlBook.SaveAs Filename:= _
            "U:\Informatique\USINE\AUTOMATE\LOGISTIQUE\MB5L_LISTE_DES_STOCKS.xls" _
            , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    L'essentiel de mes macro sert a remetre en forme les fichier pour permetre un import facile.

    Elles sont donc toutes différentes.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    C'est déjà le plus dur qui est fait (pas mal pour qq'un qui n'a "aucune base réél en VBA")

    Il y a juste la mise au format qui ne fonctionne pas ?

    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Range("B1:B6,D1:D6").NumberFormat ="#,##0.00 $"
    ?

  5. #5
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    J'ai deja essayé:
    et j'obtien la fameuse erreur : L'objet "Range" de l'objet "_worsheet" à echoué.

    Sinon globalement cela fonctionne bien.

    Existe t-il un dico permétant de visualiser ce qu'il faut traduire de Excel à VBA. Car je connais pas et je m'en sort seulement en prenant des bout de code de droite et de gauche.

    merci pour tes réponse et ton aide

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 900
    Points : 4 790
    Points
    4 790
    Par défaut
    Bonjour,
    Ca ne serait pas un ; ici ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Range("B1:B6;D1:D6").NumberFormat = ...

  7. #7
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    Merci bcp;

    Les plus petites erreurs sont toujours les pires à trouver!

    Je met le code complet de mon module pour ceux que cela interresse.

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    Public Function Import_Files_STK_DATE()
    On Error GoTo Import_Files_STK_DATE_Err
     
        Dim myPath As String
     
            '//////////////////////////////////// Ouverture du Fichier et Séléction
     
        myPath = OuvrirUnFichier(0, "Sélectionnez Le fichier XLS SAP Stock à Date. Emplacement: U:\tarata\toto\LOG", 1, "XLS File", "XLS")
        DoCmd.SetWarnings False
     
            '//////////////////////////////////// Remise en forme (Sans Macro)
     
            '/////////// Definition des Variables
     
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim Savename As String
     
            '/////////// Attribution des Valeurs
    Set xlApp = New Excel.Application
        xlApp.Visible = False
     
    Set xlBook = xlApp.Workbooks.Open(myPath)
     
    Set xlSheet = xlBook.Worksheets(1)
     
            '/////////// Remise En Forme
     
        xlSheet.Rows("1:5").Delete Shift:=xlUp
     
        xlSheet.Columns("A:A").Delete Shift:=xlToLeft
     
        xlSheet.Rows("7:9").Delete Shift:=xlUp
     
        xlSheet.Range("A1:G6").Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
        xlSheet.Range("A1:G6").Replace What:=".", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
     
        xlSheet.Range("B1:B6;D1:D6").NumberFormat = "#,##0.00 $"
     
     
    Savename = "U:\Informatique\USINE\AUTOMATE\LOGISTIQUE\MB5L_LISTE_DES_STOCKS  " & Day(Date) & Month(Date) & Year(Date) & ".xls"
        xlBook.SaveAs Filename:= _
            Savename, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
     
     
            '/////////// Quite Excel Et Sauvegarde sur le fichier excel d'import (Sans écraser l'autre fichier)
     
     
    xlBook.Save
    xlApp.Quit
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
     
        '//////////////////////////////////// FIN de Remise en forme (Macro)
     
        '//////////////////////////////////// Transfér du fichier (import)
        'Chemin du fichier macro et import
     
        DoCmd.TransferSpreadsheet acImport, 8, "TABLE", Savename, False, onglet
        DoCmd.SetWarnings True
    Kill (Savename)
     
    Import_Files_STK_DATE_Exit:
        Exit Function
     
    Import_Files_STK_DATE_Err:
        MsgBox Error$
        Resume Import_Files_STK_DATE_Exit
     
    End Function

    Ciao

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

Discussions similaires

  1. exécuter une macro excel sous access
    Par smix13 dans le forum VBA Access
    Réponses: 10
    Dernier message: 03/02/2009, 08h51
  2. comment executer une macro excel depuis page asp ?
    Par auboulot909 dans le forum ASP
    Réponses: 12
    Dernier message: 10/01/2008, 19h26
  3. Utiliser une macro Excel sous access
    Par Manu59410 dans le forum VBA Access
    Réponses: 6
    Dernier message: 28/08/2007, 09h08
  4. [Manipulation Excel] Executer une macro Excel depuis Access
    Par sebastien_oasis dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/05/2007, 15h21
  5. Comment copier une feuille EXCEL sous ACCESS?
    Par PAULOM dans le forum Access
    Réponses: 7
    Dernier message: 28/04/2006, 10h01

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