Function ChangeAllCellpropertiesInRange(ByRef RnG As Range, prop As String)
Dim R As Variant, Addr
With RnG
Addr = "'" & .Parent.Name & "'!" & .Address
Select Case UCase(prop)
'formule non matricielles
Case "LOWER", "UPPER", "PROPER", "APPTRIM":
prop = Replace(UCase(prop), "APPTRIM", "TRIM")
R = Evaluate("IF(ISTEXT(" & Addr & ")," & UCase(prop) & "(" & Addr & "),REPT(" & Addr & ",1))")
'formules matricielle
Case "LTRIM": R = Evaluate("IF(ISTEXT(" & Addr & "),MID(" & Addr & ",FIND(MID(TRIM(" & Addr & "),1,2)," & Addr & ",1),LEN(" & Addr & ")),REPT(" & Addr & ",1))")
'nouvelle formule
Case "RTRIM": R = Evaluate("IF(ISTEXT(" & Addr & "),LEFT(" & Addr & ",FIND(""§"",SUBSTITUTE(" & Addr & ",RIGHT(TRIM(" & Addr & "),1),""§"",LEN(" & Addr & ")-LEN(SUBSTITUTE(" & Addr & ",RIGHT(TRIM(" & Addr & "),1),""""))),1))," & Addr & ")")
Case "TRIM": .Value = Evaluate("IF(ISTEXT(" & Addr & "),MID(" & Addr & ",FIND(MID(TRIM(" & Addr & "),1,2)," & Addr & ",1),LEN(" & Addr & ")),REPT(" & Addr & ",1))")
R = Evaluate("IF(ISTEXT(" & Addr & "),MID(" & Addr & ",1,FIND(TRIM(RIGHT(SUBSTITUTE(TRIM(" & Addr & "), "" "", REPT("" "", 100)), 100))," & Addr & ",1)+LEN(TRIM(RIGHT(SUBSTITUTE(TRIM(" & Addr & "), "" "", REPT("" "", 100)), 100)))-1),REPT(" & Addr & ",1))")
End Select
End With
ChangeAllCellpropertiesInRange = R
End Function
Sub testx()
Dim DL, RnG As Range
Set RnG = Selection
'RnG.Parent.Activate
RnG.Value = ChangeAllCellpropertiesInRange(RnG, "lower") 'majuscule ou minuscule l'argument de propertie
End Sub