Bonjour à tous,

Je sais qu'il existe des discussions à ce sujet, mais je n'en ai trouvé aucune de "simple" ou même de compréhensible.

Tout ce que je souhaite c'est d'exécuter un script SAP enregistré au préalable dans une macro, mettre les valeurs telles que les dates en variables pour qu’on puisse les changer dans excel.

J'ai cherché mais vraiment en vain car je déclare bien les variables du type "guiapplication" ou "guisession", j'active bien Sap gui scripting API dans les références.

Mais il me renvoit à chaque fois l'erreur 91 "variable objet ou variable de bloc with non définie".

Je ne souhaite pas pour le moment introduire les variables de dates mais simplement exécuter le script SAP.

Je précise que le script fonctionne très bien quand je le lance seul.

Merci de votre aide, je vous en serais vraiment reconnaissant !

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
 
Option Explicit
Sub sapscript()
 
Dim SapGuiAuto, WScript, msgcol
Dim objGui  As GuiApplication
Dim objConn As GuiConnection
Dim objSess As GuiSession
Dim objSBar As GuiStatusbar
Dim objSheet As Worksheet
Dim W_System
 
 
If Not IsObject(Application) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set objGui = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(objConn) Then
   Set objConn = Application.Children(0)
End If
If Not IsObject(objSess) Then
   Set objSess = objGui.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject objSess, "on"
   WScript.ConnectObject objGui, "on"
End If
objSess.FindById("wnd[0]").ResizeWorkingPane 122, 37, False
objSess.FindById("wnd[0]/tbar[0]/okcd").Text = "nom de transaction sap"
objSess.FindById("wnd[0]").SendVKey 0
objSess.FindById("wnd[0]/usr/ctxtRV14A-KONLI").Text = "Paramètre"
objSess.FindById("wnd[0]/usr/ctxtRV14A-KONLI").CaretPosition = 2
objSess.FindById("wnd[0]").SendVKey 0
objSess.FindById("wnd[0]").SendVKey 8
objSess.FindById("wnd[0]/usr/ctxtP_3-LOW").Text = "Paramètre"
objSess.FindById("wnd[0]/usr/ctxtL_1-LOW").Text = "*"
objSess.FindById("wnd[0]/usr/ctxtL_3-LOW").SetFocus
objSess.FindById("wnd[0]/usr/ctxtL_3-LOW").CaretPosition = 0
objSess.FindById("wnd[0]/usr/btn%_L_3_%_APP_%-VALU_PUSH").Press
objSess.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE").Columns.ElementAt(0).Width = 2
objSess.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,0]").Text = "Paramètre"
objSess.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/btnRSCSEL_255-SOP_I[0,0]").SetFocus
objSess.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/btnRSCSEL_255-SOP_I[0,0]").Press
objSess.FindById("wnd[2]/usr/cntlOPTION_CONTAINER/shellcont/shell").SetCurrentCell 5, "TEXT"
objSess.FindById("wnd[2]/usr/cntlOPTION_CONTAINER/shellcont/shell").SelectedRows = "5"
objSess.FindById("wnd[2]/tbar[0]/btn[0]").Press
objSess.FindById("wnd[1]/tbar[0]/btn[8]").Press
objSess.FindById("wnd[0]/usr/ctxtDATUM-LOW").Text = "Date"
objSess.FindById("wnd[0]/usr/ctxtDATUM-HIGH").Text = "Date"
objSess.FindById("wnd[0]/usr/txtMAX_LINE").Text = "10000"
 
End Sub