IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Lister les procédures d'un classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 863
    Points : 583
    Points
    583
    Par défaut Lister les procédures d'un classeur
    Bonjour,

    Après avoir activé la référence Microsoft Visual Basic for Applications Extensibility 5.3. j'ai voulu testé le code trouvé dans http://silkyroad.developpez.com/VBA/VisualBasicEditor/ pour lister les composants d'un classeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub boucleVBComponents_V01()
        Dim i As Integer
     
        For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count
            Debug.Print ActiveWorkbook.VBProject.VBComponents(i).Name
        Next
    End Sub

    mais quand je teste cette procédure j'ai un message d'erreur 1004 sur la ligne "for i)=...." :

    La méthode 'VBproject' de l'objet '_Workbook' a échoué

    D'où peut venir l'erreur?

    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Quelle est votre version d'Office.

    Avec Office 2000 j'ai simplement la ligne :

    Microsoft Visual Basic for Applications
    qui est cochée et cela fonctionne.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 863
    Points : 583
    Points
    583
    Par défaut
    Bonjour,

    C'est Excel 2003

  4. #4
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    2 pistes :

    1) as-tu bien tout lu ?

    La majeur partie des procédures utilisées nécessite d'activer la référence Microsoft Visual Basic for Applications Extensibility 5.3.

    Dans l'éditeur de macros (Alt+F11):
    Menu Outils
    Références
    Cochez la ligne "Microsoft Visual Basic for Applications Extensibility 5.3"
    Cliquez sur "OK" pour valider.
    2) dans Excel : Outils, Macro, sécurité, onglet Editeurs approuvés, cocher "faire condfiance au projet vb"

    cordialement,

    Didier

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 863
    Points : 583
    Points
    583
    Par défaut
    J'avais bien lu le point 1 et ajouté cette référence comme précisé dans mon post mais je n'ai pas vu le point 2
    En cochant ça marche, mais alors si mon classeur est ouvert sur un autre poste, les procédures vont-elles fonctionner?

    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Non si :

    -la référence n'a pas été cochée.
    C'est faisable par Macro, mais attention en fonction de la version comme on l'a vu avec Office 2000, le titre peut être différent, est-ce que le nom du fichier est le même ?

    -non si les paramètres d'acceptation des macros n'ont pas été modifiés.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonsoir

    La procédure que tu veux utiliser liste uniquement les composants.

    Pour lister le nom des procédures (comme indiqué dans le titre de la discussion) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    'Nécessite d'activer la référence
        '"Visual basic For Application Extensibility 5.3"
    Dim Ajout As Integer
    Dim VBCmp As VBComponent
    Dim cdMod As CodeModule
    Dim Wb As Workbook
    Dim Debut As Long
     
    'Indiquez le nom du classeur ouvert
    'Set Wb = ThisWorkbook
    Set Wb = Workbooks("Classeur1.xls")
    Ajout = 1
     
    For Each VBCmp In Wb.VBProject.VBComponents
        Set cdMod = VBCmp.CodeModule
     
        With cdMod
            Debut = .CountOfDeclarationLines + 1
            Do Until Debut >= .CountOfLines
                Debug.Print .ProcOfLine(Debut, vbext_pk_Proc)
                Debut = Debut + _
                    .ProcCountLines(.ProcOfLine(Debut, _
                    vbext_pk_Proc), vbext_pk_Proc)
                Ajout = Ajout + 1
            Loop
        End With
     
    Next VBCmp


    bonne soirée
    michel

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 863
    Points : 583
    Points
    583
    Par défaut
    Merci
    L'idéal serait d'avoir à la fois le nom du module et celui des procédures.
    Par exemple dans une feuille excel 1 colonne pour le nom et 1 colonne pour la procédure (ca je sais le faire lol maintenant que tu m'as montré la piste)

    Y-a-t-il un moyen de connaître la date de dernière modif d'un module?

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    rebonsoir

    L'idéal serait d'avoir à la fois le nom du module et celui des procédures.
    Utilise

    pour récupérer le nom du module


    bonne soirée
    michel

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 863
    Points : 583
    Points
    583
    Par défaut
    oui je l'avais fait avant de te lire, merci

    et j'ai copié le tout dans une feuille excel que j'ai triée sur le module

    Merci encore

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 863
    Points : 583
    Points
    583
    Par défaut
    Comment pourrais-je ajouter dans une 3ème colonne la nature de la procédure? Sub ou Function?

    Merci

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonsoir

    Tu peux récupérer l'information en adaptant cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print .Lines(.ProcBodyLine(.ProcOfLine(Debut, vbext_pk_Proc), vbext_pk_Proc), 1)

    bonne soirée
    michel

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 863
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 863
    Points : 583
    Points
    583
    Par défaut
    Merci.... comment je ne comprends pas le code initial j'ai un peu de mal à l'adpater. en brut cela ne correspond pas aux 2 1eres lignes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/07/2014, 19h46
  2. lister les procédures stockées
    Par vince2005 dans le forum Administration
    Réponses: 7
    Dernier message: 31/12/2009, 00h14
  3. [WD14] Lister les procédures stockées d'une analyse
    Par Bowen dans le forum WinDev
    Réponses: 8
    Dernier message: 12/11/2009, 10h42
  4. Remplacer un mot dans toutes les procédures d'un classeur
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 46
    Dernier message: 20/11/2007, 23h07
  5. Lister les combobox d'un classeur
    Par windsor dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/10/2007, 20h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo