Bonjour,
Je viens vous demander votre aide.
Serait ce possible d'automatiser l'exportation de donnée d'une liste spool vers Excel directement avec la mise en forme souhaité ?
D'avance merci.
Bonjour,
Je viens vous demander votre aide.
Serait ce possible d'automatiser l'exportation de donnée d'une liste spool vers Excel directement avec la mise en forme souhaité ?
D'avance merci.
Bonjour,
Oui, c'est possible, mais pas simple...
La "grille" du spool n'est pas vraiment une grille, mais une série d'étiquettes (Label).
Il faut donc trouver la colonne des noms de rapports par rapport au titre de colonnes.
Dans mon cas, on retrouve le mot Intitulé en français ou Title en anglais
Je me suis fait une petite fonction pour la trouver
Pour l'appeler
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 Function GetLabelNumber(Session As Object) As Integer Dim I As Long Dim sapGui As Object ' SAPFEWSELib.GuiApplication Dim sapCon As Object ' SAPFEWSELib.GuiConnection Dim sapSession As Object ' SAPFEWSELib.GuiSession Dim sapUsr As Object ' SAPFEWSELib.GuiUserArea Dim ChildCount As Long Dim Tablo Dim Ligne As Long Set sapGui = GetObject("sapgui").GetScriptingEngine Set sapCon = sapGui.Children(0) Set sapSession = sapCon.Children(0) With Session Set sapUsr = .FindById("wnd[0]/usr") sapUsr.VerticalScrollbar.Position = 0 'Positionne le scrollbar en haut ChildCount = sapUsr.Children.Count 'Nombre d'items For I = 0 To ChildCount 'Recherche le titre de la colonne des noms de rapports If InStr(1, sapUsr.Children(I).Text, "Intitulé") > 0 Or InStr(1, sapUsr.Children(I).Text, "Title") > 0 Then Tablo = Split(sapUsr.Children(I).ID, "[") Tablo = Split(Tablo(UBound(Tablo)), ",") Ligne = Tablo(0) GetLabelNumber = Ligne Exit Function End If Next End With End Function
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 'code de connexion avec les dates et ce qu'il faut................. lblNum = GetLabelNumber(Session) If lblNum = 0 Then MsgBox "Impossible de trouver la colonne des rapports", vbExclamation, "Erreur SAP" Exit Sub End If For I = 3 To 50 'Changer au besoin If Not Sortir Then If Not Session.FindById("wnd[0]/usr/lbl[" & lblNum & "," & I + 1 & "]") Is Nothing And Sortir = False Then If Sortir Then Sortir = False: Exit For If Session.FindById("wnd[0]/usr/lbl[" & lblNum & "," & I + 1 & "]").Text = "Nom du rapport qu'on recherche" Then If Sortir Then Exit For Session.FindById("wnd[0]/usr/lbl[" & lblNum & "," & I + 1 & "]").SetFocus Session.FindById("wnd[0]/usr/lbl[" & lblNum & "," & I + 1 & "]").caretPosition = 5 Session.FindById("wnd[0]/tbar[1]/btn[6]").press 'lunettes Session.FindById("wnd[0]/tbar[1]/btn[48]").press 'bouton Enregistrer Session.FindById("wnd[1]/tbar[0]/btn[0]").press Session.FindById("wnd[1]/usr/ctxtDY_PATH").Text = Chemin 'inscrit le chemin Fichier = "Nom du fichier.txt" Session.FindById("wnd[1]/usr/ctxtDY_FILENAME").Text = Fichier 'inscrit le nom du fichier Session.FindById("wnd[1]/tbar[0]/btn[0]").press 'enregistre Session.FindById("wnd[0]/tbar[0]/btn[3]").press 'retour à la liste End If End If Else Sortir = False Exit For End If Next
J'essaye de comprendre le code mais j'avance pas beaucoup pourrais tu m'expliquer rapidement ce que que tu fais ?
Après avoir atteint la page du spool, je recherche la colonne qui contient les noms de rapports.
Ma fonction me retourne le numéro de colonne que j'utilise dans mon code (variable LblNum) et je l'utilise dans ma boucle.
ex: Session.FindById("wnd[0]/usr/lbl[" & lblNum & "," & I + 1 & "]").SetFocus
Ensuite, je boucle toutes les lignes pour rechercher celui ou ceux qui m'intéressent.
Je leur donne le focus, les ouvre (icône lunettes) et les sauvegarde dans un répertoire.
Finalement (pas dans ce code), je les récupère et copie ce que j'ai besoin.
Qu'est-ce que tu ne comprends pas ? Où bloques-tu ?
Le principe je l'ai compris mais ce que je comprend pas c'est la facon dont tu le fais la partie avec le tableau je ne comprend pas ce que tu fais.
Et la première partie du code de connexion jusqu'au code commenté également.
Il faudrait que tu sois plus précis dans ce que tu ne comprends pas...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager