Après avoir entré WorksheetFunction, la liste des fonctions apparaît :
Pour s'y retrouver, une liste des fonctions traduites en anglais est disponible sur ce site, en voici un extrait :
Fonction en français | Fonction en anglais | Description de la fonction |
NB | COUNT | détermine les nombres compris dans la liste des arguments. |
NB.SI | COUNTIF | compte le nombre de cellules qui répondent à un critère donné dans une plage. |
NB.SI.ENS | COUNTIFS | compte le nombre de cellules à l’intérieur d’une plage qui répondent à plusieurs critères. |
NB.VIDE | COUNTBLANK | compte le nombre de cellules vides dans une plage. |
NBVAL | COUNTA | détermine le nombre de valeurs comprises dans la liste des arguments. |
Sub test()
var_test = WorksheetFunction.CountBlank(Range("A1:D8"))
MsgBox var_test
End Sub
Cours VBA : créer une fonction personnalisée
Pour cet exemple, nous allons créer une fonction SI personnalisée utilisable sur une feuille de calcul comme n'importe quelle autre fonction.
Pour afficher une valeur (B2) si une cellule (C2) contient une valeur ("OUI"), nous pouvons utiliser la fonction SI avec la formule
=SI(C2="OUI";B2;0)
:=SI(C2 a un fond vert;B2;0)
que nous écrirons comme ceci : =SI_VERT(C2;B2)
:Développer la fonction personnalisée
Commencez par créer votre fonction :Function SI_VERT(paye As Range, montant)
End Function
paye As Range
: la cellule à testermontant
: la valeur à entrer si VRAI
Dans le cas présent, si le test est FAUX, la valeur sera 0 à chaque fois, il est donc inutile d'avoir un argument pour cela.
Pour vérifier si la couleur est correcte, vous pouvez utiliser une
cellule contenant la bonne couleur comme point de comparaison :Function SI_VERT(paye As Range, montant)
couleur = Sheets("Feuil1").Range("K1").Interior.color
End Function
Function SI_VERT(paye As Range, montant)
couleur = 5296274 'Vert
End Function
Sub test_color()
MsgBox ActiveCell.Interior.color
End Sub
Function SI_VERT(paye As Range, montant)
Application.Volatile
couleur = 5296274 'Vert
If paye.Interior.color = couleur Then 'Si VRAI
SI_VERT = montant
Else 'Si FAUX
SI_VERT = 0
End If
End Function
Application.Volatile indique que la fonction est volatile (comme c'est le cas pour la fonction SI), ce qui signifie qu'elle doit être recalculée à chaque changement de valeur. Par exemple, si vous modifiez l'un des montants (ou n'importe quelle autre cellule), la fonction est recalculée est affichera le bon montant.
En revanche, la modification de la couleur de fond ne déclenche pas cette mise à jour. Pour recalculer les valeurs sans attendre, vous pouvez par exemple appuyer sur "Delete" en sélectionnant une cellule vide ou ajouter un bouton "Actualiser" pour tout recalculer d'un clic :
Sub actualiser()
Application.Calculate
End Sub
Compléments
Une autre manière d'écrire cette même fonction :Function SI_VERT(paye As Range, montant)
Application.Volatile
SI_VERT = 0 'Si FAUX
If paye.Interior.color = 5296274 Then SI_VERT = montant 'Si VRAI
End Function
Aucun commentaire:
Enregistrer un commentaire