Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Accès à des fonction Kernel32, en VBA

F22Raptor

XLDnaute Impliqué
Bonsoir à tous,
Réveillon studieux pour ma part !

Je rouvre un fichier fait il y a quelques années.
Au lancement, j'ai un premier message d'erreur :


Puis dans VBA, ce deuxième :


C'est dû à ces lignes marquées en rouge dans l'éditeur :

Private Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long

Private Declare Function LocalFileTimeToFileTime Lib "kernel32" (lpLocalFileTime As FILETIME, lpFileTime As FILETIME) As Long

Private Declare Function SetFileTime Lib "kernel32" (ByVal hfile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long

Private Declare Function OpenFile Lib "kernel32" (ByVal lpFileName As String, lpReOpenBuff As OFSTRUCT, ByVal wStyle As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long


Avez-vous une idée de la manière de faire fonctionner tout ça ?

Merci, et bon réveillon !
 

Dranreb

XLDnaute Barbatruc
Bonjour et bonne année.
En VBA il y a FileDateTime qui renvoie l'heure et la date de modification d'un fichier de nom spécifié.
et un Scripting.File quant à lui a des propriétés DateCreated, DateLastAccessed et DateLastModified
Alors je pense que des appels à kernel32 pour ça sont superflus.
Par contre beaucoup de contrôles ne faisant pas partie de la bibliothèque MSForms n'ont pas été adaptés pour le 64 bits, et il faudra probablement s'en passer.
 

F22Raptor

XLDnaute Impliqué
Merci messieurs !
Et merci Gégé pour le Doc Word.
Effectivement le lignes n'apparaissent plus en rouge.

Pour ceux qui connaissent le même problème : comme le montre le fichier Word, ça se règle en ajoutant PtrSafe
Par exemple :
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
devient
Private Declare PtrSafe Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Plus d'explications sur : https://learn.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/ptrsafe-keyword

En revanche, je devais certainement avoir une boite Calendrier (MSForms ?) sur le formulaire, qui n'apparaît plus.
Je vais ajouter des boîtes de saisie simple pour jour, mois, année.

Bonne année à tous !
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…