Actualiser données externes via un batch

Thest

XLDnaute Nouveau
Bonjour le forum,

Voici mon problème je dispose dans un même classeur de 3 tables contenues dans des feuilles distinctes.
ces tables sont en fait liées à 3 tables Access.
Mes tables acces ont été liées avec option actualisée à l'ouverture ce qui se fait quand j'ouvre mon classeur (directement), en revanche lorsque je l'ouvre via un batch l'actualisation ne se fait pas.

Dans mon code workbook j'ai rajouté l'option ActiveWorkbook.RefreshAll mais cela ne change rien.

Quelqu'un aurait une solution à me proposer? Merci d'avance.


Voici mon code workbook_open:

Private Sub Workbook_Open()
Dim macmdline As Variant
Dim monparam As Variant 'déclare une variable
ActiveWorkbook.RefreshAll
macmdline = "/cmd/Tout"
'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




Et voici la ligne de commande de mon Batch:


Code:
"C:\Program Files\Microsoft Office\Office12\EXCEL.exe" /cmd/Tout "B:\C_politique\CT_Politique\Code\Report\Donne_2012.xlsm"


Tout est une macro qui fait un certain nombre de copier et coller
 

Thest

XLDnaute Nouveau
Re : Actualiser données externes via un batch

Bonjour le forum,

Voici mon problème je dispose dans un même classeur de 3 tables contenues dans des feuilles distinctes.
ces tables sont en fait liées à 3 tables Access.
Mes tables acces ont été liées avec option actualisée à l'ouverture ce qui se fait quand j'ouvre mon classeur (directement), en revanche lorsque je l'ouvre via un batch l'actualisation ne se fait pas.

Dans mon code workbook j'ai rajouté l'option ActiveWorkbook.RefreshAll mais cela ne change rien.

Quelqu'un aurait une solution à me proposer? Merci d'avance.


Voici mon code workbook_open:

Code:
[COLOR="#FF0000"]Private Sub Workbook_Open()
Dim macmdline As Variant
Dim monparam As Variant 'déclare une variable
[COLOR="#FF0000"]ActiveWorkbook.RefreshAll[/COLOR]
    macmdline = "/cmd/Tout" 
    '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[/COLOR]


Et voici la ligne de commande de mon Batch:


Code:
"C:\Program Files\Microsoft Office\Office12\EXCEL.exe" /cmd/Tout "B:\C_politique\CT_Politique\Code\Report\Donne_2012.xlsm"


Tout est une macro qui fait un certain nombre de copier et coller





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:
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

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi