OVH Cloud OVH Cloud

Nom d'onglet.....référence VBA

5 réponses
Avatar
Stéphan DuQuébec
Mes interrogations peuvent parfois vous sembler stupides.....enfin.

Puisqu'il semble impossible d'empêcher un utilisateur malveillant de
modifier un nom d'onglet (en cliquant directement sur l'ionglet), y a-t-il
moyen, dans les instructions VBA, d'adresser les feuilles par leur nom
générique et non par leur nom spécifique.

Exemple:
Worksheets(Feuil2).Visible = True
Plutôt que
Worksheets("Résultats XYZ").Visible = True

J'aimerais bien la première méthode mais je n'y arrive pas.

Quelqu'un sait et voudrait bien me renseigner ?

Merci.

5 réponses

Avatar
isabelle
bonjour Stéphan,

pour appeler une feuille par son CodeName (nom du VBAProject) c'est,
Feuil2.Visible = True

isabelle

Mes interrogations peuvent parfois vous sembler stupides.....enfin.

Puisqu'il semble impossible d'empêcher un utilisateur malveillant de
modifier un nom d'onglet (en cliquant directement sur l'ionglet), y a-t-il
moyen, dans les instructions VBA, d'adresser les feuilles par leur nom
générique et non par leur nom spécifique.

Exemple:
Worksheets(Feuil2).Visible = True
Plutôt que
Worksheets("Résultats XYZ").Visible = True

J'aimerais bien la première méthode mais je n'y arrive pas.

Quelqu'un sait et voudrait bien me renseigner ?

Merci.



Avatar
Stéphan DuQuébec
C'est trop simple, ça en gênant.

Merci beaucoup Isabelle.


bonjour Stéphan,

pour appeler une feuille par son CodeName (nom du VBAProject) c'est,
Feuil2.Visible = True

isabelle

Mes interrogations peuvent parfois vous sembler stupides.....enfin.

Puisqu'il semble impossible d'empêcher un utilisateur malveillant de
modifier un nom d'onglet (en cliquant directement sur l'ionglet), y a-t-il
moyen, dans les instructions VBA, d'adresser les feuilles par leur nom
générique et non par leur nom spécifique.

Exemple:
Worksheets(Feuil2).Visible = True
Plutôt que
Worksheets("Résultats XYZ").Visible = True

J'aimerais bien la première méthode mais je n'y arrive pas.

Quelqu'un sait et voudrait bien me renseigner ?

Merci.






Avatar
ChrisV
Bonjour Stéphan DuQuébec,

Puisqu'il semble impossible d'empêcher un utilisateur malveillant de
modifier un nom d'onglet...



Avec, dans une cellule d'un onglet masqué (dont la propriété sera
VeryHidden), une fonction volatile du type =MAINTENANT()
et le mode de calcul (Outils/Options.../Calcul) sur Automatique

et dans la feuille de code de l'onglet concerné:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Feuil1.Name <> "zaza" Then
With Application
.EnableEvents = False
Feuil1.Name = "zaza"
.EnableEvents = True
End With
End If
End Sub


ChrisV


"Stéphan DuQuébec" a écrit dans le
message de news:
Mes interrogations peuvent parfois vous sembler stupides.....enfin.

Puisqu'il semble impossible d'empêcher un utilisateur malveillant de
modifier un nom d'onglet (en cliquant directement sur l'ionglet), y a-t-il
moyen, dans les instructions VBA, d'adresser les feuilles par leur nom
générique et non par leur nom spécifique.

Exemple:
Worksheets(Feuil2).Visible = True
Plutôt que
Worksheets("Résultats XYZ").Visible = True

J'aimerais bien la première méthode mais je n'y arrive pas.

Quelqu'un sait et voudrait bien me renseigner ?

Merci.



Avatar
Stéphan DuQuébec
Merci bien ChrisV pour l'alternative proposée pour ramener indéfiniment le
nom de la feuille à ce qu'il devait être au départ. Mais peut-être que ce
code, qui nécessite une validation perpétuelle, ralentira un peu mon
application......

Je préfère, pour l'instant, utiliser le CodeName de la feuille qui me permet
aussi de ne plus me soucier du nom que l'onglet portera dans l'interface
utilisateur....

Bonne journée !


Bonjour Stéphan DuQuébec,

Puisqu'il semble impossible d'empêcher un utilisateur malveillant de
modifier un nom d'onglet...



Avec, dans une cellule d'un onglet masqué (dont la propriété sera
VeryHidden), une fonction volatile du type =MAINTENANT()
et le mode de calcul (Outils/Options.../Calcul) sur Automatique

et dans la feuille de code de l'onglet concerné:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Feuil1.Name <> "zaza" Then
With Application
.EnableEvents = False
Feuil1.Name = "zaza"
.EnableEvents = True
End With
End If
End Sub


ChrisV





Avatar
ChrisV
Re,

Je préfère, pour l'instant, utiliser le CodeName de la feuille...


Cela me semble également la meilleur approche...

Mon post n'avait d'autre objet que de répondre à ta question initiale:
"Puisqu'il semble impossible d'empêcher un utilisateur malveillant de
modifier un nom d'onglet..."
;-)


ChrisV


"Stéphan DuQuébec" a écrit dans le
message de news:

Merci bien ChrisV pour l'alternative proposée pour ramener indéfiniment le
nom de la feuille à ce qu'il devait être au départ. Mais peut-être que ce
code, qui nécessite une validation perpétuelle, ralentira un peu mon
application......

Je préfère, pour l'instant, utiliser le CodeName de la feuille qui me
permet
aussi de ne plus me soucier du nom que l'onglet portera dans l'interface
utilisateur....

Bonne journée !


Bonjour Stéphan DuQuébec,

Puisqu'il semble impossible d'empêcher un utilisateur malveillant de
modifier un nom d'onglet...



Avec, dans une cellule d'un onglet masqué (dont la propriété sera
VeryHidden), une fonction volatile du type =MAINTENANT()
et le mode de calcul (Outils/Options.../Calcul) sur Automatique

et dans la feuille de code de l'onglet concerné:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
If Feuil1.Name <> "zaza" Then
With Application
.EnableEvents = False
Feuil1.Name = "zaza"
.EnableEvents = True
End With
End If
End Sub


ChrisV