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 d'Excel.

Pour afficher la valeur de la colonne B si la cellule de la colonne C contient OUI, nous pouvons utiliser la formule =SI(C2="OUI";B2;0) :


fonction si creer personnalisee

L'objectif ici est de créer une fonction capable de faire cela =SI(C2 a un fond vert;B2;0) que nous écrirons comme ceci : =SI_VERT(C2;B2) :

fonction si couleur creer personnalisee

Développer la fonction personnalisée

Commencez par créer votre fonction :

Function SI_VERT(celluleCouleur As Range, celluleValeur As Range)
    
End Function

Les arguments :

Dans le cas présent, si le test est FAUX, la valeur sera 0 à chaque fois, c'est pour cela qu'un 3e argument n'a pas été ajouté.

Pour vérifier si la couleur est correcte, vous pouvez utiliser une cellule contenant la bonne couleur comme point de comparaison :

Function SI_VERT(celluleCouleur As Range, celluleValeur As Range)
	
    couleur = Sheets("Feuil1").Range("K1").Interior.color

End Function

Mais pour éviter de dépendre d'une cellule, nous allons utiliser ici directement le numéro de la couleur qui nous intéresse :

Function SI_VERT(celluleCouleur As Range, celluleValeur As Range)
	
    couleur = 5296274 'Vert

End Function

Pour connaître le numéro de couleur de fond d'une cellule, sélectionnez la cellule et exécutez cette macro :

Sub test()

    MsgBox ActiveCell.Interior.color

End Sub
no de couleur creer fonction personnalisee

Il ne reste plus qu'à tester la couleur avec un If :

Function SI_VERT(celluleCouleur As Range, celluleValeur As Range)
    
    Application.Volatile
    
    If celluleCouleur.Interior.color = 5296274 Then 'Si VRAI
        SI_VERT = celluleValeur
    Else 'Si FAUX
        SI_VERT = 0
    End If
    
End Function

La fonction est maintenant prête à l'emploi.

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 seule 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
fonction si vert creer personnalisee

Vous pouvez télécharger le fichier qui a servi d'exemple : fonction_si_vert.xlsm

Fin

Le cours VBA se termine ici, en espérant qu'il vous aidera dans vos futurs développements.

Si vous avez apprécié ce cours, vous avez la possibilité de télécharger les PDF de la totalité de ce cours. Il s'agit d'une option payante complètement facultative qui contribue à soutenir le site et le développement de nouveaux contenus.

Pour aller plus loin, vous trouverez d'autres exemples de codes VBA dans Astuces VBA et des exemples d'utilisations des fonctions VBA dans Fonctions VBA.

Une formation pratique en vidéo pour apprendre à créer une application de gestion en VBA est également disponible.

Pour toute question, n'hésitez pas à utiliser le forum qui est là pour vous aider en cas de problème.