Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

10 réponses

1 2
Avatar
lSteph
Bonjour,
un identificateur
à commmencer par son nom...!?


Cordialement.

lSteph

"Alex St-Pierre" a écrit dans le
message de news:
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


Avatar
Alex St-Pierre
Bonjour!
J'espère que ces informations seront plus claires:
L'identificateur est le type de feuille ("A","B","C", ... dans cet exemple).
Lorsque je cré une feuille, je cherche comment mettre un texte de type
'Type:A' dans le code de la feuille lors de sa création pour ensuite, lui
faire référence plus tard.

De façon plus concrète, le programme génère différents types de tableaux (un
tableau par onglet). Il pourrait y avoir plus d'une feuille avec le même type
de tableau. Dans le programme, l'utilisateur doit choisir parmi tous les
tableaux(feuilles) de type A, lequel il veut utiliser, et ce, pour chacun des
types de tableaux(A,B,C,...). Je voudrais donc faire un test parmi toutes les
feuilles du classeur, lesquelles ont 'Type:A' d'inscrit dans leurs codes.

--
Alex St-Pierre



Bonjour,
un identificateur
à commmencer par son nom...!?


Cordialement.

lSteph

"Alex St-Pierre" a écrit dans le
message de news:
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







Avatar
lSteph
Re,"Alex St-Pierre"
oui! cela ne s'éloigne pas de ce que j'avais compris
ma suggestion est donc, peu importe préfixe ou suffixe ,
d'insérer cet identification dans le nom de la feuille afin
de pouvoir en tenir compte dans ton code.

Sinon autre idée s'il n'y en a pas insérer un label dans la feuille et lui
coller son tag en qq sorte

Cordialement.

lSteph
"Alex St-Pierre" a écrit dans le
message de news:
Bonjour!
J'espère que ces informations seront plus claires:
L'identificateur est le type de feuille ("A","B","C", ... dans cet
exemple).
Lorsque je cré une feuille, je cherche comment mettre un texte de type
'Type:A' dans le code de la feuille lors de sa création pour ensuite, lui
faire référence plus tard.

De façon plus concrète, le programme génère différents types de tableaux
(un
tableau par onglet). Il pourrait y avoir plus d'une feuille avec le même
type
de tableau. Dans le programme, l'utilisateur doit choisir parmi tous les
tableaux(feuilles) de type A, lequel il veut utiliser, et ce, pour chacun
des
types de tableaux(A,B,C,...). Je voudrais donc faire un test parmi toutes
les
feuilles du classeur, lesquelles ont 'Type:A' d'inscrit dans leurs codes.

--
Alex St-Pierre



Bonjour,
un identificateur
à commmencer par son nom...!?


Cordialement.

lSteph

"Alex St-Pierre" a écrit dans le
message de news:
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









Avatar
Alex St-Pierre
Je voudrais mettre un tag qui soit permanent donc, sans possibilité de
l'effacer par erreur. Je ne veux pas définir un nom de cellule car ça
pourrait être modifié ou s'effacer. Un commentaire aussi. C'est pourquoi
j'avais pensé mettre des infos dans le code.
Est-ce qu'on peut faire réfèrence au code à l'intérieur d'une feuille?
exemple:
Sheets.Add
Sheets.Code.Add.Line1 ("Type:A")

Ensuite pour aller chercher l'information:
sCodeFeuille = Sheets("abc").Code.Text
Pos = Instr(sCodeFeuille,1,"Type:")
indice = Left(Right(sCodeFeuille,Pos+1),1) 'renverrais A

Merci !
--
Alex St-Pierre



Re,"Alex St-Pierre"
oui! cela ne s'éloigne pas de ce que j'avais compris
ma suggestion est donc, peu importe préfixe ou suffixe ,
d'insérer cet identification dans le nom de la feuille afin
de pouvoir en tenir compte dans ton code.

Sinon autre idée s'il n'y en a pas insérer un label dans la feuille et lui
coller son tag en qq sorte

Cordialement.

lSteph
"Alex St-Pierre" a écrit dans le
message de news:
Bonjour!
J'espère que ces informations seront plus claires:
L'identificateur est le type de feuille ("A","B","C", ... dans cet
exemple).
Lorsque je cré une feuille, je cherche comment mettre un texte de type
'Type:A' dans le code de la feuille lors de sa création pour ensuite, lui
faire référence plus tard.

De façon plus concrète, le programme génère différents types de tableaux
(un
tableau par onglet). Il pourrait y avoir plus d'une feuille avec le même
type
de tableau. Dans le programme, l'utilisateur doit choisir parmi tous les
tableaux(feuilles) de type A, lequel il veut utiliser, et ce, pour chacun
des
types de tableaux(A,B,C,...). Je voudrais donc faire un test parmi toutes
les
feuilles du classeur, lesquelles ont 'Type:A' d'inscrit dans leurs codes.

--
Alex St-Pierre



Bonjour,
un identificateur
à commmencer par son nom...!?


Cordialement.

lSteph

"Alex St-Pierre" a écrit dans le
message de news:
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














Avatar
Michel Gaboly
Bonsoir,

Un nom n'est pas nécessairement lié à une plage :

Private Sub Toto()
Sheets.Add
ActiveSheet.Names.Add "Type", "A"
End Sub

permet de définir un nom de niveau feuille. Un test quelconque perme t de donner la valeur "A", "B" ou "C" au nom "Type".


Private Function TypeFeuille(f As Worksheet)
TypeFeuille = f.Evaluate("Type")
End Function

récupère l'info associée à une feuille particuliè re.


Private Sub Test()
MsgBox TypeFeuille(Sheets("Feuil2"))
End Sub

est un exemple pour "Feuil2".


On peut bien sûr se passer de la fonction "TypeFeuille" :

Private Sub TestBis()
MsgBox Sheets("Feuil2").Evaluate("Type")
End Sub



Je voudrais mettre un tag qui soit permanent donc, sans possibilité de
l'effacer par erreur. Je ne veux pas définir un nom de cellule car ça
pourrait être modifié ou s'effacer. Un commentaire aussi. C'e st pourquoi
j'avais pensé mettre des infos dans le code.
Est-ce qu'on peut faire réfèrence au code à l'intér ieur d'une feuille?
exemple:
Sheets.Add
Sheets.Code.Add.Line1 ("Type:A")

Ensuite pour aller chercher l'information:
sCodeFeuille = Sheets("abc").Code.Text
Pos = Instr(sCodeFeuille,1,"Type:")
indice = Left(Right(sCodeFeuille,Pos+1),1) 'renverrais A

Merci !



--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Pierre Fauconnier
Bonjour

Utilise le CodeName de la feuille que tu crées.

Dans les propriétés de la feuille en VBA, tu peux voir la propriété Nom. Tu
peux modifier cette propriété à la main et y faire référence via
Feuille.CodeName. Ce nom est indépendant de Feuille.Name (nom de l'onglet
tel qu'il apparaît dans Excel).
Attention, cette propriété est en lecture seule. Pour pouvoir la modifier
par programmation, on utilise l'objet VBComponents.
Il te suffit alors, comme suggéré par Stéphane, de nommer judicieusement ta
feuille.

Sub CreerFeuilleEtRenommerCodeName(Nom As String)
Dim Feuille As Worksheet

With thisWorkbook
Set Feuille = Thisworkbook.Worksheets.Add()
ThisWorkbook.VBProject.VBComponents(Feuille.Codename).Name = Nom
End With
End Sub

J'espère que cela répond à ta demande


--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"Alex St-Pierre" a écrit dans le
message de news:
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


Avatar
Alex St-Pierre
Merci !
Ce que je trouve intéressant, c'est que je peux stocker plusieurs
informations.
Sheets.Add
ActiveSheet.Names.Add "Type", "A"
ActiveSheet.Names.Add "Autres", "Tableau"

Je peux connaitre l'ensement des valeurs en faisant varier le # de l'item.
Est-ce qu'il y a moyen de faire varier le nom de l'item ?
("Type","Autres",...)
item1 = ActiveSheet.Names.Item(1) 'Renvoi A
item2 = ActiveSheet.Names.Item(2) 'Renvoi B

--
Alex St-Pierre



Bonsoir,

Un nom n'est pas nécessairement lié à une plage :

Private Sub Toto()
Sheets.Add
ActiveSheet.Names.Add "Type", "A"
End Sub

permet de définir un nom de niveau feuille. Un test quelconque permet de donner la valeur "A", "B" ou "C" au nom "Type".


Private Function TypeFeuille(f As Worksheet)
TypeFeuille = f.Evaluate("Type")
End Function

récupère l'info associée à une feuille particulière.


Private Sub Test()
MsgBox TypeFeuille(Sheets("Feuil2"))
End Sub

est un exemple pour "Feuil2".


On peut bien sûr se passer de la fonction "TypeFeuille" :

Private Sub TestBis()
MsgBox Sheets("Feuil2").Evaluate("Type")
End Sub



Je voudrais mettre un tag qui soit permanent donc, sans possibilité de
l'effacer par erreur. Je ne veux pas définir un nom de cellule car ça
pourrait être modifié ou s'effacer. Un commentaire aussi. C'est pourquoi
j'avais pensé mettre des infos dans le code.
Est-ce qu'on peut faire réfèrence au code à l'intérieur d'une feuille?
exemple:
Sheets.Add
Sheets.Code.Add.Line1 ("Type:A")

Ensuite pour aller chercher l'information:
sCodeFeuille = Sheets("abc").Code.Text
Pos = Instr(sCodeFeuille,1,"Type:")
indice = Left(Right(sCodeFeuille,Pos+1),1) 'renverrais A

Merci !



--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
Alex St-Pierre
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
--
Alex St-Pierre



Bonsoir,

Un nom n'est pas nécessairement lié à une plage :

Private Sub Toto()
Sheets.Add
ActiveSheet.Names.Add "Type", "A"
End Sub

permet de définir un nom de niveau feuille. Un test quelconque permet de donner la valeur "A", "B" ou "C" au nom "Type".


Private Function TypeFeuille(f As Worksheet)
TypeFeuille = f.Evaluate("Type")
End Function

récupère l'info associée à une feuille particulière.


Private Sub Test()
MsgBox TypeFeuille(Sheets("Feuil2"))
End Sub

est un exemple pour "Feuil2".


On peut bien sûr se passer de la fonction "TypeFeuille" :

Private Sub TestBis()
MsgBox Sheets("Feuil2").Evaluate("Type")
End Sub



Je voudrais mettre un tag qui soit permanent donc, sans possibilité de
l'effacer par erreur. Je ne veux pas définir un nom de cellule car ça
pourrait être modifié ou s'effacer. Un commentaire aussi. C'est pourquoi
j'avais pensé mettre des infos dans le code.
Est-ce qu'on peut faire réfèrence au code à l'intérieur d'une feuille?
exemple:
Sheets.Add
Sheets.Code.Add.Line1 ("Type:A")

Ensuite pour aller chercher l'information:
sCodeFeuille = Sheets("abc").Code.Text
Pos = Instr(sCodeFeuille,1,"Type:")
indice = Left(Right(sCodeFeuille,Pos+1),1) 'renverrais A

Merci !



--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
MichDenis
Essaie ceci :

Remplace

| MsgBox ActiveWorkbook.Evaluation("Version") 'Fonctionne pas?

Par

MsgBox Application.Evaluate("Version")




"Alex St-Pierre" a écrit dans le message de news:

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
--
Alex St-Pierre



Bonsoir,

Un nom n'est pas nécessairement lié à une plage :

Private Sub Toto()
Sheets.Add
ActiveSheet.Names.Add "Type", "A"
End Sub

permet de définir un nom de niveau feuille. Un test quelconque permet de donner la valeur "A", "B"
ou "C" au nom "Type".


Private Function TypeFeuille(f As Worksheet)
TypeFeuille = f.Evaluate("Type")
End Function

récupère l'info associée à une feuille particulière.


Private Sub Test()
MsgBox TypeFeuille(Sheets("Feuil2"))
End Sub

est un exemple pour "Feuil2".


On peut bien sûr se passer de la fonction "TypeFeuille" :

Private Sub TestBis()
MsgBox Sheets("Feuil2").Evaluate("Type")
End Sub



Je voudrais mettre un tag qui soit permanent donc, sans possibilité de
l'effacer par erreur. Je ne veux pas définir un nom de cellule car ça
pourrait être modifié ou s'effacer. Un commentaire aussi. C'est pourquoi
j'avais pensé mettre des infos dans le code.
Est-ce qu'on peut faire réfèrence au code à l'intérieur d'une feuille?
exemple:
Sheets.Add
Sheets.Code.Add.Line1 ("Type:A")

Ensuite pour aller chercher l'information:
sCodeFeuille = Sheets("abc").Code.Text
Pos = Instr(sCodeFeuille,1,"Type:")
indice = Left(Right(sCodeFeuille,Pos+1),1) 'renverrais A

Merci !



--
Cordialement,

Michel Gaboly
www.gaboly.com




Avatar
Alex St-Pierre
ça fonctionne bien !
Merci !
--
Alex St-Pierre



Essaie ceci :

Remplace

| MsgBox ActiveWorkbook.Evaluation("Version") 'Fonctionne pas?

Par

MsgBox Application.Evaluate("Version")




"Alex St-Pierre" a écrit dans le message de news:

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
--
Alex St-Pierre



Bonsoir,

Un nom n'est pas nécessairement lié à une plage :

Private Sub Toto()
Sheets.Add
ActiveSheet.Names.Add "Type", "A"
End Sub

permet de définir un nom de niveau feuille. Un test quelconque permet de donner la valeur "A", "B"
ou "C" au nom "Type".


Private Function TypeFeuille(f As Worksheet)
TypeFeuille = f.Evaluate("Type")
End Function

récupère l'info associée à une feuille particulière.


Private Sub Test()
MsgBox TypeFeuille(Sheets("Feuil2"))
End Sub

est un exemple pour "Feuil2".


On peut bien sûr se passer de la fonction "TypeFeuille" :

Private Sub TestBis()
MsgBox Sheets("Feuil2").Evaluate("Type")
End Sub



Je voudrais mettre un tag qui soit permanent donc, sans possibilité de
l'effacer par erreur. Je ne veux pas définir un nom de cellule car ça
pourrait être modifié ou s'effacer. Un commentaire aussi. C'est pourquoi
j'avais pensé mettre des infos dans le code.
Est-ce qu'on peut faire réfèrence au code à l'intérieur d'une feuille?
exemple:
Sheets.Add
Sheets.Code.Add.Line1 ("Type:A")

Ensuite pour aller chercher l'information:
sCodeFeuille = Sheets("abc").Code.Text
Pos = Instr(sCodeFeuille,1,"Type:")
indice = Left(Right(sCodeFeuille,Pos+1),1) 'renverrais A

Merci !



--
Cordialement,

Michel Gaboly
www.gaboly.com









1 2