XL 2016 VBA - Application.OnTime plante dans un UserForm bien que la fonction soit publique

Dudu2

XLDnaute Barbatruc
Bonjour,

Je n'arrive pas à gérer un Application.Ontime dans un UserForm. Je ne veux pas passer par un Module écrit ou généré.
Excel ne trouve pas la fonction à activer à échéance bien que publique et complètement qualifiée !

Alors ce n'est peut-être simplement pas possible avec Appliction.OnTime. auquel cas il faudra trouver une autre méthode (Timer @patricktoulon sur CommandBar, autre ?)
 

Pièces jointes

  • Classeur1.xlsm
    25.1 KB · Affichages: 5

Dudu2

XLDnaute Barbatruc
Ok mais ton objet Planification il fait référence à un Application.Ontime qui est dans un Module.
Donc rien de nouveau à l'ouest. Dans mon UserForm je ne veux pas faire référence à un Module pour le Timer.
Je pensais que c'était ces fonctions QueryPerformanceXXX qui pouvaient jouer ce rôle. Donc non, elles y sont étrangères.
 

Dudu2

XLDnaute Barbatruc
Certes, mais le mécanisme que j'avais également utilisé dans une version similaire a besoin du Module pour fonctionner. Tout mon problème a été de me débarrasser de ce module pour n'avoir qu'à utiliser uniquement un UserForm qui contient tout le code, y compris la fonction Public en charge de son affichage, y compris le mécanisme de timer. Le UserForm est complètement autonome. Un seul objet à importer dans le code.
Je vais probablement publier la ressource correspondante sous peu.
 

Dudu2

XLDnaute Barbatruc
Voilà, c'était pour faire un MsgBoxPerso qui ne demande que l'importation du UserForm pour fonctionner.
Contrairement à ce type de MsgBoxPerso où un Module créé dynamiquement un UserForm ce qui demande d'autoriser l'accès au projet VBA.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
@Dranreb,
Ça ne change rien au fait qu'une méthode ne peut être invoquée ainsi, mais une procédure d'un module standard avec un argument, si.
En fait un argument peut quand même être précisé à condition de tout encadrer d'apostrophes.
J'ai essayé toutes les syntaxes possibles et imaginables (doubles-cotes, cotes, virgule, pas virgule, etc...) et je n'arrive pas à passer argument sur un Application.OnTime Now, "Fonction" + Argument ???
 

Dranreb

XLDnaute Barbatruc
Bonjour.
On a déjà dit que c'était définitivement inapplicable aux méthodes. Pareil pour un Timer par API.
Il faut donc obligatoirement passer par un module standard. C'est pourquoi j'utilise des modules standard effecteurs XPlanificateur et XRythmeur assez courts, ne nécessitant aucune maintenance et non utilisés par le programmeur d'application, vu que seuls s'en servent mes modules de classe Planification et Rythmeur d'emploi ultra simple.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Pour ce qui est de la syntaxe dans un module standard, j'ai ceci dans la Public Function IdtPlanificationLancée(ByVal Source As Planification) As Long du module XPlanificateur :
VB:
Application.OnTime Source.HeureOT, "'XPlanificateur.OnTimeJoue " & Idt & "'"
 

Dudu2

XLDnaute Barbatruc
Merci pour ton retour
1657127956364.gif

Ceci fonctionne donc !
VB:
Sub a()
    Dim i As Integer
    Dim j As Integer
    
    i = 12
    j = 24
    Application.OnTime Now, "'b " & i & ", " & j & "'"
End Sub

Sub b(i As Integer, j As Integer)
    MsgBox i & " " & j
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67