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 :

Lancer une macro Excel pour les fichiers ouverts depuis Access


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Responsable exploitation transport
    Inscrit en
    Août 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable exploitation transport

    Informations forums :
    Inscription : Août 2024
    Messages : 5
    Par défaut Lancer une macro Excel pour les fichiers ouverts depuis Access
    bonjour à tous,

    je commence à me débrouiller sur les Macros Excel mais sur Acces je suis totalement novice.
    j'ai fouillé sur internet j'ai déjà réussi à mettre des petits codes VBA sur mes formulaires de ma BDD pour quitter et enregistrer.

    Mais là je n'arrive pas à passer à la prochaine étape.

    J'ai créé une requête sur une vingtaine de fichiers Excel pour accéder aux données de ma BDD clients.
    j'ai un formulaire de création Access ("Création Client)" que j'ouvre depuis un fichier Excel en VBA quand je veux saisir un nouveau client.
    Une fois ce formulaire rempli j'ai un code affecté à un bouton qui enregistre les nouvelles données et quitte Access.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub save_client_Click()
     
    DoCmd.Close , , acSaveYes
     
    DoCmd.quit
    End Sub
    Sauf qu'après je dois manuellement actualiser ma requête sur les fichiers Excel pour intégrer la nouvelle entrée. Je souhaiterai automatiser cette actualisation à la fermeture d'Access.
    Pour cela j'aimerai qu'avec le code de fermeture il me lancer aussi la Macro Excel qui actualise ma requête, et ce sur chaque fichier Excel concerné qui est ouvert à ce moment là sur le poste de la personne qui crée la nouvelle entrée.

    j'ai 4 personnes qui travaillent sur ces fichiers, tous dans le même répertoire sur le serveur de l'entreprise, et qui peuvent en avoir 2 ou 3 ouverts en même temps.
    le nom de la macro Excel pour actualiser la requête est le même pour tous les fichiers, le nom du module est le même, seul le nom du fichier Excel change.

    je pense qu'il serait possible de créer un code avec FOR EACH mais je ne sais pas comment appeler ma macro excel, je sèche.
    de ce que j'ai compris le code doit être dans "Form_Création Client" ?
    j'ai essayé de créer un module mais du coup le clic sur le bouton ne fonctionne pas.

    merci de votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Pour répondre à ta question, tu peux utiliser Run "TaMacro" sur l'objet Worksbook ouvert par Excel.
    Et ta macro doit être une function pas une sub.

    La partie délicate, si elle est même possible, va être d'accéder au Excel sur lequel tu veux agir.
    Est-ce que ton Access roule sur le poste de l'utilisateur dont tu veux mettre a jour les Excel ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Responsable exploitation transport
    Inscrit en
    Août 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable exploitation transport

    Informations forums :
    Inscription : Août 2024
    Messages : 5
    Par défaut
    merci pour ton retour,

    je ne manie pas trop les "function" encore.
    effectivement l'idéal serait de pouvoir lancer l'actualisation de ma requête via VBA depuis le fichier excel qui en cours de traitement pour lequel on ajoute un nouveau client.

    j'avais essayé mais ça ne fonctionne pas pour attendre que le formulaire access soit fermé.

    voici ma macro Excel pour lancer le formulaire access :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub ajout_client_bdd()
        Dim AppliBDD As Object
     
    Set AppliBDD = CreateObject("Access.Application")
     
        Dim CheminDB As String
        CheminDB = "L:\OVERSEAS\GRA\0 - CLIENTS OVERSEAS SAP.accdb"
        AppliBDD.OpenCurrentDatabase CheminDB
     
        AppliBDD.UserControl = True
     
        AppliBDD.DoCmd.OpenForm "Création Client", acNormal
     
    End Sub
    et quand c'est fini j'actualise manuellement ma requête depuis le fichier Excel : (j'ai 2 formulaires pour 2 tables différentes j'ai préféré actualiser mes 2 requêtes en même temps)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub actualiser_requetes()
    Application.CommandBars("Queries and Connections").Visible = True
    ActiveWorkbook.RefreshAll
    End Sub
    si tu peux m'aider à adapter mon code je t'ne serai très reconnaissante !
    ça allègera un peu le process.

    (oui mes collègues ont access sur leur poste)

    merci

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    OK, je pense que j'avais mal compris.

    C'est depuis Excel que tu mets à jour Access.
    Et c'est depuis le Excel que tu veux mettre d'autres Excel à jour.
    Est-ce bien cela ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Responsable exploitation transport
    Inscrit en
    Août 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable exploitation transport

    Informations forums :
    Inscription : Août 2024
    Messages : 5
    Par défaut
    Je n'ai peut être pas été assez claire désolée.
    Je lance le formulaire access via une macro excel.
    Quand je ferme mon formulaire, j'actualise ma requête sur le fichier excel en cours pour que mes nouvelles données de ma bdd apparaissent sur mon fichier excel.
    Vu que jai 1 BDD mais 15 fichiers excel, je ne peux pas lancer la macro d'un fichier excel precis.
    Je pensais donc que la seule manière d'actualiser la requête etait de parcourir tous les fichiers excel ouverts dans le répertoire (de la personne qui ajoute une entrée dans access)

    Mais si j'arrive à actualiser automatiquement la requête dans excel à la fermeture du formulaire access, ce serait parfait ! 😊

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    D'accord. J'avoue ne jamais avoir fait cela.

    La partie actualisation de tous les Excel n'est pas très difficile, c'est attraper la fermeture de Access qui me semble délicat.
    Actuellement tu y arrives ?

    Pour la mise à jour de tous les Excel tu peux faire dans ton Excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dim xlwbk as workbook
     
    for each xlwbk in workbooks 'Parcourt tous les classeurs ouverts.
       'Comme il est possible que la macro n'existe pas dans le Excel et que je ne sais pas le tester on va utiliser la gestion d'erreur.
       on error resume next 'Si il y a une erreur, juste l'ignorer
       xlwbk.run "TaMacro"
       on error goto 0 'Il n'y a plus de raison valable d'ignorer les erreurs.
    next xlwbk
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. [XL-2007] Lancer une macro Excel pour compte Outlook MAPI d'un user
    Par TomTom2000 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/06/2011, 15h12
  2. Réponses: 0
    Dernier message: 21/03/2011, 09h16
  3. [PPT-2003] lancer une macro excel a partir d'un fichier powerpoint
    Par yvespi dans le forum VBA PowerPoint
    Réponses: 10
    Dernier message: 15/06/2010, 15h48
  4. [AC-2000] Automation avec Excel : lancer une macro qui trie les données
    Par fredschmidt dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/09/2009, 14h47
  5. [VBA-E]une macro unique pour plusieurs fichiers excel
    Par fanchic29 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/04/2006, 16h20

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