Private Function sub2(Liste As Collection, ByVal Condition As String)
Dim r As New ScriptControl
r.Language = "vbscript"
Set regEx = New RegExp
regEx.Pattern = "(Liste\(i\))(\.\S+)"
For i = 1 To Liste.Count
sub2 = regEx.Replace(Condition, CallByName(Liste(i), "$2", VbGet))
If r.Eval(sub2) Then
MsgBox sub2
End If
Next i
End Function
A voir également:
Bazar de mélange de collection, propriétés, conditions en vba-excel
'si la ligne precedente a le meme nom, et l'age est inférieur à 100ans, on la vireCondition "Liste(j).nom Liste(i).nom Or Liste(i).age > " & Chr(34) & "100" & Chr(34)
sub2 Liste, Condition
Debug.Print Liste.Count
End Sub
Private Function sub2(Liste As Collection, ByVal Condition As String)
Dim r As New ScriptControl
r.Language = "vbscript"
Set regEx = New RegExp
regEx.Pattern = "(Liste\(i\))(\.\S+)"
Do While i <= Liste.Count
For j = 1 To i - 1
Condition2 = regEx.Replace(Condition, CallByName("$1" & "($2)", "$3", VbGet))
If r.Eval(Condition2) Then
Liste.Remove (i)
i = i - 1
Exit For
End If
Next j
i = i + 1
Loop
larsene67
Messages postés18Date d'inscriptionmardi 27 juin 2006StatutMembreDernière intervention 8 novembre 2006 10 juil. 2006 à 11:56
Encore un essai qui ne marche toujours pas :(:( :
Private Function sub2(Liste As Collection, ByVal Condition As String)
Dim r As New ScriptControl
r.Language = "vbscript"
Set regEx = New RegExp
Set Regex2 = New RegExp
regEx.Pattern = "(Liste)(\([ij]\))(\.)(\S+)"
Regex2.Pattern = regEx.Pattern
Do While i <= Liste.Count
For j = 1 To i - 1
For Each tmp In regEx.Execute(Condition)
tmp2 = Regex2.Replace(tmp, "$1$2")
tmp3 = Regex2.Replace(tmp, "$4")
tmp4 = Regex2.Replace(Condition, CallByName(tmp2, tmp3, VbGet))
Condition = regEx.Replace(Condition, tmp4, VbGet)
Next tmp
If r.Eval(Condition) Then
Liste.Remove (i)
i = i - 1
Exit For
End If
Next j
i = i + 1
Loop