Une fonction personnalisée étrange
Mon collègue MVP Jon Peltier vient
de publier une fonction personnalisée étrange, car elle fait deux choses que
les fonctions personnalisées ne sont pas censées faire : elle permet de
modifier la couleur des cellules servant d’argument à la fonction, ainsi que
celle de la cellule contenant la fonction.
Voici le code de la fonction personnalisée :
Public Function UDF_SUM(v As Variant)
If TypeName(v) =
"Range" Then
Debug.Print v.Address
v.Font.Color = vbRed ' not supposed to, but does
v = v.Value
End If
Dim i As Long, j As Long
For i = LBound(v, 1) To
UBound(v, 1)
For j = LBound(v, 2) To UBound(v,
2)
UDF_SUM = UDF_SUM + v(i,
j)
Next
Next
Application.Caller.Font.Color = vbBlue ' not supposed to, but does
End Function
La copie d’écran ci-dessous montre
un tableau où la ligne 10 fait appel à cette fonction.
Nous constatons qu’après revalidation
de la formule en D10, les arguments de la fonction sont bien passés en rouge,
et que le résultat de la fonction est bien passé en bleu.
2 Commentaire(s):
Bonjour,
Excusez-moi mais je ne vois pas bien où est le caractère "étrange" de la fonction.
Dans VBA on peut faire ce qu'on veut dans une fonction !
De plus, pourquoi reprogrammer une fonction somme en VBA alors qu'Excel fait çà très bien :))
Public Function UDF_SUM(v As Variant)
If TypeName(v) = "Range" Then
v.Font.Color = vbRed
UDF_SUM = Application.WorksheetFunction.Sum(v)
Application.Caller.Font.Color = vbBlue
End If
End Function
By cduigou, sur 8:32 PM
Cher lecteur,
Content de voir que vous êtes toujours là !
Je plaide coupable, j'ai simplement reproduit la fonction personnalisée originale. Je dois avouer que je n'écris pas souvent des fonctions personnalisées et je lui ai donc fait confiance pour ses commentaires...
By Hervé Thiriez, sur 7:08 PM
Enregistrer un commentaire
<< Accueil