Travailler le contenu d'un sous-champ

Extraire le contenu d'un sous-champ

Voici une fonction qui renvoie le texte d'un sous-champ quel qu'il soit.

Function SelectSousChamp(Champ, SousChamp)
REM Passer "210", "$d"
	Dim LaLigne
	LaLigne = Application.ActiveWindow.Title.FindTag(Champ, 0, False, True)
	Application.ActiveWindow.Title.StartOfField
	Dim PosDollarPremier
	PosDollarPremier = InStr(LaLigne, SousChamp)
	Dim SousChaineRestante
	SousChaineRestante = Mid(LaLigne, PosDollarPremier + 2)
	Dim PosDollarSuivant
	PosDollarSuivant = InStr(SousChaineRestante, "$")
	Dim MonSousChamp
	If PosDollarSuivant > 0 Then
		PosDollarSuivant = PosDollarSuivant - 1
		MonSousChamp = Left(SousChaineRestante, PosDollarSuivant)
		SelectSousChamp = MonSousChamp
	Else
		SelectSousChamp = SousChaineRestante
	End If
End Function

On l'appelle par exemple comme ceci :

Sub Document
	Dim Document
	Application.ActiveWindow.CodedData False
	Application.activeWindow.command "mod"
	Document = SelectSousChamp("200", "$b")
	MsgBox Document, vbOKOnly, "Document"
End Sub

Sélectionner le contenu d'un sous-champ

Voici une fonction qui sélectionne le texte d'un sous-champ et renvoie la sélection.
Noter que pour sélectionner, on utilise la fonction SetSelection(selStart, selEnd)
Bizarrement, selStart désigne le caractère précédant la sélection en cours, et selEnd le caractère suivant la sélection en cours.

selStart (10K)
Function SelectSousChamp(Champ, SousChamp)
REM Passer "210", "$d"
	Application.ActiveWindow.Title.FindTag Champ, 0, False, True
	Application.ActiveWindow.Title.StartOfField
	Application.ActiveWindow.Title.Find SousChamp, True, True
	Dim PosDollarPremier
	PosDollarPremier = Application.ActiveWindow.Title.selEnd
	Dim AutreDollar
	AutreDollar = Application.ActiveWindow.Title.Find("$", True, True)
	Dim PosDollarSuivant
	If AutreDollar = True Then
		PosDollarSuivant = Application.ActiveWindow.Title.selStart
	Else
		Application.ActiveWindow.Title.EndOfField
		PosDollarSuivant = Application.ActiveWindow.Title.selStart
	End If
	Application.ActiveWindow.Title.SetSelection PosDollarPremier, PosDollarSuivant
	SelectSousChamp = Application.ActiveWindow.Title.selection
End Function