XL 2016 Horloge dans feuille de calcul Excel

ReneDav14000

XLDnaute Occasionnel
Bonjour à tous et merci de m'accueillir sur votre site.
Je ne suis pas un expert en Vba, mais je me débrouille un peu.
J'ai 61ans (bientôt la retraite) et j'exerce dans la fonction publique territoriale.
Je développe (j'essaie plutôt) des applications Excel pour améliorer les routines de travail.

J'ai donc un sujet à vous soumettre :
Avec l'aide de différents tuto, j'ai une horloge analogique que je souhaite insérer dans une feuille de calcul et que l'horloge se mette en route dès l'ouverture du fichier.
La feuille "Accueil" où se trouve l'horloge est la feuille qui sera affichée en première.
Pour le moment se met en route en cliquant sur un bouton (feuille "données horloge").
Merci par avance pour votre aide
 

Pièces jointes

  • Projet2.xlsm
    262.2 KB · Affichages: 62

Phil69970

XLDnaute Barbatruc
Merci bien Lionel

Patrick avec le fichier de Lionel
Et c'est quoi la modif que tu as faite ?

J'ai un message d'erreur ici
1665091369555.png


1665091298381.png

Je fais F5 et le code continue et j'obtiens ceci...

1665091626954.png


@Phil69970
 

Usine à gaz

XLDnaute Barbatruc
Re-Phil69970 :)
Modif ci -dessous :
VB:
Option Explicit
#If VBA7 Then
    Private Declare PtrSafe Function SetTimer Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As Long
    Private Declare PtrSafe Function KillTimer Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal nIDEvent As Long) As Long
#Else
    Private Declare PtrSafe Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As Long
    Private Declare PtrSafe Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
#End If
"ByVal hwnd As Long" modifié en "ByVal hwnd As LongPtr"

Je n'avais pas l'erreur que tu signales.
lionel :)
 

Staple1600

XLDnaute Barbatruc
@Usine à gaz
Le VBA ça ne fait pas que s'utiliser, il faut aussi chercher à comprendre...:rolleyes:
Enrichi (BBcode):
Option Explicit
#If VBA7 Then ' donc 64 bits
    Private Declare PtrSafe Function SetTimer Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As Long
    Private Declare PtrSafe Function KillTimer Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal nIDEvent As Long) As Long
#Else 'sinon 32 bits !!!
    Private Declare  Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    Private Declare  Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
#End If
Le PtrSafe ne s'ajoute que dans la partie dédiée au 64 bits
C'est d'ailleurs le message d'erreur explicite qui s'affiche dans Excel.
18117_e7da55071854e754e4639a42e150804c.jpg
 

Usine à gaz

XLDnaute Barbatruc
@Usine à gaz
Le VBA ça ne fait pas que s'utiliser, il faut aussi chercher à comprendre...:rolleyes:
Enrichi (BBcode):
Option Explicit
#If VBA7 Then ' donc 64 bits
    Private Declare PtrSafe Function SetTimer Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As Long
    Private Declare PtrSafe Function KillTimer Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal nIDEvent As Long) As Long
#Else 'sinon 32 bits !!!
    Private Declare  Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    Private Declare  Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
#End If
Le PtrSafe ne s'ajoute que dans la partie dédiée au 64 bits
C'est d'ailleurs le message d'erreur explicite qui s'affiche dans Excel.
18117_e7da55071854e754e4639a42e150804c.jpg
Bonjour JM :)
"Le VBA ça ne fait pas que s'utiliser, il faut aussi chercher à comprendre...:"
Pour moi qui n'est pas formé au VBA et qui ne parle pas un mot d'anglais, c'est cause perdue au moins pour l'instant.
Mon travail ne me laisse pas assez de temps pour me former.
Bien sûr, j'essaie de comprendre en testant et en adaptant les codes qui me sont donnés en réponses à mes fils et aussi ceux que je remarques sur d'autres fils... ça me prend déjà pas mal de temps.
Et pourtant, j'adore ça.... si la vie m'en laisse le temps quand ce sera possible, je m'y "collerai".
lionel :)
 

patricktoulon

XLDnaute Barbatruc

Staple1600

XLDnaute Barbatruc
Re

Précisions
@patricktoulon
Sauf erreur
Cette syntaxe a cette fonction, non ?
VB:
#If VBA7 Then 'déclarations des API pour 64 bits
    Private Declare PtrSafe ....
    Private Declare PtrSafeF...
#Else ' déclarations 32 bits
Donc logiquement on ne doit pas y trouver de PtrSafe ni de LongPrt dans la partie 32 bits , non ?
(comme c'est le cas dans le message#173)

D'où la correction dans le message 174#


Usine à Gaz à dit:
Mon travail ne me laisse pas assez de temps pour me former.
Excuse un peu facile ;)
Le forum n'est pas peuplé que de retraités
Moi aussi, je bosse.
Suis inscrit sur XLD depuis 2005, donc chaque jour de connexion est un peu d'autoformation parce que j'ai mis les mains dans le cambouis.
;)
 

patricktoulon

XLDnaute Barbatruc
@Staple1600
Donc logiquement on ne doit pas y trouver de PtrSafe ni de LongPrt dans la partie 32 bits , non ?
re
si dans la partie vb 7 32 bits
car vba 7 est dans nos bécanes depuis 2013 32 ou 64 bits
il se trouve que certaines api sur 2013 32 pro, les déclaration en vb7 sont nécessaires donc ptrsafe mais pas longptr
certaines autres api chez moi fonctionnent sous les 3 modes de déclaration
 

Discussions similaires

Statistiques des forums

Discussions
315 097
Messages
2 116 186
Membres
112 679
dernier inscrit
Yupanki