IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

pijaku

Utilisation du classeur Personal pour disposer, dans tous vos classeurs, de vos Fonctions, Sub et Classes

Note : 2 votes pour une moyenne de 1,00.
par , 14/09/2018 à 15h23 (341 Affichages)
_______________________________________________________________________________________________________


Bonjour,

Ayant découvert ceci récemment, je voulais vous en faire un petit résumé en retour...

L'intérêt?
Pouvoir disposer, dans tous vos classeurs, de vos fonctions, procédures et classes favorites!

Comme beaucoup d'entres vous, j'utilises le classeur personal pour stocker des procédures et des fonctions VBA utiles.
Pour appeler ces procédures et fonctions depuis un classeur, ce n'est pas toujours aisé.

Voici les différents processus.

  1. Appeler une procédure :
    Tout simplement en utilisant Run ou Application.Run.
    En exemple, pour appeler la procédure nommée Macro1, située dans le classeur Personal.xlsb :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "Personal.xlsb!Macro1"

    Si la procédure Macro1 est une procédure paramétrée, on passera les paramètres (max 30 arguments) comme ceci :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "Personal.xlsb!Macro1", Arg1, Arg2

    Remarques : (extrait de l'aide VBA rubrique Application.Run, méthode)
    Vous ne pouvez pas utiliser d'arguments nommés avec cette méthode. Ils doivent être transmis par position.
    La méthode Run renvoie ce que la macro exécutée renvoie.


  2. Appeler une fonction :
    Un peu plus délicat...
    Il nous faut, tout comme pour n'importe qu'elle fonction d'une DLL, référencer le classeur personal.
    Son nom, par défaut, est VBAProject. Or il s'avère que tout autre classeur possède son propre VBAProject.
    En premier lieu, nous allons changer le nom du VBAProject du classeur personal.
    Cliquez donc sur VBAProject (PERSONAL.XLSB) et modifiez le nom dans la fenêtre propriétés.
    A titre personnel, j'ai choisit VBAProjectPersonal.
    Dans le classeur depuis lequel vous souhaitez appeler une fonction de personal, ajoutez la référence :
    Outils/Références... Cocher VBAProjectPersonal (ou le nom que vous avez choisi).

    Vous pouvez maintenant appeler vos fonctions de la sorte :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim B As Boolean
       B = VBAProjectPersonal.FeuilleExist("Classeur1", "Feuil1")
    ou plus simplement encore :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim B As Boolean
       B = FeuilleExist("Classeur1", "Feuil1")

    Remarque :
    Contrairement aux procédures (Sub) qui peuvent être Private, les fonctions (Function), au sein du classeur personal, doivent être Public pour être appelées depuis un autre classeur.


  3. Les modules de classe :
    Sources : https://support.microsoft.com/en-us/help/555159

    Nous allons créer, dans le classeur Personal.xlsb, une classe nommée ClassPersonne et y placerons ce code :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim clsNom As String
     
    Property Get Nom() As String
       Nom = clsNom
    End Property
     
    Property Let Nom(N As String)
       clsNom = N
    End Property

    Très important : régler la propriété Instancing de votre Classe sur : 2- PublicNotCreatable.


    Dans un module standard de votre classeur personal, vous allez créer cette fonction :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function New_Classe() As ClassPersonne
       Set New_Classe = New ClassPersonne
    End Function

    Dans le classeur depuis lequel vous souhaitez appeler une Classe de personal, ajoutez la référence :
    Outils/Références... Cocher VBAProjectPersonal (ou le nom que vous avez choisi cf 2. plus haut).
    Vous pouvez désormais utiliser votre classe, située dans votre classeur personal, depuis n'importe quel classeur, comme ceci par exemple :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Demo()
    Dim Personne As VBAProjectPersonal.ClassPersonne
    'ou Dim Personne As ClassPersonne
       Set Personne = VBAProjectPersonal.New_Classe
       ' ou Set Personne = New_Classe
       Personne.Nom = "TOTO"
       MsgBox Personne.Nom
    End Sub


Je n'ai rien inventé, juste transmis le résumé de mes lectures.

Bonne journée.

Envoyer le billet « Utilisation du classeur Personal pour disposer, dans tous vos classeurs, de vos Fonctions, Sub et Classes » dans le blog Viadeo Envoyer le billet « Utilisation du classeur Personal pour disposer, dans tous vos classeurs, de vos Fonctions, Sub et Classes » dans le blog Twitter Envoyer le billet « Utilisation du classeur Personal pour disposer, dans tous vos classeurs, de vos Fonctions, Sub et Classes » dans le blog Google Envoyer le billet « Utilisation du classeur Personal pour disposer, dans tous vos classeurs, de vos Fonctions, Sub et Classes » dans le blog Facebook Envoyer le billet « Utilisation du classeur Personal pour disposer, dans tous vos classeurs, de vos Fonctions, Sub et Classes » dans le blog Digg Envoyer le billet « Utilisation du classeur Personal pour disposer, dans tous vos classeurs, de vos Fonctions, Sub et Classes » dans le blog Delicious Envoyer le billet « Utilisation du classeur Personal pour disposer, dans tous vos classeurs, de vos Fonctions, Sub et Classes » dans le blog MySpace Envoyer le billet « Utilisation du classeur Personal pour disposer, dans tous vos classeurs, de vos Fonctions, Sub et Classes » dans le blog Yahoo

Mis à jour 10/11/2018 à 15h55 par LittleWhite (Coloration du code)

Tags: vba excel
Catégories
Sans catégorie

Commentaires