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

Poursuivre la formation VBA

Il est maintenant temps de passer à la pratique ...

Mais vous vous demandez probablement : « Comment utiliser toutes ces connaissances que je viens d'apprendre pour créer l'application dont j'ai besoin ? ».

question creer fonction personnalisee

La formation VBA avancée est l'étape suivante qui vous enseignera tout ce que vous devez savoir pour pouvoir créer l'application dont vous avez besoin, même si à l'heure actuelle cela vous paraît être encore un défi insurmontable.

Que votre objectif soit de créer une application de gestion de plannings, de comptes, de clients, un outil de facturation, de devis, etc, vous acquerrez au cours de cette formation des connaissances pratiques que vous pourrez ensuite utiliser pour créer vos propres applications de gestion.

Et la bonne nouvelle est que cette formation pratique en vidéo peut maintenant être suivie gratuitement jusqu'à la fin (comme ce cours VBA que vous venez de terminer) alors qu'auparavant cette formation était payante !