Comment excel gere-t-il les codename?

greg0ire

XLDnaute Nouveau
Bonjour! J'ai un petit problème : j'ai développé des macros pour excel en utilisant pas mal la propriété Codename de mes feuilles et je me suis rendu compte que ces Codenames ne sont générés que quand VBE est ouvert.
Ainsi, la fonction suivante
Code:
Sub test()
    For Each sh In ThisWorkbook.Sheets
        MsgBox sh.CodeName
    Next
End Sub
me renvoie des valeurs vides quand VBE est fermé. C'est très génant pouvez-vous me dire comment forcer la génération de ces précieux codenames?
 

greg0ire

XLDnaute Nouveau
Re : Comment excel gere-t-il les codename?

merci beaucoup pour ton aide je vais lire ce fil attentivement. J'ai testé ce code mais ça ne fonctionne pas encore.
Code:
Sub test()
    With Charts.Add
        DoEvents
        On Error Resume Next
        MsgBox .CodeName
    End With
End Sub
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Comment excel gere-t-il les codename?

RE

Non j'avais essayé avec le doevents depuis longtemps mais idem

J'ai essayé avec les vbcomponent et à chaque fois ça plante

je me demande si il n'y a pas un problème de référence à cocher

j'ai bien coché celle qu'il disait mais si cela se trouve il en faut d'autres
 

greg0ire

XLDnaute Nouveau
Re : Comment excel gere-t-il les codename?

Oui enfin bref si c'est possible c'est avec une astuce de martien psychopathe, quoi... J'ai essayé aussi avec les VB components mais chez moi aussi ça plante sans arrêt...
In general, changing code names is not for the casual user.
Eh eh regarde moi j'ai une tête de casual user moi?
 

PascalXLD

XLDnaute Barbatruc
Modérateur

Ti_

Nous a quitté
Repose en paix
Re : Comment excel gere-t-il les codename?

Salut

Effectivement ce problème est un peu pénible. je pense qu'on peut parler ici de bug effectif de la fenêtre VBA dans Excel (je n'ai pas testé dans les autres programme Office).
Voici une fonction qui contourne ça et renverra toujours le CodeName d'une feuille quel que soit l'état de la fenêtre VBA au moment de l'appel - enfin j'espère...

Ne me demandez pas exactement pourquoi le fait d'encapsuler l'appel dans l'objet VBE suffit à rétablir les choses. Je suppose que justement cet appel lance une procédure d'initalisation de l'objet qui ne se faisait pas si la fenêtre VBA n'était activée auparavant.

Code:
Function WsCodeName$(Ws As Object)  'Ti
  On Error Resume Next
  With Application.VBE.MainWindow
    WsCodeName = Ws.CodeName
  End With
End Function
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Comment excel gere-t-il les codename?

Re

Alors là Ti tu es une nouvelle fois magique

j'ai essayé comme ceci

Code:
Sub test()
Sheets.Add
  With Application.VBE.MainWindow
    MsgBox ActiveSheet.CodeName
  End With
End Sub

et tout marche

bon même si tu n'expliques pas le pourquoi je te remrcie car je n'aime pas rester sur un problème sans trouver une solution

Encore merci et je pense que ça resservira
 

greg0ire

XLDnaute Nouveau
Re : Comment excel gere-t-il les codename?

Bravooooo! Je me doutais qu'il y avait une chose à faire pour forcer le codename à se créer, mais j'aurais jamais trouvé ça... Merci beaucoup mais c'est quand même fort, un bug pareil dans excel...ils peuvent pas corriger par mise a jour chez Microsoft?
 

Jeanbulle

XLDnaute Occasionnel
Re : Comment excel gere-t-il les codename?

Bonjour à tous.

Excusez moi de remonter le sujet, mais je rencontre ce problème également.

Pourriez vous m'expliquer plus en détails ou il faut placer ce code ? ...

Mon code travaille de cette manière :
Workbook open => userform3.show avec demande de login et passe
( le userform3 ne peut etre fermé, nous ne pouvons pas utiliser la feuille derrière )

Sur la validation du login et passe, userform3 se ferme et charge le "logiciel" userform4.
Ca plante quand on valide.

Par contre, si je fait alt F11, et que j'execute le userform3 en lecture, tout se passe bien.
Es ce le même problème que vous ? ?


Grand merci pour toutes infos suceptibles de m'aider.
je ne peux pas vous envoyer un fichier exemple, car je n'arrive pas à reproduire le bug ( mon log excel fait 5 mo ^^ )

A plus tard ;)

NB : Le bug est quasiment toujours présent. Il arrive néanmoins qu'on puisse ouvre le fichier excel sans problème... et le lendemain ou l'après midi.. NON.. etc
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 050
Membres
103 441
dernier inscrit
MarioC