VBA Excel: Comptes à rebours avec arrêt auto (suite)

Résolu/Fermé
Aude - 28 mai 2017 à 14:37
 Aude - 28 mai 2017 à 22:26
Bonjour,

Je reviens vers vous à propos du compte à rebours, qui m'a énormément servi depuis 2014, (https://forums.commentcamarche.net/forum/affich-30889359-vba-excel-comptes-a-rebours-imbriques-avec-arret-auto et je vous en remercie encore!
Seulement, je viens de changer d'ordinateur et le fichier .xls proposé en 2014 ne passe plus sous Windows 10 64 bits (Excel 2013). En effet, lorsque j'ouvre le fichier, un message d'erreur apparaît, disant que "le contenu doit être mis à jour pour pouvoir être utilisé sur les systèmes 64 bits. Vérifiez et mettez à jour les instructions Declare, puis marquez-les avec l'attributs PtrSafe"; quelqu'un saurait-il faire les modifications demandées?

Je vous en remercie par avance!

A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
28 mai 2017 à 19:10
Bonjour,

Je n'ai pas ton code, mais le principe, pour conserver la compatibilité avec W32 et W64 est assez simple, tu devrais pouvoir l'appliquer toi-même d'après cet exemple :

Avant :
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long

Aprés :
#If Win64 Then
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Public Declare PtrSafe Function EmptyClipboard Lib "user32" () As LongPtr
Public Declare PtrSafe Function CloseClipboard Lib "user32" () As LongPtr
#Else
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
#End If
--
Cordialement
Patrice
1
Bonjour Patrice33740,

J'ai apporté les modifications suggérées, et le message d'erreur initial n'apparaît plus, merci!
Mais il a laissé place à un autre message d'erreur, sur d'autres lignes du code, à savoir "Incompatibilité de type", qui n'était jamais apparu sur W32; une idée??

Merci encore!
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
28 mai 2017 à 21:52
Dans les déclarations API, as-tu bien remplacé les 'As Long' par 'As LongPtr '
0
J'en avais oublié deux plus bas, et en apportant la modification, tout fonctionne parfaitement, merci beaucoup!!
0