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 :

Actualisation Table importée via un batch


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut Actualisation Table importée via un batch
    Bonjour le forum,

    Je dispose dans un même classeur de 3 tables contenues dans 3 feuilles distinctes.
    Ces tables ont été importées de 3 tables Access avec option actualisée à l'ouverture ; ce qui se fait quand j'ouvre mon classeur (directement).
    J'ai mis en place un batch qui me permet d'éxécuter une macro de mon fichier Excel.revanche lorsque je l'ouvre via un batch l'actualisation ne se fait pas.
    Mon problème réside sur le fait que mes tables importées ne s'actualises pas lorsque j'ouvre mon classeur via le batch, j'ai rajouté l'option ActiveWorkbook.RefreshAll dans la macro appelée par le batch mais
    cela ne change rien.
    Quelqu'un aurait une solution à me proposer?

    Merci d'avance.


    voici le code de mon workbook_open.

    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
    Option Explicit
    Private Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As Long
    Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (lpString As Any) As Long
    Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (lpString1 As Any, lpString2 As Any) As Long
    Public Function GetCmd() As String
       Dim lpCmd As Long
       lpCmd = GetCommandLine()
       GetCmd = Space$(lstrlen(ByVal lpCmd))
       lstrcpy ByVal GetCmd, ByVal lpCmd
    End Function
     
     
    Private Sub Workbook_Open()
    Dim macmdline As Variant
    Dim monparam As Variant 'déclare une variable
    ActiveWorkbook.RefreshAll
        macmdline = GetCmd
        'affecte la valeur de la ligne de commande
        If Not IsNull(macmdline) Then 'si la variable est nulle
            If Len(macmdline) > 0 Then 'on s'assure qu'il y a eu une ligne de commande passée
                If InStr(macmdline, "/cmd") > 0 Then
                    macmdline = Replace(macmdline, ThisWorkbook.FullName, "", , , vbTextCompare)
                    monparam = Split(macmdline, "/cmd")
                    'Application.Run Mid(monparam(1), 2, Len(monparam(1)) - 3)
                    Application.Run Mid(monparam(1), 2, Len(monparam(1)) - 1)
                End If
            End If
        End If
    End Sub


    Ma ligne de commande Batch est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\Microsoft Office\Office12\EXCEL.exe" /cmd/Tout "B:\C_politique\Cf_Politique\Code\Reportage\Donne_2012.xlsm"


    Le but de ce batch étant d'exécuter la macro Tout.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Re-bonjour,

    Je me suis peut-être mal exprimé dans mon premier post, je réitére en espérant apporter plus de précisions.

    J'ai un fichier xlsm qu'on va nommer "Lexcel";"Lexcel" contient 3 feuilles "Import1", "Import2" et "Import3" dans chacune d'elle on trouve les données d'une table Access.Chaque table Access a été importés de la manière suivante:
    Données--->Données externes---> "A partir du fichier Access" et en cochant l'option actualisé à
    l'ouverture du fichier.
    Lorsque je place "Lexcel" dans un espace approuvé, il s'actualise à l'ouverture sans problème.


    J'ai ensuite rajouté 3 autres feuilles "présentable1", "présentable2" et "présentable3" sur lesquels
    je fais divers calculs en me servant des données des feuilles "Import i" i=1,2,3 Et tous ces calculs
    sont régis par la macro "Tout".

    Je mets ensuite dans Thisworbook un code qui exécute la macro "Tout" via un fichier .bat (batch)


    Mon .bat exécute la macro "Tout" sans souci, en revanche il n'actualise pas les données des feuilles
    "Import i" i=1,2,3 et ce quel que soit l'emplacement de "Lexcel" (approuvé ou pas).


    Mon problème est donc de faire en sorte que mon batch actualise les feuilles "Import i" i=1,2,3 et
    éxécute ensuite la macro "Tout".


    J'ai lu dans pas mal de source qu'il faille saisir le code suivant dans Thisworkbook


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    ThisWorkbook.RefreshAll
    End Sub
    Seulement voilà dans mon cas Thisworkbook contient déjà le code qui permet l'éxécution du batch,

    j'ai quand même éssayé de rajouter ThisWorkbook.RefreshAll dans mon code Thisworkbook mais ça ne change
    rien.


    je fais appel aux expert VBA/Excel, S'il vous plaît aidez moi.



    D'avance Merci.

Discussions similaires

  1. [AC-2010] Import plusieurs fichiers xls sur une table access via macro
    Par kaynan dans le forum VBA Access
    Réponses: 3
    Dernier message: 09/02/2014, 15h23
  2. Importer csv dans une table sql via Python
    Par bacheld2 dans le forum Général Python
    Réponses: 6
    Dernier message: 22/04/2013, 23h01
  3. [AC-2003] Table linkée à importer via requete append
    Par jean-didier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/10/2011, 14h10
  4. [MySQL] Script d'importation csv vers une table (mysql) via un formulaire
    Par sarabaïte dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 17/03/2011, 06h31
  5. [Importation]Lier un csv a une table existante via VBA
    Par Baya44 dans le forum VBA Access
    Réponses: 10
    Dernier message: 03/04/2007, 15h34

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