Une macro introuvable lors de son exécution depuis une autre macro

zephir94

XLDnaute Impliqué
Bonjour à tous,

J'ai crée une macro me permettant de créer un effacement de données au bout de 2 minutes.
dans cette macro j'appelle une autre macro qui efface les données dans une feuille.

Code:
Private Sub tempo()
Application.OnTime Now + TimeValue("00:02:00"), "effacer"
End Sub

et

Code:
Private Sub effacer()
 ThisWorkbook.Sheets("agent").Unprotect password:="dede"
   Range("J23") = ""
   Range("L23") = ""
   Range("N23") = ""
   Rows("200") = ""
 ThisWorkbook.Sheets("agent").Protect password:="dede"
MsgBox " Temps d'inactitvité dépassé, vos données ont étés effacées"
Exit Sub
End Sub

Au bout de deux minutes j'ai un message me disant que la macro effacer n'a pas été trouvé dans le classeur ou que les macros ne sont pas activées alors que les deux macros sont dans le module de la dite page ?

Merci à vous par avance pour m'aider à comprendre pourquoi
 
Dernière édition:

zephir94

XLDnaute Impliqué
Re : Une macro introuvable lors de son exécution depuis une autre macro

Merci à toi,
Ton fichier fonctionne parfaitement mais je ne comprends toujours pas pourquoi ma macro reste introuvable !
et j'ai bien aussi Option Explicit en haut de la page du module de l'userform qui déclenche la macro
 

Si...

XLDnaute Barbatruc
Re : Une macro introuvable lors de son exécution depuis une autre macro

salut

j'ai un message me disant que la macro effacer n'a pas été trouvé dans le classeur ou que les macros ne sont pas activées alors que les deux macros sont dans le module de la dite page ?

Toujours le même problème : où écrire les macros ?

Si… ta macro d’appel est dans la page de code de la feuille Agent, l’autre
VB:
Sub Effacer()
  Sheets("Agent").Unprotect "dede"
  Range("J23,L23,N23") = ""
  Rows(20) = ""
  Sheets("Agent").Protect "dede"
  MsgBox " Temps d'inactivité dépassé, vos données ont été effacées", 0, "Message"
End Sub
doit-être dans la page d’un module standard !

Tu peux mettre les 2 macros dans un Module standard comme l’a fait JCGL;) mais là encore il faudra faire attention de quelle feuille est lancée la première.

Si… ta macro d’appel n’est pas dans la page de code de la feuille, l’autre doit-être dans la page d’un module standard sous cette forme :
Code:
Sub Effacer()
  With Sheets("Agent")
    .Unprotect "dede"
    .Range("J23,L23,N23") = ""
    .Rows(20) = ""
    .Protect "dede"
  End With
  MsgBox " Temps d'inactivité dépassé, vos données ont été effacées", 0, "Message"
End Sub
 

Pièces jointes

  • Macros.xlsm
    42.8 KB · Affichages: 20
  • Macros.xlsm
    42.8 KB · Affichages: 21
  • Macros.xlsm
    42.8 KB · Affichages: 20

job75

XLDnaute Barbatruc
Re : Une macro introuvable lors de son exécution depuis une autre macro

Bonjour à tous,

Comme le dit Si... avec :

Code:
Private Sub tempo()
Application.OnTime Now + TimeValue("00:02:00"), "effacer"
End Sub
il faut que la macro "effacer" soit dans un module standard.

Mais on peut la mettre dans le code d'une feuille si l'on précise le CodeName de cette feuille :

Code:
Private Sub tempo()
Application.OnTime Now + TimeValue("00:02:00"), "Feuil1.effacer"
End Sub
qu'on peut éventuellement écrire aussi :

Code:
Private Sub tempo()
Application.OnTime Now + TimeValue("00:02:00"), Sheets("agent").CodeName & ".effacer"
End Sub
ou mieux, si c'est la feuille de la macro "tempo" :

Code:
Private Sub tempo()
Application.OnTime Now + TimeValue("00:02:00"), Me.CodeName & ".effacer"
End Sub
Nota : la macro "effacer" peut être Private, facile à vérifier...

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 235
Membres
103 497
dernier inscrit
JP9231