Call macro

  • Initiateur de la discussion Temjeh
  • Date de début
T

Temjeh

Guest
Bonjour le forum
Encore une question simple

Comment faire pour appeler (F8)avec ceci une macro caché?

Private Sub Workbook_Activate()
Application.OnKey '{F8}', 'Macro1'
End Sub

Je veut appeler

Sub Macro1(show)
UserForm4.show
UserForm2.show
End Sub

J,ai essayé:
Application.OnKey '{F8}', 'show'
Application.OnKey '{F8}', call 'Macro1'
Application.OnKey '{F8}', call 'show'
Application.OnKey '{F8}', 'call Macro1'
On met erreur non facultatif ou de compilation

Merci beaucoup

Temjeh
 

ChTi160

XLDnaute Barbatruc
Salut'Temjeh'
je viens de tester ceci et ca marche
dans ThisWorBook
Private Sub Workbook_Activate()
Application.OnKey '{F8}', 'Macro1'
End Sub
dans un module Module 1
J'ai mis
Sub Macro1()
MsgBox 'Coucou'
End Sub
eh bien lorsque je fait F8 devine çà me fait 'Coucou' ????
Amicalement
Jean Marie

Message édité par: ChTi160, à: 07/04/2005 14:09
 
M

MerciTemjeh

Guest
Merci bertrand

Non le show est obligatoire si ekke doit être invisible par outils...macro donc je doit l'appeler

Je sais que ca fonctionne mais je veut la rendre invisible
Merci

Temjeh
 

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour Temjeh, bonjour bertrand, bonjour Jean-Marie

Si tu veux que ton appli fonctionne tout en 'cachant' ta 'Macro1' depuis le Menu / Outils / Macros il te suffit depuis ton module de mettre entre parenthèses la procédure suivante. Ainsi ta macro n'et pas visible dans Macros et tu peux l'appeler selon le code fourni par ChTi160.
Code:
Sub Macro1(Optional Factice As String)
UserForm1.Show
End Sub
Code:
Private Sub Workbook_Activate()
Application.OnKey '{F8}', 'Macro1'
End Sub
;)
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Temjeh, ChTi160, bertrand et Eric C.

Eric a raison, si le l'objectif est uniquement de rendre invisible cette procédure dans la boîte de dialogue d'appel macro (ALT + F8), tu as la possibilité de rendre l'argument show falcultatif en ajoutant Optional dans le titre de la procédure.

Une autre façon de faire pour le même résultat est de mettre Option Private Module en entête du module général contenant la procédure (comme tu le fais pour Option Explicit).

Sinon, si tu souhaites vraiment passer un argument dans un appel par la méthode Application.OnKey, tu peux procéder ainsi :

Dans le module ThisWorkbook :
Private Sub Workbook_Activate()
'le nom de la procédure et l'argument sont séparés par un espace et le tout, entouré par
'des apostrophes (+ guillemets bien sûr !)

      Application.OnKey '{F8}', ''Macro1 True''
      Application.OnKey '{F9}', ''Macro1 False''
End Sub
Dans un module de code général (Module1 par exemple) :
Public Sub Macro1(Arg As Boolean)
      MsgBox 'Appel par la touche : ' & IIf(Arg, 'F8', 'F9')
End Sub
Cordialement.
 

Toutchoco

XLDnaute Nouveau
Bonsoir à tous !
Au sujet de la macro que l'on a rendue invisible.. Comment aller la modifier ?
En fait j'ai créée un fichier qui à l'ouverture
affiche pendant qqs secondes un userform d'info
QQs jours plus tard je reviens sur ce fichier et je souhaite diminuer le tps d'affichage Mais je ne sais plus comment accéder à la macro...

Donc j'ai carrément supprimé le userform.
Y avait-il une autre solution ?
Merci à tous
 

Discussions similaires

Statistiques des forums

Discussions
313 032
Messages
2 094 576
Membres
106 054
dernier inscrit
Mohajer