Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres indentifier le classeur en ne connaissant que le nom d'un des module

patricktoulon

XLDnaute Barbatruc
Bonjour à tous
je voudrais pour remonter jusqu'au classeur a partir d'un module

j'obtiens l'object vbcomponent(module) avec ceci
VB:
  Set vbComp = Application.VBE.ActiveCodePane.CodeModule.Parent
avez vous des idées?
 
Solution
Non vue qu'il s'agit bien de l'instance wb.VBProject et pas de son non

Ici tu récupères l'instance du modules actif
Application.VBE.ActiveCodePane.CodeModule.Parent
Et tu le compare à l'instance du wb?? Défi dans la boucle
C'est comme une collection du même module de classe chaque instance est unique

Place les deux dans la fenêtre espion, tu verras qu'il sont du même type et que ce soit bien des objets à part entière

patricktoulon

XLDnaute Barbatruc
re
bon on a vu la reduction dans un bloc with
maintenant on peut parler du besoins de variabliser
c'est quoi la différence selon toi entre ça
VB:
Sub testgetwbkparente1()
    With Application.VBE.ActiveCodePane.CodeModule.Parent.Collection.Parent
       MsgBox Mid(.Filename, InStrRev(.Filename, "\") + 1)
    End With
End Sub
et ça
Code:
Sub TestGetWorkbookNameSuite()
Dim NomF As String: NomF = Application.VBE.ActiveCodePane.CodeModule.Parent.Collection.Parent.fileName
' Affichez le nom du fichier
    MsgBox Mid(NomF, InStrRev(NomF, "\") + 1)
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
et ben non ce n'est pas identique du tout
tu n'a pas compris le sens de la démarche
ma fonction me renvoie le classeur contenant le module actif dans vbe il n'est pas forcé que se soit le classeur contenant la macro
ton truc a toi renvoie celui contenant de la macro


edit:et en plus ça marche pas ton truc
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…