OVH Cloud OVH Cloud

VBA - Identifier une feuille en modificiant le code de la feuille

13 réponses
Avatar
Alex St-Pierre
Bonjour,
J'ai une macro qui génère différents types de feuilles et j'aimerais avoir
un identificateur qui me permettrais de connaitre quelles sont les feuilles
de type A, B, C, etc.

Y aurait-il moyen d'aller inscrire un identificateur à l'intérieur du code
de la feuille (ex: A, B, C, ...) lors de la création de la feuille (soit mis
dans un SUB ou mettre un text du style: 'Type de feuille: A (à la première
ligne de code)

Ensuite, je pourrais faire un test sur l'ensemble des feuilles et détecter
celles qui sont de type B, par exemple.

Merci !
---
Alex St-Pierre

3 réponses

1 2
Avatar
Michel Gaboly
Bonjour,

On ne peut accéder au contenu d'un nom, même de niveau classeur à partir de l'objet Workbook.

La solution de MichDenis avec Application.Evaluate fonctionne très b ien dans le contexte que tu indiques, mais on risque
toujours d'avoir de mauvaises surprises si on développe une applicat ion qui manipule plusieurs classeurs : si le
classeur actif n'est pas celui qu'on croit, Application.Evaluate renverra une erreur ou un résultat qui n'est pas
forcément le bon si le nom est également dan le classeur actif.

C'est pourquoi, je préconise de passer par une feuille :

MsgBox Workbooks("Toto").Sheets(1).Evaluate("Version")

pour accéder à un nom de niveau classeur. La seule contrainte à ©tant que le nom n'existe pas à la fois dans la collection
des noms du classeur ET dans celle des noms de la feuille.


Re-Bonjour!
J'ai essayé d'appliquer la propriété au classeur mais je ne suis pas capable
de lire la valeur. Chaque classeur va pouvoir importer les données d'un autre
classeur fait sur une version plus ancienne. Est-ce que cette proprià ©té exite
seulement pour les feuilles?
Merci !
Private Sub VersionFichier()
ActiveWorkbook.Names.Add "Version", "110" 'Fonctionne bien
MsgBox ActiveWorkbook.Evaluation("Version") 'Fonctionne pas?
MsgBox ActiveWorkbook.Names.Item(1) 'Renvoi le A qui est associà © au
"type"
End Sub



--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
MichDenis
Bonjour Michel,

| C'est pourquoi, je préconise de passer par une feuille :

| MsgBox Workbooks("Toto").Sheets(1).Evaluate("Version")

Tu as trouvé une nouvelle façon d'utiliser la méthode "Evaluate"
IL me semblait que cette méthode appartenait à l'objet "Application"

Es-tu sûr que cela fonctionne ? ;-)
Avatar
Alex St-Pierre
Bonjour,
Dans mon classeur, j'ai une feuille qui doit toujours être présente donc,
c'est sur cette feuille que je vais définir la variable version (qui
s'applique au classeur). Comme j'ai à ouvrir un 2e classeur pour tester la
version, ça va être plus certain!
Merci!
--
Alex St-Pierre



Bonjour Michel,

| C'est pourquoi, je préconise de passer par une feuille :

| MsgBox Workbooks("Toto").Sheets(1).Evaluate("Version")

Tu as trouvé une nouvelle façon d'utiliser la méthode "Evaluate"
IL me semblait que cette méthode appartenait à l'objet "Application"

Es-tu sûr que cela fonctionne ? ;-)





1 2