CathyAstuce

VBA

GEMCCAP CONSEIL INFORMATIQUE BUREAUTIQUE
Formation - Conception Sites Internet
Applications Informatiques Personnalisées
Communauté partenaire Microsoft

PROCÉDURES ET FONCTIONS

  Procédures   Fonctions  Appeler
  Une procédure Une fonction 

Exécuter  
  Dans la fenêtre Exécution Une procédure
Une fonction 


Pour essayer les lignes de code indiquées ci-dessous, vous devez tout d'abord ouvrir Excel, ouvrir l'environnement VB (Outils/Macros/Visual Basic Editor), puis :

  • Menu Insertion/Module.
  • Écrivez ou collez le code dans ce module.
  • Cliquez n'importe où à l'intérieur de ce code
  • Exécutez le code en cliquant sur le bouton ou en appuyant sur la touche F5.
  • Vérifiez le résultat dans le classeur actif.

Remonter I. Procédures

Une procédure Sub est une série d'instructions écrites en VB, elles sont délimitées par les instructions Sub et End Sub. Elle exécute des actions mais ne renvoie pas de valeurs. Une procédure Sub peut recevoir des arguments tels que des constantes, des variables ou des expressions passées par la procédure appelante, ces arguments sont mis entre parenthèse après l'instruction Sub et son nom. Si une procédure Sub n'a pas d'argument, la paire de parenthèses est vide mais obligatoire. Pour les exemples suivants,  tapez une valeur et mettez en forme une cellule puis sélectionnez-la, ensuite tapez le code indiqué dans une feuille module :

  • Sans arguments, la procédure copie la cellule active et la copie 1 ligne vers le bas et 1 colonne vers la droite, puis sélectionne cette dernière :
    Sub Copie_Decale()
          ActiveCell.Copy ActiveCell.Offset(1, 1)
          ActiveCell.Offset(1, 1).Select
    End Sub
  • Avec arguments, la procédure fonctionne de la même manière, mais on lui précise sur quelle cellule elle va travailler.
    Sub Copie_Decale_bis(AdressePlage As String)
    Dim UnePlage As Range

         Set UnePlage = Range(AdressePlage)
         UnePlage.Copy UnePlage.Offset(2, 2)
         UnePlage.Offset(2, 2).select
    End Sub

    Pour exécuter cette procédure, tapez Copie_Decale_bis("A2") dans la fenêtre Exécution puis appuyez sur Entrée, remplacez éventuellement A2 par l'adresse de votre cellule.

Remonter II. Fonctions

Une procédure Function est une série d'instructions écrites en VB, elles sont délimitées par les instructions Function et End Function . Elle exécute des actions et renvoie une valeur. Elle peut recevoir des arguments tels que des constantes, des variables ou des expressions passées par la procédure appelante, ces arguments sont mis entre parenthèse après l'instruction Function et son nom. Si une procédure Function n'a pas d'argument, la paire de parenthèses est vide mais obligatoire.
Cette procédure est communément appelé fonction car elle renvoie une valeur, il est préférable d'indiquer quel type de valeur elle renvoie dans l'instruction Function. Pour renvoyer cette valeur, vous devez la lui affecter à son nom dans une ou plusieurs instructions.
Pour les exemples suivants,  tapez une valeur dans une cellule puis sélectionnez-la, ensuite tapez le code indiqué dans une feuille module :

  • Sans arguments, la fonction renvoie le code de la couleur de fond de la cellule active :
    Public Function Code_Couleur() As String
      Code_Couleur = ActiveCell.Interior.ColorIndex
      Code_Couleur = "La couleur de la cellule active est : " & Code_Couleur
    End Function

    Pour exécuter cette procédure, tapez Range("B1")=Code_Couleur() dans la fenêtre Exécution, puis appuyez sur Entrée.
  • Avec arguments, la procédure fonctionne de la même manière, mais on lui précise sur quelle cellule elle doit lire la couleur de fond :
    Public Function Code_Couleur_Bis(AdressePlage As String) As String
      Dim UnePlage As Range

      Set UnePlage = Range(AdressePlage)
      Code_Couleur_Bis = UnePlage.Interior.ColorIndex
      Code_Couleur_Bis = "La couleur de la cellule " & AdressePlage & " est : " & Code_Couleur_Bis
    End Function

    Pour exécuter cette procédure, tapez range("B3")=Code_Couleur_Bis("A2") dans la fenêtre Exécution, puis appuyez sur Entrée, remplacez éventuellement A2 par l'adresse de votre cellule.

Remonter III. Appeler 

Remonter III.1. Une procédure

Pour appeler une procédure, vous utilisez l'instruction Call: tapez Call, un espace puis son nom, si elle a un ou des arguments, tapez également un espace, puis les arguments séparés par une virgule, ces derniers doivent être dans l'ordre. Vous pouvez omettre Call. En utilisant nos exemples ci-dessus, vous écrivez :
Call Copie_Decale
Call Copie_Decale_bis "A2"

Ou
Copie_Decale
Copie_Decale_bis "A2"

Remonter III.2. Une fonction

Pour appeler une fonction, vous affectez la valeur de la fonction à une variable , à une autre fonction ou à une propriété d'objet. Les arguments sont inscrits dans l'ordre, séparés par une virgule et entre parenthèse. Si la valeur de la fonction ne vous intéresse pas, appelez-la comme une procédure. Avec nos exemples, vous écrivez :
Range("B2")=Code_Couleur()
MsgBox(Code_Couleur_Bis("A2"))

Cette dernière ligne affiche dans une boîte message la valeur renvoyée par la fonction Code_Couleur_Bis, essayez-la en l'écrivant dans la fenêtre Exécution puis appuyez sur Entrée.

AccueilDébut de la page