Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Comment écrit-on une fonction de feuille de calcul ?
auteur : Bidou
Il s'agit d'une fonction normale.Par exemple
Vba
 
Function InvChaine(Cellule As Range) As Variant

Dim MaChaine As String, cmpt As Long

If Len(Cellule.Value) = 0 Then
    InvChaine = CVErr(xlErrValue)
Else
    MaChaine = CStr(Cellule.Value)
    For cmpt = Len(MaChaine) To 1 Step -1
        InvChaine = InvChaine & Mid(MaChaine, cmpt, 1)
    Next cmpt
End If

End Function

Si dans votre feuille vous écrivez la formule =invchaine(E2), la cellule contiendra la chaine retournée, ou #VALEUR.



Comment définir une donnée par défaut pour un argument de procédure type Optional ?
auteur : SilkyRoad
C'est possible en utilisant la syntaxe:

Optional [NomVariable] As [TypeVariable] = [Donnée par défaut]

Vba

Sub Test()
    'Renvoie tous les arguments spécifiés
    MsgBox MaProcedure(5, "fifi")
    'Renvoie 5 et "mimi" car l'argument Optional (strPrenom) n'est pas précisé
    MsgBox MaProcedure(5)
End Sub


Function MaProcedure(lngValeur As Long, Optional strPrenom As String = "mimi")
    MaProcedure = lngValeur & vbCrLf & strPrenom
End Function

Comment identifier la cellule qui a appelé la fonction ?
auteur : SilkyRoad
Utilisez la propriété Application.Caller dans votre fonction personnelle. Celle-ci renvoie un objet Range correspondant à la cellule qui contient la formule d'appel.

Ce premier exemple renvoie les coordonnées de la cellule qui a déclenché la fonction:

Vba

Cible = Application.Caller.Address



La fonction suivante identifie le nom de la feuille qui contient la formule. Elle peut aussi servir à afficher le nom de la feuille active dans une cellule :

Vba

Function FeuilleActive() As String
    Application.Volatile
    FeuilleActive = Application.Caller.Worksheet.Name
End Function


Et vous insérez dans une cellule:
=FeuilleActive()



Est-il possible d'ajouter une description pour une fonction personnalisée et de la placer dans une catégorie particulière ?
auteur : SilkyRoad
Dans l'éditeur de macros:
Utilisez le raccourci clavier F2 pour afficher l'explorateur d'objets.
Sélectionnez "VBAproject" dans le menu déroulant.
Votre fonction apparait dans la fenêtre de droite.
Faites un clic droit.
Sélectionnez l'option "Propriétés".
Saisissez la description pour la fonction.
Cliquez sur le bouton OK pour valider.


Une autre solution, en passant pas la boîte de dialogue des macros:
Menu Outils
Macro
Macros
Dans le champ "Nom de la macro", saisissez le nom complet de la fonction.
Le bouton " Options" est alors accessible pour ajouter la description.
Cliquez sur le bouton OK pour valider.


Cette action peut aussi être réalisée par macro:
Cet exemple ajoute une description et place la fonction dans la catégorie 5 (Recherche et matrices).
La macro n'a besoin d'être lancée qu'une seule fois. Les paramètres seront ensuite définitivement enregistrés dans l'application.

Vba

Application.MacroOptions Macro:="NomFonction", _
    Description:="La description pour ma fonction personnalisée.", Category:=5


Liste des catégories Excel2007:
1 Finances
2 Date Heure
3 Math Trigo
4 Statistiques
5 Recherche Matrices
6 Base de données
7 Texte
8 Logique
9 Information
10 Commandes
11 Personnalisation
12 Contrôle de macros
13 DDE/Externe
14 Personnalisées
15 Ingénierie
16 Cube



Comment passer un nombre d'arguments variable dans une fonction ?
auteur : SilkyRoad
Utilisez ParamArray.
Les tableaux de paramètres permettent de passer un tableau d'arguments à une procédure. Le nombre d'éléments indiqué peut être variable.

ParamArray:
     * Doit obligatoirement être déclaré en type Variant.
     * Ne peut pas coexister avec des arguments Optional.
     * Doit être placé en dernière position dans la liste des arguments.
     * Les arguments ne sont pas facultatifs.
     * Chaque argument peut être d'un type de données différent.
     * Le nombre d'arguments n'est pas limité.
     * L'indice inférieur du tableau est toujours 0.

Lorsque l'appel de procédure est effectué, chaque argument fourni dans l'appel devient un élément indexé du tableau.

Un exemple qui supprime une série de caractères dans une chaîne:

Vba

Option Explicit

Sub Test()
    Dim strChaine As String
    
    strChaine = "m!im::i;"
    'La procédure va supprimer les caractères ; : !
    'dans la variable "Chaine"
    strChaine = SupprimeCaracteres(strChaine, ";", ":", "!")
    MsgBox strChaine
End Sub
 
Function SupprimeCaracteres(LeTexte As String, ParamArray A_Supprimer1())
    Dim i As Integer
    'Boucle sur les éléments du tableau
    For i = 0 To UBound(A_Supprimer1())
        'Supprime les caractères spécifiés
        LeTexte = Replace(LeTexte, A_Supprimer1(i), "")
    Next i
    SupprimeCaracteres = LeTexte
End Function



Si vous utilisez ParamArray dans une fonction, ajoutez le chiffre 1 en fin de nom du paramètre. Ainsi l'assistant de fonctions Excel incrémentera automatiquement chaque nouvel élément indiqué par l'utilisateur.





Ou trouver des informations générales sur la création des fonctions complémentaires ?
auteur : SilkyRoad
Ce tutoriel présente la création et l'utilisation des fonctions complémentaires dans Excel:

Les fonctions personnelles dans Excel.



precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com