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

Macros et VBA Excel Discussion :

Executer une Macro Access à partir d'Excel (avec VBA)


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Executer une Macro Access à partir d'Excel (avec VBA)
    Bonjour,

    J'ai trouvé pour lancer l'accé à la base Access ou est stocké ma macro access.

    J'arrive sur le formulaire de saisie des paramètres (date du Jours,date du jours précédent et nbre de jours) j'ai ensuite juste à faire Go pour qu'il execute la Macro Access puis je peux quitter access et reprendre une autre macro sous excel.

    Le point délicat c'est de pouvoir reprendre directement au moment du lancement d'Access les paramétres stockés dans une page excel pour qu'il enchaine les deux macros sans avoir à ressaisir les paramètres( dates nbre de jours...) et faire un clic sur GO.

    Je suis arrivé à lancer l'ouverture d'access directement d'excel.

    Sous access j'arrive sur le formulaire et là je souhaite qu'il reprenne les variables sans avoir à les resaisir.

    le code me demande de préciser le nom de la macro pour pouvoir s'executer mais en même tant il a besoins que les variables se préafichent dans le formulaire.

    Et là ,ne connaissant pas assez bien access,je suis perdu !
    Voici la partie du code ou ça bloque

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' lancer go
     
    DoCmd.RunMacro "ImportStockPassif" 'Ici le nom de la macro Access
     MonAccess.Quit acQuitSaveNone
     Set MonAccess = Nothing
    Je pense qu'il attend que je lui indique les variables .
    c'est là que je voudrai qu'excel les transmette automatiquement à partir de la feuille Excel où sont présent les variables et la macro VBA d'origine.
    Pouvez-vous me donner les indications pour y parvenir?

    Merci
    A+

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonAccess.DoCmd.RunMacro "ImportStockPassif"
    Evidemment DoCmd n'est pas connu par l'application Excel, mais par Access.Application.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Oui,mais encore!!

    Je fais quoi ensuite ?

    merci
    a+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    En quoi ca bloque? Je croyais que c'etait ton code qui buggait...
    Que fait ta macro "ImportStockPassif", je suppose qu'elle importe d'elle meme les données de ta feuille Excel, non?
    Quel enchainement attends tu? C'est quoi tes variables? Ca veut dire quoi "se pré-affichent"?
    Que fait ton formulaire à l'ouverture? Est-ce un formulaire de mise à jour, directement lié à une table? Est-ce un formulaire lié à une table et qui a un filtre? Est-ce un formulaire tel un Userform à travers lequel l'utilisateur fait des saisies et met ensuite une table à jour?
    Je lance les questions un peu en vrac, pour pouvoir mieux t'aider...

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    En quoi ca bloque? Je croyais que c'etait ton code qui buggait..
    le code bloque sur vba à cet endroit car je pense qu'il lui manque un lien dans access.Je ne sais pas vraiment quoi?

    Que fait ta macro "ImportStockPassif", je suppose qu'elle importe d'elle meme les données de ta feuille Excel, non?
    Ma macro d'access ouvre 2 fichiers sous excel d'imports, lit les données effectue des regroupements et les exportes dans un nouveau fichiers excel.

    Quel enchainement attends tu? C'est quoi tes variables? Ca veut dire quoi "se pré-affichent"?
    qu'il prennent les dates renseignées dans une page excel que j'ai défini et que j'ai incri comme table dans access.
    Que fait ton formulaire à l'ouverture? Est-ce un formulaire de mise à jour, directement lié à une table?
    le formulaire attend que je lui indique les fameuses dates qui sont dans la table. Mais je ne sais pas comment les lier à la table.
    Est-ce un formulaire lié à une table et qui a un filtre? Est-ce un formulaire tel un Userform à travers lequel l'utilisateur fait des saisies et met ensuite une table à jour?
    le formulaire n'est donc pour le moment pas lié à une table , il n'y a pas de filtre.Ce formulaire permet de faire la saisie des dates et c'est là que je cherche à savoir comment les renseigner automatiquement.

    Egalement,peut-être que la fonction valeur par défault est interressante pour garder la possibilité d'intervenir pour saisir une date différente que celle indiqué dans la table ?
    Merci pour ton aide.
    A+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Si je comprends bien, tu as 2 problemes :
    - le bug du code
    - l'ouverture et l'initialisation d'un formulaire

    1/ Pour le bug, je ne vois pas trop pourquoi, car si MonAccess=CreateObject("Access.Application") ou New Access.Application (si tu as déclaré la référence), MonAccess.DoCmd.RunMacro "TaMacro" devrait fonctionner.
    As-tu déjà lancé ta macro d'importation sous Access? Est-ce qu'elle plante?

    2/ Pour l'ouverture du formulaire, une macro sous Access peut justement le faire, ensuite reste plus qu'à initialiser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonAccess.DoCmd.RunMacro "Ouvrir_Form"
    MonAccess.Forms("NomFormulaire").Controls("NomTextBox").Value = "ValeurVoulue"
    Ouvrir_Form est juste une macro sous Access ouvrant le bon formulaire.

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Il serait peut-être intéressant que tu expliques ce que tu souhaites obtenir en faisant cela.

    Si j'ai compris, tu es dans Excel, et tu cherches à lancer Access pour introduire automatiquement des dates qui permettront de sélectionner des données Access qui seront ensuite injectées dans un fichier Excel.

    Si c'est bien de cela dont il s'agit, il y a plus simple.

    Soit utiliser MSquery dans Excel pour te lier aux tables Access
    Soit récupérer les données via une requête SQL avec ADO...

    Dis-nous en plus en expliquant ce que tu souhaites obtenir plutôt que ta démarche pour y parvenir.

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    d'excel VBA , j'arrive sur le formulaire mais avec un msg:
    erreur 2485 microsoft Access ne peut pas trouver la macro ..."ImportStockPassif" a cet endroit du code sous VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunMacro "ImportStockPassif" 'Ici le nom de la macro
    le formulaire Access est tout de même visible et là ,il faut lui indiquer les variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub ImportStockPassif()
     
    ' 1. Importation des fichiers de passif quotidien dans une table Access
    Set BD = CurrentDb
     
     
    '   1.1 Récupération de la valeur saisie dans un bouton
    Set dfMenu = Forms![F_Menu]
    cJour = dfMenu![Jour]
    cJourant = dfMenu![Jourant]
    cJour2 = dfMenu![JourCalendrier]
    cJourant2 = dfMenu![JourantCalendr]
    enfin lancer Go

    je retourne sous VBA, et je poursuit avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonAccess.Quit acQuitSaveNone
     Set MonAccess = Nothing
    et c'est fini.

    Voilà ce que je peux ajouter .

    A+

  9. #9
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Si j'ai compris, tu es dans Excel, et tu cherches à lancer Access pour introduire automatiquement des dates qui permettront de sélectionner des données Access qui seront ensuite injectées dans un fichier Excel.
    oui c'est cela.

    je peux ajouter que mon objectif ici est:
    1) de pouvoir soit utiliser sous access la macro à travers le formulaire directement
    ou bien
    2) à partir d'une autre macro sous Excel qui renseigne automatiquement les variables attendues (à partir d' une table!) dans le formulaire pour que la macro sous access puisse se dérouler

    3)enfin fermer access et revenir sous excel ceci automatiquement.

    des morceaux de code existent mais ne sont pas liés les uns aux autres comme il convient.

    Merci
    A+

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Où se trouve la macro ImportStockPassif?

    Dans le module du formulaire ou dans un module standard?

    Si ta macro se trouve dans le module du formulaire, déplace-la dans un module standard

    Que fait cette macro?

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    la macro se trouve dans le module standard je pense .

    Comment je peux m'en assurrer?

    ce qu'elle fait , je vous donne le début de la macro :
    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
    Option Compare Database
    Option Explicit
     
    Public BD As Database
    Public dfMenu, dfValNul As Form
    Public dtFic As Recordset
    Public Portefeuille, cJour2, cJourant2, cChemMvt2, cChemMvt3, ChemMvt4, cChemMvt5, cNomTable, cNomTable2, _
    cNomTable3, cNomTable4, cNomTable5, cNomTable6, cNomTable7, cNomTable8, cNomTable9, cNomTable10, cNomTable11, _
    cNomTable12, cNomTable13, cNomTable14, cNomTable15, cNomTable16, cJour, cJourant, cChemMvt, cNomEssai, cNomFic, _
    cNomFic2, cNomFic3, cNomFic4, cNomFic5, cNomFic6, Texte, Tt1, T_valeurs(0), T_valeursUFF(0), T_valeurstotal(0), _
    T_Regul(0), T_Regul2(0) As String
    Public dtRegul2, dtsupports, dtrq_flux_jour, dtrq_regr_flux_jour, dtrq_Stock_reel_arbi_jourant, dtrq_Stock_reel_arbi_jour, _
    dtrq_Var_StockREEL_arbi, dtrq_ecartsNbParts, dtrq_ecartsNbParts_sans_Comp, dtrq_ecartsNbParts_sans_Comp2, dtrq_regr_jour_1, _
    dtrq_regr_jourant_1, dtrq_regr_jour_2, dtrq_regr_jourant_2, dtrq_rg_jour_v, dtrq_rg_jourant_v, dtrq_ecarts, dtrq_ecarts_Eur, _
    dtRegul, dtxxx, dtPassif, dtPassif2 As QueryDef
    Public i, j, nBoucle As Integer
    Public dDate As Date
    Public bTrouve As Boolean
    Public DTable As Recordset
    Public Total, TotalAnt, EcartTotal, PassifReel, PassifReelAnt, EcartPassifReel, InstArbi, InstArbiAnt, EcartInstArbi, InstAutr, _
    InstAutrAnt, EcartInstAutr, vnbJour, dNomEssai As Double
    Function ParentDir(ByVal str As String) As String
     
     
    Dim i As Integer
     
     ' repère le dernier "\"
    If Right(str, 1) = "\" Then str = Left(str, Len(str) - 1)
     
     ' maintenant regarde le précédent
    For i = Len(str) To 1 Step -1
        If Mid(str, i, 1) = "\" Then
            Debug.Print "fichier" & Right(str, Len(str) - i)
            str = Left(str, i)
            GoTo fin01
        End If
    Next i
     
    fin01:
        Debug.Print "repertoire" & str
        ParentDir = str
    End Function
    Sub ImportStockPassif()
     
    ' 1. Importation des fichiers de passif quotidien dans une table Access
    Set BD = CurrentDb
     
     
    '   1.1 Récupération de la valeur saisie dans un bouton
    Set dfMenu = Forms![F_Menu]
    cJour = dfMenu![Jour]
    cJourant = dfMenu![Jourant]
    cJour2 = dfMenu![JourCalendrier]
    cJourant2 = dfMenu![JourantCalendr]
    cChemMvt = ParentDir(Application.CurrentDb.Name) 'CurrentProject.Path
    cChemMvt2 = cChemMvt
    cChemMvt3 = cChemMvt
    cChemMvt4 = cChemMvt
    cChemMvt5 = cChemMvt
    '   1.3 Importation des fichiers de passif quotidiens *****
    cNomFic = "Passif" & cJour & ".xls"
    cNomTable = "T_passifjour"
    Call RechercheTable(cNomTable, bTrouve)
    Call SupprRecord(cNomTable, bTrouve)
     
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, cNomTable, cChemMvt & cNomFic, True
    cNomFic2 = "Passif" & cJourant & ".xls"
    cNomTable2 = "T_passifjourant"
    Call RechercheTable(cNomTable2, bTrouve)
    Call SupprRecord(cNomTable2, bTrouve)
     
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, cNomTable2, cChemMvt & cNomFic2, True
    Cette macro récupére des donnnés de 2 fichiers d'excel , fait des regroupements sous access et redonne un nouveau fichier sous excel de ces regroupements .

    Merci
    A+

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/06/2011, 16h42
  2. commander macro Access à partir d'excel
    Par ericdev67 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/03/2008, 20h38
  3. lancer une macro access à partir d'excel
    Par bybelos33 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/07/2007, 15h16
  4. Ouverture d'une Bd Access à partir d'excel
    Par ft035580 dans le forum Access
    Réponses: 12
    Dernier message: 06/10/2006, 16h22
  5. Lancer une macro PPT à partir d'Excel
    Par Rabah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/10/2005, 17h23

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