====== Premier code en VBA : fonction et procédure ====== Ouvrez l'éditeur de VBE (Visual Basic Editor) : * cliquez sur le bouton {{:dev:excelvba:excelvba_06.png|}} de l'onglet Développeur {{ :dev:excelvba:excelvba_07.png |}} * Puis insérez un nouveau module que vous appellerez DCG {{ :dev:excelvba:excelvba_08.png |}} ===== Créer votre première fonction ===== Vous allez créer dans le module DCG une fonction tva() qui va renvoyer la valeur 1.2 Dans VBE, saisissez le code suivant Public Function tva() tva = 1.2 End Function {{ :dev:excelvba:excelvba_09.png |}} Pour renvoyez une valeur, il suffit d'utiliser le **nom** de la fonction et de lui affecter une valeur : tva = 1.2 Pour utiliser cette nouvelle fonction, écrivez dans la cellule A1 de votre feuille =tva() ou utilisez-la dans une formule de calcul. {{ :dev:excelvba:excelvba_17.png |}} ===== Créer une fonction, avec des paramètres ===== Vos fonctions peuvent utiliser des paramètres. Ecrivez cette fonction **politesse()** et tester la. Public Function politesse(nom as string) politesse = "Bonjour " + nom End Function {{ :dev:excelvba:excelvba_10.png |}} La fonction apparaît comme une **fonction** d'Excel et puisqu'il y a un **paramètre**, **l'assistant** vous propose de sélectionner la **cellule** de la feuille qui contient la **valeur** du paramètre à utiliser. {{ :dev:excelvba:excelvba_18.png |}} ===== Les types de données les plus courants ===== Voici les types de données que vous pouvez utiliser avec VBA : * chaîne de caractères: string * réel : single * entier : integer * date : date * range : plage de cellule ===== Créer votre première procédure===== Créez la procédure info() qui affiche une boite de dialogue en utilisant la fonction politesse précédente. Sub info() Dim texte as String texte=politesse("Charles") MsgBox texte, vbInformation, "info" End Sub **Remarque** : la fonction **MsgBox** est utilisée pour afficher le résultat de la fonction **politesse()**. Pour exécuter cette procédure vous pouvez : * exécuter la procédure comme vous pouvez le faire avec une macro (bouton macro, sélectionner la procédure info et l'exécuter). * affecter la procédure info() à un bouton. Pour affecter la procédure à un bouton : * créez un bouton sur votre feuille en cliquant sur le bouton {{:dev:excelvba:excelvba_11.png|}} de l'onglet **Développeur** * utilisez l'outil **bouton** pour dessiner votre bouton * **associez** la procédure info() (la macro) à votre bouton. * **Renommez** votre bouton. {{ :dev:excelvba:excelvba_12.png?200 |}} Par défaut les procédures sont **publiques** et vous pouvez le mentionner explicitement ce qui définit l’étendue de son utilisation : Public Sub info() ... End Sub Le mot-clé **Private** indique que la procédure ne peut être appelée que par les procédures de son module. Private Sub info() ... End Sub ===== Appeler une procédure dans une fonction ou une autre procédure ===== L'appel d'une procédure se fait avec l'instruction **call**. Exemple de l'appel de la procédure info() par une autre procédure : Sub TestAppelInfo() Call info End Sub ===== Pour en savoir plus : Les procédures événementielles ===== La procédure précédente était une **procédure générale**, déclarée dans un module et appelée explicitement dans le code. Une **procédure événementielle** est associée à un événement d’un objet. Son nom est composé du nom de l’objet, suivi du caractère souligné "_" et du nom de l’événement (ex : Workbook_Open). L’appel d’une telle procédure est implicite, c’est-à-dire que la procédure est exécutée automatiquement lorsque l’événement associé se produit. ==== Retour au menu de Excel & VBA ==== [[dev:excelvba:accueil|Excel et VBA (Visual Basic pour Application)]]