Application pour la gestion de l'éditeur VBA et des extractions de code

Herdet

Nous a quitté
Repose en paix
Bonjour,
N'ayant pas trouvé dans l'éditeur VBA Excel de commandes pratiques pour extraire facilement en bloc les composants, les procédures et les lignes de code associées, je me suis décidé à créer de toute pièces, une application perso dont je viens de terminer les tests.
Elle est assez complète je pense, pour gérer et extraire tous les paramètres d'un projet VBA et interressera sûrement les développeurs VBA.
Je soumet donc l'appli jointe "RD_gestion editeur_VBA.xlsm", à votre appréciation avant peut être de déposer une demande au staff de XLD pour l'intégrer dans les téléchargements.

L'application Excel 2010 nécessite 2 actions dont une manuelle :
- chargement ( en principe automatique ) de la bibliothèque "Microsoft Visual Basic For Applications Extensibility 5.3"
- autorisation, manuelle de la modification du projet VBA "Accès approuvé au modèle d'objets du projet VBA" (existe depuis Excel 2007)

Les explications sont données dans la page d'accueil et il est conseillé avant tout de consulter la "Présentation...".
L'application travaille sur les classeurs ouverts et comporte toutes les fonctionnalités pour ouvrir d'autres classeurs.
Elle peut afficher les listes de composants, les listes de procédures, les codes associés, créer, dans un sous-répertoire spécifique à chaque projet VBA, les fichiers .txt correspondants ainsi que tous les fichiers sources .cls, .bas, .frm, .frx des composants.
Ces fichiers peuvent ensuite être ouverts avec Excel, NotePad ou mieux un éditeur de code très simple et efficace comme NotePad++
Les fichiers sources .cls, .bas, .frm, .frx peuvent être importés directement dans l'éditeur VBA par "Fichier" ou clic-droit puis "Importer un fichier.."

Dans l'attente de vos avis ...
Cordialement
Robert
 

Pièces jointes

  • RD_gestion editeur_VBA.zip
    690.8 KB · Affichages: 154

Misange

XLDnaute Barbatruc
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonsoir Robert

SUPERBE boulot ! (si tu veux que je le mette aussi sur excelabo tu me le dis).
Une petite critique : le formulaire est un peu trop petit. Les textes sur les boutons se rentrent un peu dedans et les résultats également ou bien ils ne sont pas visibles entièrement. Je ne sais pas si c'est un pb de résolution d'écran, de polices?..
En tous cas c'est vraiment impressionnant. Bravo !
 

Herdet

Nous a quitté
Repose en paix
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonsoir Robert

SUPERBE boulot ! (si tu veux que je le mette aussi sur excelabo tu me le dis).
Une petite critique : le formulaire est un peu trop petit. Les textes sur les boutons se rentrent un peu dedans et les résultats également ou bien ils ne sont pas visibles entièrement. Je ne sais pas si c'est un pb de résolution d'écran, de polices?..
En tous cas c'est vraiment impressionnant. Bravo !
Bonsoir Flo,
Merci pour ton appréciation de MVP Excel ... c'est très motivant pour d'autres applications à créer.
Je t'ai envoyé un message perso sur XLD pour suite à donner pour Excelabo.

C'est difficile de trouver la taille idéale d'une interface visible pour toutes les résolutions et tailles d'écrans.
J'ai conçu l'interface pour une définition d'écran de PC portable en 1600 x 900 qui me semblait un peu passe-partout Je vais faire une nouvelle version et passer la boite de dialogue de 626 x 384 pts à 700 x 400 et passer les polices de 8 à 9 pts.

Envoie-moi des copies d'écrans de cette boîte de dialogue sur mon email perso.

A bientôt
Robert
 

Herdet

Nous a quitté
Repose en paix
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonsoir,
Une nouvelle version avec boite de dialogue et polices plus grandes.

A+
Robert
 

Pièces jointes

  • RD_gestion editeur_VBA_V1-02.xlsm
    348.6 KB · Affichages: 126

Zdz16

XLDnaute Occasionnel
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonjour;

Attention, j'ai l'impression que le code n'est valable que pour un noyau 32 bit, car sur du 64 bits (Excel 2010), il y a des erreurs de compilation.

Par exemple la déclaration d'utilisation de shell32.dll

Cordialement
 

Misange

XLDnaute Barbatruc
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonjour
avec la V1.2 :
l'indice n'appartient pas à la sélection
T_LST_FichRecNonOuv(jj, 1) = T_LST_FichRecents(nn, 1)
ne sont ouverts que ton classeur et un classeur avec des macros

Une petite typo à corriger :
l'extraction des données obligeNT à... plutôt oblige :)
 

Herdet

Nous a quitté
Repose en paix
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonjour,
Le debogage va bon train.
Je suis sur des corrections concernant l'ouverture de fichiers .xls, .xlsm ... vides (!), avec ou sans macros et les fichiers récents qui sont introuvables.
Mon système : PC portable 15 ", Windows 7 Professionnel 64 bits et Office 2010 Professionnal Plus 32 bits

Je vais étudier les possibilités pour contourner ce problème de shell32.dll pour le 64 bits ou une autre solution sans shell.
A+
Robert
 

Zdz16

XLDnaute Occasionnel
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonjour Herdet;

A ma connaissance (Cela remonte à loin), il est possible de tester si le système utilise le 64 ou 32 via des tests conditionnels de compilation. Il me semble que vb (non vba) fournit cela. A voir si c'est possible en VBA.

Cordialement
 

kingfadhel

XLDnaute Impliqué
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Salut,
Lorsque j'ai ouvert le fichier deux messages se présentent, le deuxième message se montre sur click des boutons aussi.

message n° 1 :

Herdet1.jpg


message n° 2

Herdet2.PNG

Configuration: PC Portable HP 13" 1/4, Windows 7, Office 2007 Pro, 2 Go Ram
 

Herdet

Nous a quitté
Repose en paix
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Salut,
Lorsque j'ai ouvert le fichier deux messages se présentent, le deuxième message se montre sur click des boutons aussi.
message n° 1 :
Regarde la pièce jointe 289347
message n° 2
Regarde la pièce jointe 289348
Configuration: PC Portable HP 13" 1/4, Windows 7, Office 2007 Pro, 2 Go Ram
Bonjour,
Ce sont typiquement des erreurs de compatibilité Microsoft avec les librairies Excel non chargées à l'ouverture.
Malheureusement, c'est un gros point faible du VBA Excel de ne pas pouvoir charger lui même les librairies nécessaires si elles existent sur le PC.

Les libraires nécessaires sont les suivantes :

attachment.php


Pour l'utilisation des ListView et TreeView : Microsoft Windows Common Controls 6.0 (SP6)
Il est possible que la source du problème soit cette librairie : MSCOMCTL.OCX
En Windows 64bits le fichier est dans : C:\Windows\SysWOW64\MSCOMCTL.OCX
et en Windows 32 bits il est dans : C:\windows\system32\MSCOMCTL.OCX )

Essaie d'envoyer, une copie des librairies comme ci-dessus.
Pour cela, il faudrait d'abord désactiver les macros avant d'ouvrir l'application de manière à pouvoir afficher l'éditeur VBA et les références actives.
A+
Robert
 

Pièces jointes

  • References des librairies-1.JPG
    References des librairies-1.JPG
    61.5 KB · Affichages: 452

MJ13

XLDnaute Barbatruc
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonjour à tous

Au départ, j'avais des bugs. Mais en décochant la référence manquante (Word14 , il me semble) , j'ai pu lancer le Userform.

Bravo Robert :), belle démo :eek:.
 

Herdet

Nous a quitté
Repose en paix
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonjour à tous

Au départ, j'avais des bugs. Mais en décochant la référence manquante (Word14 , il me semble) , j'ai pu lancer le Userform.

Bravo Robert :), belle démo :eek:.
Bonjour,
Exact pour Word, c'était un résidu de test d'export très vite abandonné malheureusement les bibliothèques inutilisées restent cochées (comme certaines procédures et variables inutiles) qui montrent encore les points faibles du VBA.

Ci-jointe la dernière version V1-03 modifiée qui accepte les fichiers vides, sans code ou avec codes, testée pour les fichiers récents introuvables.

Pour répondre à Zdz16 au sujet de shell32.dll, j'ai supprimé cette méthode au profit du FileSystemObject bien plus efficace et qui suit mieux les évolutions de Windows.
Ceci dit aucune application n'est à l'abri d'un bug,... ça se saurait !

Merci pour les retours de tests
Robert
 

Pièces jointes

  • RD_gestion editeur_VBA_V1-03.xlsm
    369.9 KB · Affichages: 79

Modeste geedee

XLDnaute Barbatruc
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonsour®
Bonjour,
Ce sont typiquement des erreurs de compatibilité Microsoft avec les librairies Excel non chargées à l'ouverture.
Malheureusement, c'est un gros point faible du VBA Excel de ne pas pouvoir charger lui même les librairies nécessaires si elles existent sur le PC.

Pas si tu ajoutes dans la procédure Workbook_Open du
ThisWorkbook, une ligne ressemblant à celle ci-dessous en utilisant la valeur
des propriétés affichées dans la feuille de calcul pour cet référence.

Par exemple, si ce contrôle apparaît dans un formulaire, l'ajout
de la référence permettra d'exécuter le code, mais cela n'ajoutera
pas le contrôle dans la boîte à outils du formulaire. Pour cela, il n'y
a pas de code VBA qui fait cela. Mais ton programme fonctionnera
rondement...
d'après une intervention de MichD (MPFE)


ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{00000200-0000-0010-8000-00AA006D2EA4}", major:=2, minor:=0

pour connaitre les GuId Utilisés sur ta machine :

VB:
Sub AfficherLesGuids_Propriétés() 
Dim X As Integer, Sh As Worksheet 
Dim NbRef As Integer 

Set Sh = Worksheets.Add(After:=Sheets(Sheets.Count)) 

On Error Resume Next 
With Sh 
    .Name = "GUIDS" 
    .Cells(1, 1) = "Nom de la bibliothèque" 
    'Son appellation dans la fenêtre Reférences 
    .Cells(1, 2) = "Description" 
    .Cells(1, 3) = "Guid" 
    .Cells(1, 4) = "Major" 
    .Cells(1, 5) = "Minor" 
    .Cells(1, 6) = "Chemin complet" 
    With .Range("A1:F1") 
        .Font.Bold = True 
        .Font.Size = 12 
    End With 
    With Sh.Parent.VBProject.References 
        NbRef = .Count 
        X = 2 
        For a = 1 To NbRef 
            Sh.Cells(X, 1) = .Item(a).Name 
            Sh.Cells(X, 2) = .Item(a).Description 
            Sh.Cells(X, 3) = .Item(a).GUID 
            Sh.Cells(X, 4) = .Item(a).Major 
            Sh.Cells(X, 5) = .Item(a).Minor 
            Sh.Cells(X, 6) = .Item(a).fullpath 
            X = X + 1 
        Next 
    End With 
    .Range("A1").CurrentRegion.EntireColumn.AutoFit 
End With 
End Sub 
'--------------------------------------
 

Herdet

Nous a quitté
Repose en paix
Re : Application pour la gestion de l'éditeur VBA et des extractions de code

Bonsour®

...si ce contrôle apparaît dans un formulaire, l'ajout
de la référence permettra d'exécuter le code, mais cela n'ajoutera pas le contrôle dans la boîte à outils du formulaire. Pour cela, il n'y a pas de code VBA qui fait cela. Mais ton programme fonctionnera rondement...
d'après une intervention de MichD (MPFE)
[/Code]
Bien vu mon ami, je retrouve bien là un ancien cador du MPFE.
J'ai déjà vu un article sur les GUID il y a quelques temps ainsi que dans un fichier de MichDenis que je retrouve pas sur mon DD mais sans avoir bien compris leurs utilité.

Effectivement avec les GUIDS on devrait solutionner tous les problèmes de référence aux bibliothèques car la méthode AddFromGuid récupère les liens GUID uniques directement dans le registre et les fichiers .ini de Windows de l'ordinateur sur lequel on travaille.
Voir Ce lien n'existe plus
Dans l'application, j'ai ajouté une boucle qui stocke et charge tous les GUID à l'ouverture et ça marche sur mon PC mais il faudrait le tester sur d'autres PC avec Excel 2007, 2010, 2013 en 32 et 64 bits (!)

Ci-jointe dernière version "RD_gestion editeur_VBA_V1-04.xlsm"
A bientôt
Robert

Code:
Sub GUIDS_Proprietes_Lecture_Sauvegarde()
   ' installation des liens aux bibliothèques par les GUIDS
   ' l'ajout de la référence permettra d'exécuter le code si ce contrôle apparaît dans un formulaire
   ' La méthode AddFromGuid recherche dans le Registre de Windows pour trouver la référence à ajouter.
   ' Le GUID peut être une bibliothèque de type, le contrôle, l'identificateur de classe, et ainsi de suite.
   ' voir http://msdn.microsoft.com/en-us/library/office/gg264769.aspx
   
   Dim X, NbRef As Integer
   ThisWorkbook.Activate
   Initialisation_Parametres
   
   ' ecriture des GUIDS dans lafeuille GUID et actualisation
   With Sht_GUID
      Set Tbl = .Range(PRF & "T_GUID_ens")
      Tbl.ClearContents
      On Error Resume Next
      With Sht_GUID.Parent.VBProject.References
         NbRef = .Count
         X = 1
         For A = 1 To NbRef
            Tbl(X, 1) = .Item(A).Name
            Tbl(X, 2) = .Item(A).Description
            Tbl(X, 3) = .Item(A).GUID
            Tbl(X, 4) = .Item(A).Major
            Tbl(X, 5) = .Item(A).Minor
            Tbl(X, 6) = .Item(A).fullpath
            ' actualisation du lien
            ThisWorkbook.VBProject.References.AddFromGuid GUID:=Tbl(X, 3), Major:=Tbl(X, 4), Minor:=Tbl(X, 5)
            X = X + 1
         Next
      End With
      .Range("A4").CurrentRegion.EntireColumn.AutoFit
   End With
End Sub
 

Pièces jointes

  • RD_gestion editeur_VBA_V1-04.xlsm
    390.1 KB · Affichages: 126

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 082
Membres
103 112
dernier inscrit
cuq-laet