VBA Excel via SAP en IW32

bonjour a tous

je sollicite vos compétence de chacun car je recherche la solution mais je la trouve pas

le but de ce fichier Excel et la liste de travaux que j aurais ,la macro sert a automatisé a crée les OT sur Sap et me les reporter sur l Excel une fois créer

sur plusieurs ligne environ 1000 ligne voir plus.

a l'exécution j ai pas de plantage ouverture Sap ce fait automatique

il va bien sur le Iw32

il me sélection le type d'ordre

et après c'est j ai des erreurs de script :

sur les ligne décrit : SAPLCOIH:7100 obliger de mettre 7120 et refait le test sa fonctionne puis après sa fonctionne plus

et je bloquer sur les autre ligne ou il Saploih:3001

et la je sais plus ou cherchez l erreur car c'est un script enregistrer sur Sap

Merci d avance a ceux qui donnerons leur solution

ci-joint le fichier et le script

Sub Bouton3_Cliquer()
If Not IsObject(Sapplication) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set Sapplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
   Set Connection = Sapplication.Children(0)
End If
If Not IsObject(session) Then
   Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session, "on"
   WScript.ConnectObject Application, "on"
End If

Range("A6").Select

Do
   session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "IW31"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtAUFPAR-PM_AUFART").Text = ActiveCell.Value
ActiveCell.Offset(0, 1).Range("A1").Select
session.findById("wnd[0]/usr/cmbCAUFVD-PRIOK").Key = ActiveCell.Value
ActiveCell.Offset(0, 1).Range("A1").Select
session.findById("wnd[0]/usr/subOBJECT:SAPLCOIH:7100/ctxtCAUFVD-TPLNR").Text = ActiveCell.Value
ActiveCell.Offset(0, 1).Range("A1").Select
   session.findById("wnd[0]/usr/subOBJECT:SAPLCOIH:7100/ctxtCAUFVD-TPLNR").SetFocus
session.findById("wnd[0]/usr/subOBJECT:SAPLCOIH:7100/ctxtCAUFVD-TPLNR").caretPosition = 23
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/subSUB_KOPF:SAPLCOIH:1102/subSUB_TEXT:SAPLCOIH:1103/cntlLTEXT/shell").Text = ActiveCell.Value + vbCr + ""
 ActiveCell.Offset(0, 1).Range("A1").Select
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/subSUB_KOPF:SAPLCOIH:1102/subSUB_TEXT:SAPLCOIH:1103/cntlLTEXT/shell").setSelectionIndexes 4, 4
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subHEADER:SAPLCOIH:0154/ctxtCAUFVD-INGPR").Text = ActiveCell.Value
 ActiveCell.Offset(0, 1).Range("A1").Select
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subHEADER:SAPLCOIH:0154/ctxtCAUFVD-VAPLZ").Text = ActiveCell.Value
 ActiveCell.Offset(0, 1).Range("A1").Select
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subHEADER:SAPLCOIH:0154/ctxtCAUFVD-ILART").Text = ActiveCell.Value
 ActiveCell.Offset(0, 1).Range("A1").Select
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subTERM:SAPLCOIH:7300/ctxtCAUFVD-REVNR").Text = ActiveCell.Value
 ActiveCell.Offset(0, 1).Range("A1").Select
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subTERM:SAPLCOIH:7300/ctxtCAUFVD-REVNR").SetFocus
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subTERM:SAPLCOIH:7300/ctxtCAUFVD-REVNR").caretPosition = 7
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[1]/btn[25]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/subSUB_KOPF:SAPLCOIH:1102/subSUB_TEXT:SAPLCOIH:1103/cntlLTEXT/shell").setSelectionIndexes 0, 0
session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/subSUB_KOPF:SAPLCOIH:1102/btn%#AUTOTEXT001").press
session.findById("wnd[1]/usr/tblSAPLBSVATC_E/radJ_STMAINT-ANWS[0,1]").Selected = True
session.findById("wnd[1]/usr/tblSAPLBSVATC_E/radJ_STMAINT-ANWS[0,1]").SetFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/tbar[0]/btn[11]").press
session.findById("wnd[0]/tbar[0]/btn[3]").press

Range("A" & ActiveCell.Row).Select
ActiveCell.Offset(1, 0).Range("A1").Select
Loop While ActiveCell.Value <> ""

End Sub

Bonjour stef80400,

Pour gérer SAP, il faut parfois mettre des temps de pause

Essayez donc de mettre la ligne suivante entre vos instructions (pas pour toutes)

Application.Wait Now() + TimeValue("00:00:01")

Mettez un point d'arrêt (F9) sur votre première ligne après le "Do"
Et faite avancer le code pas à pas avec F8

Ainsi vous pourrez peut-être voir à quel moment SAP est long à réagir

A+

ok d accord merci de l info je vais essayé ca

bonjour

j ai teste et j ai toujours le même problème sur ligne souligner en jaune

une dont le code je change 7120 en 7100 et un coup cela fonctionne apres sa recommence obliger de rechanger en 7120

puis l autre ligne d erreur je sèche

20240425 084848 20240425 085930 20240425 084857

Bonjour,

Votre script a été fait initialement avec l'enregistreur de script ?

A+

bonjour,

oui le script a été fait avec l enregistreur Sap

Hello,

le probleme est sur toutes les lignes ou seulement sur certaines lignes ? Si juste sur certaines faut regarder que contient activecell, par exemple si activecell = rien ça peut generer une erreur

bonjour

pour le problèmes il y a que ligne souligné en jaune dont une ou j ai une erreur avec le numéro 7120 que je transforme en 7100 et ca marche une fois ,tu ferme sap tu relance ta macro et ca plante ,obliger de mettre 7120 enfin bref une fois les étapes passer sa plante a la ligne suite dont la je sait pas , et les autre ligne on la syntaxe de code

ce qui faut savoir le script Sap c'est du Wbs qu'on met dans une vba je pense l erreur serait les syntaxe apprès savoir les quel?

Salut stef80400

ce qui faut savoir le script Sap c'est du Wbs qu'on met dans une vba je pense l erreur serait les syntaxe apprès savoir les quel?

Faux, c'est du langage script SAP Data Service, l'API SAP permet de le gérer comme vous le faite dans le code

Le fait que ce soit le numéro 7120 ou 7100 est je pense lié au 1er ou 2ème choix

Ensuite, perso, je passe par une variable string temporaire pour l'inscrire sur SAP, ce serait du style

Dim sTmp As String
sTmp = ActiveCell.Value
Session.findById("wnd[0]/usr/subOBJECT:SAPLCOIH:7100/ctxtCAUFVD-TPLNR").Text = sTmp

A+

Merci de ton info

après plusieurs essais et comprendre d'où vient l erreur , je me suis aperçu que a la premier exécution de Sap j avais 7120 je ferme SAp je le réouvre le Code passe en 7100

donc ce matin j'ai réussi a avancer après la fermeture de Sap et l'ouverture pour faire mon test en pas a pas

après mon autre soucis pour la suite : l'écriture de mes casse sur Sap

Quand le code

 session.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL:SAPLCOIH:1100/tabsTS_1100/tabpIHKZ/ssubSUB_AUFTRAG:SAPLCOIH:1120/subHEADER:SAPLCOIH:0154/ctxtCAUFVD-INGPR").text = "01L"

cela fonctionne 
et quand je passe 

Text = ActiveCell.Value ActiveCell.Offset(0, 1).Range("A1").Select

J ai 0 au lieu d'avoir 01L 

lorsque au début ca fonction avant passer sur volet suivant sur Sap

capture

Bonjour,

Il ne faut pas laisser ".select" sinon, la valeur retournée est Vrai

Rechercher des sujets similaires à "vba via sap iw32"