Les Fonctions en VBA – Part 2.1.3

Les Fonctions en VBA
Les Fonctions en VBA

Les fonctions en VBA : le couteau suisse du codeur Excel !

Salut les as du clavier ! Aujourd’hui, on va explorer le monde fascinant des fonctions en VBA. Ces petites merveilles sont comme les super-héros de votre code : elles arrivent, font leur boulot, et repartent en vous laissant un joli résultat. Alors, prêts à devenir des maîtres des fonctions ? C’est parti !

Qu’est-ce qu’une fonction en VBA ?

Imaginez une fonction comme une machine à transformer. Vous lui donnez quelque chose (ou rien du tout), elle fait sa petite cuisine interne, et hop ! Elle vous sort un résultat. C’est magique, non ?

En VBA, une fonction, c’est un bout de code réutilisable qui fait un truc spécifique et qui vous renvoie une valeur. C’est comme si vous aviez un mini-robot dans votre code qui fait une tâche précise quand vous l’appelez.

Les types de fonctions en VBA

En VBA, on a deux grandes familles de fonctions :

  1. Les fonctions intégrées : Ce sont les fonctions déjà présentes dans VBA. Elles sont prêtes à l’emploi, comme un plat surgelé. Vous les utilisez, et basta !
  2. Les fonctions personnalisées : C’est quand vous mettez votre toque de chef et que vous créez vos propres fonctions. C’est comme inventer votre propre recette de cuisine !

Les fonctions intégrées : vos meilleures amies

VBA a plein de fonctions intégrées super utiles. Voici quelques-unes des plus cool :

  • MsgBox : Pour afficher un message à l’utilisateur. C’est comme crier « Coucou ! » à votre écran.
  • InputBox : Pour demander une info à l’utilisateur. Comme demander « T’es sûr de vouloir supprimer ça ? »
  • IsNumeric : Pour vérifier si quelque chose est un nombre. Pratique pour éviter les bugs !
  • Left, Right, Mid : Pour jouer avec les chaînes de caractères. C’est comme découper une phrase avec des ciseaux magiques.
  • Date, Time : Pour travailler avec les dates et les heures. Parce que le temps, c’est de l’argent !

Exemple pour tester :

Sub TestFonctionsIntegrees()
    Dim texte As String
    Dim nombre As Variant

    ' MsgBox pour afficher un message
    MsgBox "Salut, bienvenue dans le monde merveilleux des fonctions VBA !"

    ' InputBox pour demander une entrée à l'utilisateur
    texte = InputBox("Entrez votre nom :")

    ' IsNumeric pour vérifier si c'est un nombre
    nombre = InputBox("Entrez votre âge :")
    If IsNumeric(nombre) Then
        MsgBox "Votre âge est bien un nombre : " & nombre
    Else
        MsgBox "Hé, l'âge doit être un nombre !"
    End If

    ' Left, Right, Mid pour manipuler des chaînes
    MsgBox "Les 3 premières lettres de votre nom : " & Left(texte, 3)
    MsgBox "Les 3 dernières lettres de votre nom : " & Right(texte, 3)
    MsgBox "Le milieu de votre nom : " & Mid(texte, Len(texte) / 2, 1)

    ' Date et Time
    MsgBox "Aujourd'hui nous sommes le " & Date & " et il est " & Time
End Sub

Les fonctions personnalisées : devenez un créateur de génie !

Maintenant, passons aux choses sérieuses : créer vos propres fonctions. C’est comme inventer votre propre langage secret !

Voici comment on crée une fonction personnalisée :

Function NomDeMaFonction(parametre1 As Type, parametre2 As Type) As TypeDeRetour
    ' Le code de votre fonction ici
    NomDeMaFonction = ' La valeur que vous voulez renvoyer
End Function

Exemple d’une fonction personnalisée :

Function CalculerIMC(poids As Double, taille As Double) As Double
    ' Calcul de l'IMC (Indice de Masse Corporelle)
    CalculerIMC = poids / (taille ^ 2)
End Function

Sub TestFonctionPersonnalisee()
    Dim poids As Double, taille As Double, imc As Double

    poids = InputBox("Entrez votre poids en kg :")
    taille = InputBox("Entrez votre taille en mètres :")

    imc = CalculerIMC(poids, taille)

    MsgBox "Votre IMC est de : " & Round(imc, 2)
End Sub
Les Fonctions en VBA
Les Fonctions en VBA

Les astuces secrètes des fonctions VBA

Voici quelques trucs et astuces que même votre grand-mère qui code ne connaît pas :

  1. Fonctions récursives : Une fonction qui s’appelle elle-même. C’est comme un miroir qui se reflète dans un miroir !
Function Factorielle(n As Integer) As Long
    If n <= 1 Then
        Factorielle = 1
    Else
        Factorielle = n * Factorielle(n - 1)
    End If
End Function
  1. Fonctions avec un nombre variable de paramètres : Pour quand vous ne savez pas combien d’amis vont venir à votre fête !
Function Somme(ParamArray nombres() As Variant) As Double
    Dim i As Integer
    Somme = 0
    For i = LBound(nombres) To UBound(nombres)
        Somme = Somme + nombres(i)
    Next i
End Function

Sub TestSomme()
    Debug.Print Somme(1, 2, 3, 4, 5)  ' Affiche 15
    Debug.Print Somme(10, 20, 30)     ' Affiche 60
End Sub
  1. Fonctions qui renvoient des tableaux : Pour quand vous voulez renvoyer plein de trucs d’un coup !
Function GenererFibonacci(n As Integer) As Variant
    Dim i As Integer
    Dim fib() As Long
    ReDim fib(1 To n)

    fib(1) = 0
    fib(2) = 1

    For i = 3 To n
        fib(i) = fib(i - 1) + fib(i - 2)
    Next i

    GenererFibonacci = fib
End Function

Sub TestFibonacci()
    Dim resultat As Variant
    Dim i As Integer

    resultat = GenererFibonacci(10)

    For i = LBound(resultat) To UBound(resultat)
        Debug.Print resultat(i)
    Next i
End Sub

Conclusion : devenez le maître des fonctions !

Voilà, vous êtes maintenant incollable sur les fonctions en VBA ! Avec ces super-pouvoirs, vous allez pouvoir créer des macros de ouf qui vont épater tous vos collègues. N’oubliez pas : la pratique fait le maître. Alors amusez-vous, expérimentez, et surtout, n’ayez pas peur de faire des erreurs. C’est comme ça qu’on apprend !

Pour aller plus loin et devenir un vrai ninja du VBA, jetez un œil à notre article sur les bases de VBA : Découvrir VBA. Vous y trouverez plein d’autres astuces pour devenir un pro du code !

Allez, à vos claviers, et que la force du code soit avec vous !

Comments

No comments yet. Why don’t you start the discussion?

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *