Function SUBSTITUEX(T As String, ByVal elements_a_remplacer As Variant, Optional ByVal elements_de_remplacement As Variant = "")
Dim I&, Q$
'conversion en variable tableau si Typerange
elements_a_remplacer = elements_a_remplacer
elements_de_remplacement = elements_de_remplacement
'conversion en array 1 dimension selon le type d'array injecté
Select Case GetdimensionTypeArray(elements_a_remplacer)
Case "vertical": elements_a_remplacer = Application.Transpose(elements_a_remplacer):
Case "ligne": elements_a_remplacer = Application.Index(elements_a_remplacer, 1, 0)
End Select
Select Case GetdimensionTypeArray(elements_de_remplacement)
Case "vertical": elements_de_remplacement = Application.Transpose(elements_de_remplacement)
Case "ligne": elements_de_remplacement = Application.Index(elements_de_remplacement, 1, 0)
End Select
For I = LBound(elements_a_remplacer) To UBound(elements_a_remplacer)
If IsArray(elements_de_remplacement) Then
If UBound(elements_de_remplacement) <> UBound(elements_de_remplacement) Then SUBSTITUEX = "notEqualBoundary": Exit Function
Q = elements_de_remplacement(I)
Else: Q = elements_de_remplacement
End If
T = Replace(T, elements_a_remplacer(I), Q)
Next
SUBSTITUEX = T
End Function
Function GetdimensionTypeArray(T)
'Fonction pour determiner le type de dimensionnement de la variable injectée(T)
'patricktoulon
Dim Tx, x&, Z, x2, z2&
z2 = UBound(T): If z2 = 0 Then x2 = Z + 1: x = x2 Else x = Z: x2 = x
Z = Switch(z2 = 1, "ligne", TypeName(Application.Index(T, z2, 2)) <> "Error", "tableau", x = x2, "vertical", x < x2 Or x > 1, "array")
If Z = "vertical" And TypeName(Application.Index(T, z2, 1)) = "Error" Then Z = "array"
GetdimensionTypeArray = Z
End Function
Sub UnregisterOptions()
Application.MacroOptions Macro:="SUBSTITUEX", Description:=Empty, ArgumentDescriptions:=Empty, Category:=Empty
End Sub
Sub registerOptions()
Dim Funct_description As String, argumtsArray
'(max 255 caracteres)
Funct_description = "Fonction SUBSTITUEX" & vbCrLf & _
"Cette fonction sert a substituer" & vbCrLf & _
"Array;une chaine/carateres" & vbCrLf & " par" & vbCrLf & _
"Array;une chaine/carateres ou un melange" & vbCrLf & _
"Creted by patricktoulon"
'Description des arguments de la fonction
argumtsArray = Array("string:chaine à traiter", _
"array de chaine ou de carateres à substituer ((peut etre une Range))", _
"array de chaine ou de caratères de remplacecement ((peut etre une Range))")
'appel la sub pour enregistrer
Application.MacroOptions Macro:="SUBSTITUEX", _
Description:=Mid(Funct_description, 1, 255), _
ArgumentDescriptions:=argumtsArray, _
Category:="personnalisée"
End Sub