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) :


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

Développer la fonction personnalisée

Commencez par créer votre fonction :

Function SI_VERT(paye As Range, montant)
   
End Function

Les arguments :

  • paye As Range : la cellule à tester
  • montant : 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

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

Function SI_VERT(paye As Range, montant)

    couleur = 5296274 'Vert

End Function

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

Sub test_color()
    MsgBox ActiveCell.Interior.color
End Sub
no de couleur - creer fonction personnalisee

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

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

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 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 fonction personnalisee

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

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

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 !

Télécharger ce cours au format PDF