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

XL 2013 Declare PtrSafe FUNCTION.......

escouger

XLDnaute Occasionnel
Bonjour,

J'ai un tableau dans lequel figure l'instruction suivante:

Private Declare PtrSafe Function SetCurrentDirectoryA Lib "Kernel32" (ByVal lpPathName As String) As Long

Je dois déployer ce tableau sur plusieurs PC dont certains sont en 32 bits d'autres en 64 bits.

Avec Private Declare PtrSafe Function SetCurrentDirectoryA Lib "Kernel32" (ByVal lpPathName As String) As Long
cela fonctionne sur les systèmes 64 bits, mais pas sur les 32 bits.

Avec Private Declare Function SetCurrentDirectoryA Lib "Kernel32" (ByVal lpPathName As String) As Long
(donc sans le PtrSafe) cela fonctionne sur les systèmes 32 bits, mais plus sur les systèmes 64 bits.

Pour des questions de maintenance, je ne voudrais pas avoir à gérer 2 tableaux identiques hormis cette option "PtrSafe".
Y-a-t-il un moyen ?

Je ne sais pas :
1) comment tester si le PC est 32 bits ou 64bits?
2) conditionner une instruction "Déclare....

Est-ce-que la version d'Excel entre aussi en ligne de compte concernant ce paramètre PtrSafe ?

Si vous avez une idée pour dépasser ce problème elle sera la bienvenue

Merci d'avance

GE
 

Marc L

XLDnaute Occasionnel

Bonjour, bonjour !

Cela aurait été simple en utilisant les instructions internes au VBA comme [highlight]ChDrive[/code] & [highlight]ChDir[/code] !

_______________________________________________________________________________
Je suis Paris, Charlie, …
 

Dranreb

XLDnaute Barbatruc
Re : Declare PtrSafe FUNCTION.......

Bonjour Marc L.
Pouvez vous me dire, que je le sache une bonne fois pour toutes, si ChDir peut être utilisé (je sais déjà que ChDrive ne le peut pas) pour mettre un "\\QuelqueChose" en dossier courant ? Les demandeurs oublient chaque fois de me répondre, et je n'ai aucun réseau local à ma disposition pour faire des tests. Au moins je sais que SertCurrentDirectory marche quand il n'existe pas de lettre de lecteur (ou qu'on ne la connait pas), et positionne tout comme étant courant et ne fait pas comme VBA ce distinguo absurde entre lecteur courant et dossiers courants des différents lecteurs.
 
Dernière édition:

Marc L

XLDnaute Occasionnel

Non pas en réseau avec une adresse UNC, monter alors un lecteur …

En fait le besoin de changer le dossier courant est juste nécessaire
pour GetOpenFileName ou GetSaveAsFileName.

Pour les autres c'est inutile en incluant l'adresse réseau
comme par exemple pour FileDialog et sa propriété InitialFileName

 

Dranreb

XLDnaute Barbatruc
Re : Declare PtrSafe FUNCTION.......

Donc ce n'est pas comme vous disiez plus simple avec ChDrive et ChDir, c'est juste impossible dans la moitié des cas dans certains secteurs d'activité.
 

Marc L

XLDnaute Occasionnel

Si au moins le cadre avait été indiqué dans le post initial, donc dans le doute …

Et je vois trop de codes avec des appels externes au détriment de l'existant sous Office / VBA.

 

Discussions similaires

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