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
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]
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.