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

Informations retournées par Application.caller

4 réponses
Avatar
arbiel
Bonjour à tous

Quelqu'un pourrait-il me dire où je peux trouver les détails du
fonctionnement de la propriété Application.caller lorque l'appel ne provient
pas d'une fonction personnalisée utilisée dans une cellule de feuille de
calcul ?


Explications :

1) L'aide en ligne ne donne d'informations que pour les appels à partir de
fonctions personnalisées.

2) Certains de mes fichiers contiennent de nombreux onglets. Je n'utilise
souvent qu'un petit nombre d'entre eux, et pour facilier le navigation entre
les onglets, je masque ceux qui ne m'intéressent pas. J'utilise pour cela la
fenêtre propriété de VBA, mais cette solution ne me satisfait pas.

J'envisage d'inclure dans le menu "Affichage", une commande "Onglets" qui
déclencherait un menu déroulant de commutateurs nommés comme les onglets du
fichier. L'utilisation serait strictement la même que celle de la commande
"Barre d'outils" qui permet d'afficher ou de masquer les barres d'outils.

Tous ces commutateurs déclencheraient l'exécution d'une même macro. Je sais
que la fonction Application.caller permet de récupérer des informations sur
la manière dont ladite macro aurait été lancée, et donc de retrouver le
commutateur, et par là, le nom de l'onglet à afficher ou à masquer, mais ces
informations ne sont absolument pas commentées dans l'aide en ligne.

D'avance, merci

AP

4 réponses

Avatar
Sitting Hoax
Bonjour,
si chaque bouton porte le nom d'un onglet,
tu n'as qu'à mettre une macro comme celle ci que tu affecteras à ces
boutons:

Sub zaza ()
Sheets(Application.Caller).Select
Sheets(Application.Caller).Visible = False
End Sub

Sub zaza2 ()
Sheets(Application.Caller).Visible = true
End Sub

Tout simplement.
Amicalement
Sitting Hoax
"arbiel" a écrit dans le message de news:

Bonjour à tous

Quelqu'un pourrait-il me dire où je peux trouver les détails du
fonctionnement de la propriété Application.caller lorque l'appel ne
provient
pas d'une fonction personnalisée utilisée dans une cellule de feuille de
calcul ?


Explications :

1) L'aide en ligne ne donne d'informations que pour les appels à partir de
fonctions personnalisées.

2) Certains de mes fichiers contiennent de nombreux onglets. Je n'utilise
souvent qu'un petit nombre d'entre eux, et pour facilier le navigation
entre
les onglets, je masque ceux qui ne m'intéressent pas. J'utilise pour cela
la
fenêtre propriété de VBA, mais cette solution ne me satisfait pas.

J'envisage d'inclure dans le menu "Affichage", une commande "Onglets" qui
déclencherait un menu déroulant de commutateurs nommés comme les onglets
du
fichier. L'utilisation serait strictement la même que celle de la commande
"Barre d'outils" qui permet d'afficher ou de masquer les barres d'outils.

Tous ces commutateurs déclencheraient l'exécution d'une même macro. Je
sais
que la fonction Application.caller permet de récupérer des informations
sur
la manière dont ladite macro aurait été lancée, et donc de retrouver le
commutateur, et par là, le nom de l'onglet à afficher ou à masquer, mais
ces
informations ne sont absolument pas commentées dans l'aide en ligne.

D'avance, merci

AP


Avatar
michdenis
Bonjour Arbiel,

Si tu as une barre d'outils contenant plusieurs boutons affichant le nom de chacune des feuilles et que tu veuilles récupérer le nom
du bouton cliquer par une procédure unique pour activer cette feuille, tu peux utliser ceci :

A )
Worksheet(Application.CommandBars.ActionControl.Caption).select


B ) tu peux utiliser aussi un bouton (style combobox) dans une barre d'outils contenant tous les noms des feuilles du classeur et
suite à la sélection de l'usager d'un nom d'une feuille dans ce combobox, la feuille est sélectionnée.

Voici un exemple qui servait à afficher tous les classeurs d'un répertoire d'un fichier dans ce type de controle et de pouvoir
ouvrir le classeur sélectionné dans la liste du combobox. Ceci n'est que pour illustrer le principe !

'-------------------------------------------
Sub CréerUnMenuDeTypeCombobox()

Dim MBar As CommandBar
Dim MCtl As CommandBarControl
Dim Fichier As Variant

On Error Resume Next
Application.CommandBars("Liste des fichiers").Delete

With Application.CommandBars
Set MBar = .Add("Liste des fichiers")
End With
With MBar
.Top = 75
.Left = 20
.Visible = True
End With

With MBar.Controls
Set MCtl = .Add(msoControlComboBox)

With MCtl
.AddItem ""
Fichier = Dir("C:test*.xls") 'à définir
Do While Fichier <> ""
.AddItem Fichier
Fichier = Dir()
Loop
.Caption = "Fichiers"
.Width = 150
.OnAction = "OuvrirFichier"
End With
End With

End Sub

'------------------------------
Sub OuvrirFichier()

Dim Chemin As String, Fichier As String
Chemin = "c:test" 'à définir

With Application.CommandBars("Liste des fichiers") _
.Controls("Fichiers")
Ficher = .List(.ListIndex)
End With
If IsEmpty(Fichier) Then Exit Sub
If Dir(Chemin & Fichier) <> "" Then
Workbooks.Open Chemin & Fichier
Else
MsgBox "Impossible de localiser ce fichier."
End If
End Sub
'------------------------------


Salutations!



"arbiel" a écrit dans le message de news:
Bonjour à tous

Quelqu'un pourrait-il me dire où je peux trouver les détails du
fonctionnement de la propriété Application.caller lorque l'appel ne provient
pas d'une fonction personnalisée utilisée dans une cellule de feuille de
calcul ?


Explications :

1) L'aide en ligne ne donne d'informations que pour les appels à partir de
fonctions personnalisées.

2) Certains de mes fichiers contiennent de nombreux onglets. Je n'utilise
souvent qu'un petit nombre d'entre eux, et pour facilier le navigation entre
les onglets, je masque ceux qui ne m'intéressent pas. J'utilise pour cela la
fenêtre propriété de VBA, mais cette solution ne me satisfait pas.

J'envisage d'inclure dans le menu "Affichage", une commande "Onglets" qui
déclencherait un menu déroulant de commutateurs nommés comme les onglets du
fichier. L'utilisation serait strictement la même que celle de la commande
"Barre d'outils" qui permet d'afficher ou de masquer les barres d'outils.

Tous ces commutateurs déclencheraient l'exécution d'une même macro. Je sais
que la fonction Application.caller permet de récupérer des informations sur
la manière dont ladite macro aurait été lancée, et donc de retrouver le
commutateur, et par là, le nom de l'onglet à afficher ou à masquer, mais ces
informations ne sont absolument pas commentées dans l'aide en ligne.

D'avance, merci

AP
Avatar
arbiel
Merci pour la réponse.

Je vais essayer cette méthode, mais je reste un peu surpris. Lors de mes
tests, j'ai en effet constaté que Application.caller était un tableau de
quatre valeurs entières, et je n'ai pas eu l'impression de pouvoir référencer
tout simplement Sheets(Application.caller).

J'ai également trouvé la propriété "Parameter" qui devrait me permettre de
résoudre également le problème. Si j'ai bien compris, en stockant le nom de
l'onglet dans cette propriété lors de la définition de chaque commutateur, et
en définissant un paramètre dans la procédure Zaza, je peux récupérer le nom
de l'onglet et du commutateur.


Bonjour,
si chaque bouton porte le nom d'un onglet,
tu n'as qu'à mettre une macro comme celle ci que tu affecteras à ces
boutons:

Sub zaza ()
Sheets(Application.Caller).Select
Sheets(Application.Caller).Visible = False
End Sub

Sub zaza2 ()
Sheets(Application.Caller).Visible = true
End Sub

Tout simplement.
Amicalement
Sitting Hoax
"arbiel" a écrit dans le message de news:

Bonjour à tous

Quelqu'un pourrait-il me dire où je peux trouver les détails du
fonctionnement de la propriété Application.caller lorque l'appel ne
provient
pas d'une fonction personnalisée utilisée dans une cellule de feuille de
calcul ?


Explications :

1) L'aide en ligne ne donne d'informations que pour les appels à partir de
fonctions personnalisées.

2) Certains de mes fichiers contiennent de nombreux onglets. Je n'utilise
souvent qu'un petit nombre d'entre eux, et pour facilier le navigation
entre
les onglets, je masque ceux qui ne m'intéressent pas. J'utilise pour cela
la
fenêtre propriété de VBA, mais cette solution ne me satisfait pas.

J'envisage d'inclure dans le menu "Affichage", une commande "Onglets" qui
déclencherait un menu déroulant de commutateurs nommés comme les onglets
du
fichier. L'utilisation serait strictement la même que celle de la commande
"Barre d'outils" qui permet d'afficher ou de masquer les barres d'outils.

Tous ces commutateurs déclencheraient l'exécution d'une même macro. Je
sais
que la fonction Application.caller permet de récupérer des informations
sur
la manière dont ladite macro aurait été lancée, et donc de retrouver le
commutateur, et par là, le nom de l'onglet à afficher ou à masquer, mais
ces
informations ne sont absolument pas commentées dans l'aide en ligne.

D'avance, merci

AP







Avatar
arbiel
Merci pour cette réponse.

En effet, ActionControl.Caption doit bien contenir le nom de l'onglet
concerné.

Je vais essayer également


Bonjour Arbiel,

Si tu as une barre d'outils contenant plusieurs boutons affichant le nom de chacune des feuilles et que tu veuilles récupérer le nom
du bouton cliquer par une procédure unique pour activer cette feuille, tu peux utliser ceci :

A )
Worksheet(Application.CommandBars.ActionControl.Caption).select


B ) tu peux utiliser aussi un bouton (style combobox) dans une barre d'outils contenant tous les noms des feuilles du classeur et
suite à la sélection de l'usager d'un nom d'une feuille dans ce combobox, la feuille est sélectionnée.

Voici un exemple qui servait à afficher tous les classeurs d'un répertoire d'un fichier dans ce type de controle et de pouvoir
ouvrir le classeur sélectionné dans la liste du combobox. Ceci n'est que pour illustrer le principe !

'-------------------------------------------
Sub CréerUnMenuDeTypeCombobox()

Dim MBar As CommandBar
Dim MCtl As CommandBarControl
Dim Fichier As Variant

On Error Resume Next
Application.CommandBars("Liste des fichiers").Delete

With Application.CommandBars
Set MBar = .Add("Liste des fichiers")
End With
With MBar
..Top = 75
..Left = 20
..Visible = True
End With

With MBar.Controls
Set MCtl = .Add(msoControlComboBox)

With MCtl
..AddItem ""
Fichier = Dir("C:test*.xls") 'à définir
Do While Fichier <> ""
..AddItem Fichier
Fichier = Dir()
Loop
..Caption = "Fichiers"
..Width = 150
..OnAction = "OuvrirFichier"
End With
End With

End Sub

'------------------------------
Sub OuvrirFichier()

Dim Chemin As String, Fichier As String
Chemin = "c:test" 'à définir

With Application.CommandBars("Liste des fichiers") _
..Controls("Fichiers")
Ficher = .List(.ListIndex)
End With
If IsEmpty(Fichier) Then Exit Sub
If Dir(Chemin & Fichier) <> "" Then
Workbooks.Open Chemin & Fichier
Else
MsgBox "Impossible de localiser ce fichier."
End If
End Sub
'------------------------------


Salutations!



"arbiel" a écrit dans le message de news:
Bonjour à tous

Quelqu'un pourrait-il me dire où je peux trouver les détails du
fonctionnement de la propriété Application.caller lorque l'appel ne provient
pas d'une fonction personnalisée utilisée dans une cellule de feuille de
calcul ?


Explications :

1) L'aide en ligne ne donne d'informations que pour les appels à partir de
fonctions personnalisées.

2) Certains de mes fichiers contiennent de nombreux onglets. Je n'utilise
souvent qu'un petit nombre d'entre eux, et pour facilier le navigation entre
les onglets, je masque ceux qui ne m'intéressent pas. J'utilise pour cela la
fenêtre propriété de VBA, mais cette solution ne me satisfait pas.

J'envisage d'inclure dans le menu "Affichage", une commande "Onglets" qui
déclencherait un menu déroulant de commutateurs nommés comme les onglets du
fichier. L'utilisation serait strictement la même que celle de la commande
"Barre d'outils" qui permet d'afficher ou de masquer les barres d'outils.

Tous ces commutateurs déclencheraient l'exécution d'une même macro. Je sais
que la fonction Application.caller permet de récupérer des informations sur
la manière dont ladite macro aurait été lancée, et donc de retrouver le
commutateur, et par là, le nom de l'onglet à afficher ou à masquer, mais ces
informations ne sont absolument pas commentées dans l'aide en ligne.

D'avance, merci

AP