Microsoft 365 Fonctions conditionnelles Office 64 bits et Office 32 bits

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

RollyLCXL

XLDnaute Junior
Bonjour,

Il me serait utile de pouvoir utiliser des fonctions ... en étant dans Office 64 bits ou en étant dans Office 32 bits. Selon ce que je lis il semble que cela soit possible. Mais lorsque j'ouvre le fichier tous les codes pour la version 32 bits boguent. Ils deviennent en rouge et cela affiche des messages de Erreurs de compilation.

Il y a quelque chose qui doit m'échapper. Le #If VBA 7 est pour le 64 bits ... juste au cas mais je sais bien que vous savez ceci.

Y aurait il quelque chose à ajuster afin que cela puisse fonctionner?

Merci à l'avance.


#If VBA7 Then
Public Declare PtrSafe Function FindExecutableA Lib "shell32.dll" _
(ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As LongPtr
#Else
Public Declare Function FindExecutableA Lib "shell32.dll" _
(ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
#End If
 
Bonsoir.
De toute façon, quelles soient signalées en erreur ou pas, les instructions placées après une instruction de compilation conditionnelle #Else alors que la condition au #If était vraie ne doit rien gêner en réalité. Elles ne sont vraiment pas compilées.
 
Bonsoir.
De toute façon, quelles soient signalées en erreur ou pas, les instructions placées après une instruction de compilation conditionnelle #Else alors que la condition au #If était vraie ne doit rien gêner en réalité. Elles ne sont vraiment pas compilées.
Merci. Je comprends ce que vous mentionnez et je m'aurais attendu à ceci. Mais il semble que ce n'est pas le cas. Si je suis en version 64 bits de Office ... en ouvrant le fichier il y a le message Erreur de compilation et tous les codes en dessous de #Else ... sont en rouge et ça bogue.

C'est pourquoi je me dis qu'il doit manquer quelque chose ...
 
Ça bogue comment ? Quels messages ?
Je viens de découvrir une chose car j'avais placé des apostrophes devant un code.

Lorsque j'enlève les apostrophes ... c'est à ce moment que j'obtiens le message d'erreur. Et le code du 32 bits donc sous le #Else ... devient en rouge! Mais ensuite je n'ai plus le message d'erreur. J'ai 9 fonctions avec ceci dans le fichier et tous les codes pour le 32 bits sont en rouge.

Mais à l'ouverture ensuite je n'ai pas le message d'erreur

Je ne sais si le fait que le code soit et demeure en rouge puise causer problème pendant l'utilisation du fichier.

Qu'en dîtes vous?

Voici le message.

"Erreur de compilation

Le code contenu dans ce projet doit être mis à jour pour pouvoir être utilisé sur les systèmes 64 bits. Vérifier et mettez à jour les instructions Declare, puis marquez-les avec l'attribut PtrSafe."

C'est le code en bas du #Else qui bug. Et ça sélectionne le mot Function ... lorsque j'enlève les apostrophes ... qui avaient pour but de ne pas utiliser le code.

Merci à l'avance.

#If VBA7 Then

Declare PtrSafe Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As LongPtr) As Long
Declare PtrSafe Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd As LongPtr, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare PtrSafe Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As LongPtr, ByVal lParam As LongPtr) As Long

Private Declare PtrSafe Function AccessibleObjectFromWindow Lib "oleacc" ( _
ByVal hwnd As LongPtr, ByVal dwId As Long, riid As Any, ppvObject As Object) As Long
Private Declare PtrSafe Function FindWindowExA Lib "user32" ( _
ByVal hwndParent As LongPtr, ByVal hwndChildAfter As LongPtr, _
ByVal lpszClass As String, ByVal lpszWindow As String) As LongPtr

#Else

Declare Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Declare Function GetWindowText Lib "user32" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare Function EnumWindows Lib "user32" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

Private Declare Function AccessibleObjectFromWindow Lib "oleacc" ( _
ByVal hwnd As Long, ByVal dwId As Long, riid As Any, ppvObject As Object) As Long
Private Declare Function FindWindowExA Lib "user32" ( _
ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, ByVal lpszWindow As String) As Long

#End If
 
Bonjour à vous,

@RollyLCXL ce comportement est tout à fait normal !
Vous êtes en office 64 bits, donc tout ce qui est déclaration en 32 n'est pas compris par VBA
Mais avec une compilation conditionnelle comme vous l'avez fait, il n'y a absolument aucun problème

Si vous lancer une compilation de votre VBAProject, il ne doit rien se passer sur ces lignes
1758696644802.png


Bonne journée
 
Bonjour à vous,

@RollyLCXL ce comportement est tout à fait normal !
Vous êtes en office 64 bits, donc tout ce qui est déclaration en 32 n'est pas compris par VBA
Mais avec une compilation conditionnelle comme vous l'avez fait, il n'y a absolument aucun problème

Si vous lancer une compilation de votre VBAProject, il ne doit rien se passer sur ces lignes
Regarde la pièce jointe 1222789

Bonne journée
Super! Merci beaucoup.
 
Bonjour,

Il me serait utile de pouvoir utiliser des fonctions ... en étant dans Office 64 bits ou en étant dans Office 32 bits. Selon ce que je lis il semble que cela soit possible. Mais lorsque j'ouvre le fichier tous les codes pour la version 32 bits boguent. Ils deviennent en rouge et cela affiche des messages de Erreurs de compilation.

...

#If VBA7 Then
Public Declare PtrSafe Function FindExecutableA Lib "shell32.dll" _
(ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As LongPtr
#Else
Public Declare Function FindExecutableA Lib "shell32.dll" _
(ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
#End If
bonjour,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
46
Affichages
2 K
Réponses
7
Affichages
1 K
Retour