Salut
C'est le code qui va dans le bon sens.
Pour éliminer la fenêtre on passe en commentaire le MsgBox.
Dans la variable screenText on a le texte de ta fenêtre, il suffit d'y appliquer le code que je t'ai mis au post N°6
donc essais ce
Sa donne quoi ?
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 Sub copiersoustotal() ' récupération du texte de la fenêtre fond bleu foncé Dim screenText As String With Session .SetSelectionStartPos 1, 1 .ExtendSelectionRect 17, 63 .CopySelection screenText = .GetClipboardText End With 'screenText contient le texte de la fenêtre fond bleu foncé Dim TblCtnFichier() As String, T As Integer, SousTotal As Single TblCtnFichier = Split(screenText, vbNewLine) For T = 0 To UBound(TblCtnFichier) - 1 If InStr(TblCtnFichier(T), "SUB-TOTAL") Then SousTotal = CSng(Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", ""))) Exit For End If Next T '********** provisoire, pour debug ************* MsgBox "Le premier SUB-TOTAL est: " & SousTotal, vbInformation, "resultat" End Sub
Soyez sympa, pensez -y
Balises[CODE]...[/CODE]
Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Balises[C]...[/C] code intégré dans une phrase.
Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
👉 → → Ma page perso sur DVP ← ← 👈
Salut
Cool il ça y est pratiquement... j'ai une fenêtre avec les bon sous-total qui m'apparait mais dans le presse papier c'est encore toute la page qui est copier...
On avance, on avance ....
Après avoir lancé cette macro, essais de coller le contenu du presse-papier là ou tu veux.
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 Sub copiersoustotal() ' récupération du texte de la fenêtre fond bleu foncé Dim screenText As String With Session .SetSelectionStartPos 1, 1 .ExtendSelectionRect 17, 63 .CopySelection screenText = .GetClipboardText End With 'screenText contient le texte de la fenêtre fond bleu foncé Dim TblCtnFichier() As String, T As Integer, SousTotal As Single TblCtnFichier = Split(screenText, vbNewLine) For T = 0 To UBound(TblCtnFichier) - 1 If InStr(TblCtnFichier(T), "SUB-TOTAL") Then SousTotal = CSng(Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", ""))) Exit For End If Next T '********** provisoire, pour debug ************* 'MsgBox "Le premier SUB-TOTAL est: " & SousTotal, vbInformation, "resultat" Clipboard.SetText CStr(SousTotal), 1 ' <-------- rempli le presse-papier avec la valeur du premier sous-total de la fenêtre fond bleu foncé '********** provisoire, pour debug ************* MsgBox "Le contenu du presse-papier est maintenant : " & Clipboard.GetText() , vbInformation, "Contenu du presse-papier" End Sub
Si c'est bon, tu peux éventuellement mettre en commentaire la ligne N°25, bien quelle te permet de vérifier si le presse-papier contient bien la bonne récupération, a toi de voir.
Soyez sympa, pensez -y
Balises[CODE]...[/CODE]
Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Balises[C]...[/C] code intégré dans une phrase.
Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
👉 → → Ma page perso sur DVP ← ← 👈
Salut
Après lecture sur le site que tu as indiqué plus haut: http://docs.attachmate.com/reflectio...find_field.htm
J'en suis arrivé là (code macro commentée)Le même sans commentaire
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 Sub copiersoustotal() Dim screenText As String With Session ' récupération de tout le texte de la fenêtre Reflexion IBM 3270 Terminal screenText = .GetDisplayText(1, 1, .DisplayColumns * .DisplayRows) End With 'screenText contient le texte de la fenêtre Reflexion IBM 3270 Terminal Dim TblCtnFichier() As String, T As Integer, SousTotal As Single TblCtnFichier = Split(screenText, vbNewLine) 'découpe le texte en un tableau de chaque ligne For T = 0 To UBound(TblCtnFichier) - 1 If InStr(TblCtnFichier(T), "SUB-TOTAL") Then ' recherche la présence du mot SUB-TOTAL dans la ligne N°T ' SUB-TOTAL est présent dans la ligne 'SousTotal = CSng(Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", ""))) ' la méthode Replace(TblCtnFichier(T), "SUB-TOTAL", "") supprime le mot SUB-TOTAL de la ligne, ' il ne reste que la valeur de SUB-TOTAL, entouré de caractères espaces ' la méthode Trim( text de la ligne ) supprime tout les caractères espaces à droite et à gauche, ' il ne reste que le littéral valeur de SUB-TOTAL ' la méthode CSng(valeur littéral de SUB-TOTAL) convertit d'un littéral vers type numérique Single ' en fait la dernière méthode n'est pas utile pour ce cas d'utilisation, on peut donc écrire la commande comme ceci SousTotal = Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", "")) Exit For End If Next T Clipboard.SetText CStr(SousTotal), 1 ' <-------- rempli le presse-papier avec la valeur du premier sous-total de la fenêtre fond bleu foncé '********** provisoire, pour debug ************* MsgBox "Le contenu du presse-papier est maintenant : " & Clipboard.GetText() , vbInformation, "Contenu du presse-papier" End SubDonc après avoir lancé la macro, le presse-papier contient la valeur du premier sous total, tu peux le coller la ou tu veux.
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 Sub copiersoustotal() Dim screenText As String, TblCtnFichier() As String, T As Integer, SousTotal As Single With Session screenText = .GetDisplayText(1, 1, .DisplayColumns * .DisplayRows) End With TblCtnFichier = Split(screenText, vbNewLine) For T = 0 To UBound(TblCtnFichier) - 1 If InStr(TblCtnFichier(T), "SUB-TOTAL") Then SousTotal = Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", "")) Exit For End If Next T Clipboard.SetText CStr(SousTotal), 1 End Sub
A l'occasion tu me dis si c'est bon
Soyez sympa, pensez -y
Balises[CODE]...[/CODE]
Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Balises[C]...[/C] code intégré dans une phrase.
Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
👉 → → Ma page perso sur DVP ← ← 👈
J'ai la meme erreur pour les deux dernier code
je l'ai essayé plusieurs fois sans succes.
J'ai remplacé la dernière ligne, c'est curieux car tout n'est donc pas du vrai VB6, il y a un mixte avec le langage du programme/éditeur Reflexion IBM 3270 Terminal, ce qui fait que l'on ne sait pas toujours lequel employer.
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 Sub copiersoustotal() Dim screenText As String, TblCtnFichier() As String, T As Integer, SousTotal As String With Session screenText = .GetDisplayText(1, 1, .DisplayColumns * .DisplayRows) End With TblCtnFichier = Split(screenText, vbNewLine) For T = 0 To UBound(TblCtnFichier) - 1 If InStr(TblCtnFichier(T), "SUB-TOTAL") Then SousTotal = Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", "")) Exit For End If Next T Session.SetClipboardText SousTotal End Sub
Session.SetClipboardText SousTotal en VB Reflexion IBM 3270 Terminal.
Clipboard.SetText CStr(SousTotal), 1 en VB6.
Soyez sympa, pensez -y
Balises[CODE]...[/CODE]
Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Balises[C]...[/C] code intégré dans une phrase.
Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
👉 → → Ma page perso sur DVP ← ← 👈
Ici je n'ai pas de message d'erreur mais j'ai rien de copier dans clipboard.
dans ce
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 Sub copiersoustotal() ' récupération du texte de la fenêtre fond bleu foncé Dim screenText As String With Session .SetSelectionStartPos 1, 1 .ExtendSelectionRect 17, 63 .CopySelection screenText = .GetClipboardText End With 'screenText contient le texte de la fenêtre fond bleu foncé Dim TblCtnFichier() As String, T As Integer, SousTotal As Single TblCtnFichier = Split(screenText, vbNewLine) For T = 0 To UBound(TblCtnFichier) - 1 If InStr(TblCtnFichier(T), "SUB-TOTAL") Then SousTotal = CSng(Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", ""))) Exit For End If Next T '********** provisoire, pour debug ************* MsgBox "Le premier SUB-TOTAL est: " & SousTotal, vbInformation, "resultat" End Sub
que tu m'as écris le messagebox fonctionne toujours... y a-t-il un moyen de copier le résultat qui est afficher?
le résultat de cette ligne " & SousTotal, vbInformation, "resultat"
Salut
Suite a la lecture de:
http://docs.attachmate.com/reflectio.../ibm/index.htm rechercher→GetDisplayText→GetDisplayText method→Example
http://manualzz.com/doc/4142031/prog...sic-user-guide page 42 chapitre 36Example
This function returns a string containing the contents of the current host screen. The GetDisplayText method is used to get screen text. The DisplayColumns and DisplayRows properties are used to determine the current display size.
Function GetScreenText() As String
With Session
GetScreenText = .GetDisplayText(1, 1, .DisplayColumns * .DisplayRows)
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 Sub ClipboardDemo() ' ' ClipboardDemo Macro ' Macro created <today's date> by <your name> ' ' Copy screen text to the Clipboard ' Dim displayText As String displayText = Session.GetDisplayText(1, 1, 80) Session.SetClipboardText (displayText) MsgBox "Screen text has been copied to the Clipboard." End Sub
Donc une dernière tentative
J'ai rajouté les ( ) dans la partie Session.SetClipboardText
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 Sub copiersoustotal() Dim screenText As String, TblCtnFichier() As String, T As Integer, SousTotal As String With Session screenText = .GetDisplayText(1, 1, .DisplayColumns * .DisplayRows) End With '************************ a supprimer quand tout Ok *********************** MsgBox "contenu de screenText: " & screenText, vbInformation, "resultat" '************************************************************************** TblCtnFichier = Split(screenText, vbNewLine) For T = 0 To UBound(TblCtnFichier) - 1 If InStr(TblCtnFichier(T), "SUB-TOTAL") Then SousTotal = Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", "")) Exit For End If Next T '************************ a supprimer quand tout Ok *********************** MsgBox "Le premier SUB-TOTAL est: " & SousTotal, vbInformation, "resultat" '************************************************************************** Session.SetClipboardText(SousTotal) End Sub
Tu devrais avoir un premier msgbox du texte entier, puis un deuxième avec la valeur de SouTotal et ......... (l’espoir fait vivre) le SousTotal disponible dans le presse-papier.
Si cela ne fonctionne pas, je ne saurai plus t'aider, sinon te faire perdre du temps .
Soyez sympa, pensez -y
Balises[CODE]...[/CODE]
Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Balises[C]...[/C] code intégré dans une phrase.
Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
👉 → → Ma page perso sur DVP ← ← 👈
Il y a eu un petit delai... des vacances c'est agréable.
Ca n'a pas fonctionné mais merci pour ton temps... je vais continuer d'essayer de faire fonctionné ca a partir de tes macros... Il ne manqait pas grand chose.
Merci encore.
j'ai fait une toute petite modification a ta macro.
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 Sub copiersoustotal() ' récupération du texte de la fenêtre fond bleu foncé Dim screenText As String With Session .SetSelectionStartPos 1, 1 .ExtendSelectionRect 17, 63 .CopySelection screenText = .GetClipboardText End With 'screenText contient le texte de la fenêtre fond bleu foncé Dim TblCtnFichier() As String, T As Integer, SousTotal As Single TblCtnFichier = Split(screenText, vbNewLine) For T = 0 To UBound(TblCtnFichier) - 1 If InStr(TblCtnFichier(T), "SUB-TOTAL") Then SousTotal = CSng(Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", ""))) Exit For End If Next T '********** provisoire, pour debug ************* MsgBox "Le premier SUB-TOTAL est: " & SousTotal, vbInformation, "resultat" Session.SetClipboardText (SousTotal) ' <========== la modification ========= End Sub
Ça fonctionne, il copie bien le sous total comme ça MAIS quand je met le 'Msgbox en commentaire il ne fonctionne plus... pourtant soustotal ne dépend pas de cette ligne il me semble.
Bon ca y est c'est comme ca que ca fonctionne bien, pour l'instant du moins... je vais voir a grande échelle si c'est encore bon.
Merci Encore
le resultat final
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 Sub copiersoustotal() ' récupération du texte de la fenêtre fond bleu foncé Dim screenText As String With Session .SetSelectionStartPos 1, 1 .ExtendSelectionRect 17, 63 .CopySelection screenText = .GetClipboardText End With 'screenText contient le texte de la fenêtre fond bleu foncé Dim TblCtnFichier() As String, T As Integer, SousTotal As Single TblCtnFichier = Split(screenText, vbNewLine) For T = 0 To UBound(TblCtnFichier) - 1 If InStr(TblCtnFichier(T), "SUB-TOTAL") Then SousTotal = CSng(Trim(Replace(TblCtnFichier(T), "SUB-TOTAL", ""))) Exit For End If Next T Session.SetClipboardText (SousTotal) End Sub
Salut
Si la fenêtre du texte a récupérer est toujours de la même structure, nombre de lignes nombre de colonnes, tu n'auras pas de problème, mais si cela devait changer, il faudrait utiliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 With Session .SetSelectionStartPos 1, 1 .ExtendSelectionRect 17, 63 .CopySelection screenText = .GetClipboardText End With
pour capturer l’entièreté du texte présent dans la fenêtre, car ton SUB-TOTAL pourrait être au delà de la ligne 17 et colonne 63.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 With Session screenText = .GetDisplayText(1, 1, .DisplayColumns * .DisplayRows) End With
Soyez sympa, pensez -y
Balises[CODE]...[/CODE]
Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Balises[C]...[/C] code intégré dans une phrase.
Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
👉 → → Ma page perso sur DVP ← ← 👈
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