J'utilise une API qui n'est pas définie dans la même dll en fonction de la version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ?
Comment connaître toutes les constantes de compilation prédéfinies ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel Pierron
Bonjour Alain; Peut être tout simplement, dans la partie Déclarations:
#If WinVersion = xxx Then Private Declare Function applicable à ce cas. #Else Private Declare Function applicable aux autres cas. #End If
Dans laquelle bien sur, WinVersion renvoie le paramètre nécessaire. Exemple simple: #If UNICODE Then Private Declare Function CharNext Lib "user32" Alias "CharNextW" (ByVal lpsz As Any) As Long #Else Private Declare Function CharNext Lib "user32" Alias "CharNextA" (ByVal lpsz As Any) As Long #End If
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
J'utilise une API qui n'est pas définie dans la même dll en fonction de la version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ? Comment connaître toutes les constantes de compilation prédéfinies ?
Merci.
Alain CROS.
Bonjour Alain;
Peut être tout simplement, dans la partie Déclarations:
#If WinVersion = xxx Then
Private Declare Function applicable à ce cas.
#Else
Private Declare Function applicable aux autres cas.
#End If
Dans laquelle bien sur, WinVersion renvoie le paramètre nécessaire.
Exemple simple:
#If UNICODE Then
Private Declare Function CharNext Lib "user32" Alias "CharNextW" (ByVal lpsz As
Any) As Long
#Else
Private Declare Function CharNext Lib "user32" Alias "CharNextA" (ByVal lpsz As
Any) As Long
#End If
MP
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:eRCc1WsnDHA.2536@tk2msftngp13.phx.gbl...
Bonjour.
J'utilise une API qui n'est pas définie dans la même dll en fonction de la
version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion
d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ?
Comment connaître toutes les constantes de compilation prédéfinies ?
Bonjour Alain; Peut être tout simplement, dans la partie Déclarations:
#If WinVersion = xxx Then Private Declare Function applicable à ce cas. #Else Private Declare Function applicable aux autres cas. #End If
Dans laquelle bien sur, WinVersion renvoie le paramètre nécessaire. Exemple simple: #If UNICODE Then Private Declare Function CharNext Lib "user32" Alias "CharNextW" (ByVal lpsz As Any) As Long #Else Private Declare Function CharNext Lib "user32" Alias "CharNextA" (ByVal lpsz As Any) As Long #End If
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
J'utilise une API qui n'est pas définie dans la même dll en fonction de la version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ? Comment connaître toutes les constantes de compilation prédéfinies ?
Merci.
Alain CROS.
Alain CROS
Bonjour.
Merci pour ta réponse. J' ai essayé de faire quelque chose du genre If Application.OperatingSystem = window98 then #Const WinVersion = 1 end if Puis #If WinVersion = 1 ... comme suggéré mais ça ne fonctionne pas. C'est toujours la même qui est déclarée. Je pense qu'il doit exister une constante de compilation prédéfinie genre "W2000". Mes recherches ne m'ont rapportées que les constantes suivantes : VBA6, UNICODE, WIN32, MAC, WIN16. Si quelqu'un connaît un site traitant de la compilation conditionnelle sous vba, qu'il n'hésite pas a en communiquer l'adresse. Dans un premier temps, je resterais avec ma gestion d'erreur.
Alain CROS.
"Michel Pierron" a écrit dans le message de news:
Bonjour Alain; Peut être tout simplement, dans la partie Déclarations:
#If WinVersion = xxx Then Private Declare Function applicable à ce cas. #Else Private Declare Function applicable aux autres cas. #End If
Dans laquelle bien sur, WinVersion renvoie le paramètre nécessaire. Exemple simple: #If UNICODE Then Private Declare Function CharNext Lib "user32" Alias "CharNextW" (ByVal lpsz As Any) As Long #Else Private Declare Function CharNext Lib "user32" Alias "CharNextA" (ByVal lpsz As Any) As Long #End If
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
J'utilise une API qui n'est pas définie dans la même dll en fonction de la version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ? Comment connaître toutes les constantes de compilation prédéfinies ?
Merci.
Alain CROS.
Bonjour.
Merci pour ta réponse.
J' ai essayé de faire quelque chose du genre
If Application.OperatingSystem = window98 then
#Const WinVersion = 1
end if
Puis #If WinVersion = 1 ... comme suggéré mais ça ne fonctionne pas.
C'est toujours la même qui est déclarée.
Je pense qu'il doit exister une constante de compilation prédéfinie genre "W2000".
Mes recherches ne m'ont rapportées que les constantes suivantes :
VBA6, UNICODE, WIN32, MAC, WIN16.
Si quelqu'un connaît un site traitant de la compilation conditionnelle sous vba, qu'il n'hésite pas a en communiquer l'adresse.
Dans un premier temps, je resterais avec ma gestion d'erreur.
Alain CROS.
"Michel Pierron" <mpierron@europtest.com> a écrit dans le message de news: OoVUxWtnDHA.2312@TK2MSFTNGP12.phx.gbl...
Bonjour Alain;
Peut être tout simplement, dans la partie Déclarations:
#If WinVersion = xxx Then
Private Declare Function applicable à ce cas.
#Else
Private Declare Function applicable aux autres cas.
#End If
Dans laquelle bien sur, WinVersion renvoie le paramètre nécessaire.
Exemple simple:
#If UNICODE Then
Private Declare Function CharNext Lib "user32" Alias "CharNextW" (ByVal lpsz As
Any) As Long
#Else
Private Declare Function CharNext Lib "user32" Alias "CharNextA" (ByVal lpsz As
Any) As Long
#End If
MP
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:eRCc1WsnDHA.2536@tk2msftngp13.phx.gbl...
Bonjour.
J'utilise une API qui n'est pas définie dans la même dll en fonction de la
version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion
d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ?
Comment connaître toutes les constantes de compilation prédéfinies ?
Merci pour ta réponse. J' ai essayé de faire quelque chose du genre If Application.OperatingSystem = window98 then #Const WinVersion = 1 end if Puis #If WinVersion = 1 ... comme suggéré mais ça ne fonctionne pas. C'est toujours la même qui est déclarée. Je pense qu'il doit exister une constante de compilation prédéfinie genre "W2000". Mes recherches ne m'ont rapportées que les constantes suivantes : VBA6, UNICODE, WIN32, MAC, WIN16. Si quelqu'un connaît un site traitant de la compilation conditionnelle sous vba, qu'il n'hésite pas a en communiquer l'adresse. Dans un premier temps, je resterais avec ma gestion d'erreur.
Alain CROS.
"Michel Pierron" a écrit dans le message de news:
Bonjour Alain; Peut être tout simplement, dans la partie Déclarations:
#If WinVersion = xxx Then Private Declare Function applicable à ce cas. #Else Private Declare Function applicable aux autres cas. #End If
Dans laquelle bien sur, WinVersion renvoie le paramètre nécessaire. Exemple simple: #If UNICODE Then Private Declare Function CharNext Lib "user32" Alias "CharNextW" (ByVal lpsz As Any) As Long #Else Private Declare Function CharNext Lib "user32" Alias "CharNextA" (ByVal lpsz As Any) As Long #End If
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
J'utilise une API qui n'est pas définie dans la même dll en fonction de la version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ? Comment connaître toutes les constantes de compilation prédéfinies ?
Merci.
Alain CROS.
Frédéric Sigonneau
Bonjour Alain,
Je n'ai pas de tuyau particulier sur les directives de compilation conditionnelle. Je pense qu'elles sont en petit nombre et, pour ce qui est du système d'exploitation, qu'elles ne font pas de distinction plus "fine" que WIN16 et WIN32. Ceci dit, sans gestion d'erreur, tu peux aussi déclarer les deux API différentes et, dans ton code, tester le système pour utiliser l'une ou l'autre. Si une des fonctions a été conçue pour l'architecture NT et l'autre pour les versions 32 bits de Windows/Dos, le test demande assez peu de code..
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonjour.
Merci pour ta réponse. J' ai essayé de faire quelque chose du genre If Application.OperatingSystem = window98 then #Const WinVersion = 1 end if Puis #If WinVersion = 1 ... comme suggéré mais ça ne fonctionne pas. C'est toujours la même qui est déclarée. Je pense qu'il doit exister une constante de compilation prédéfinie genre "W2000". Mes recherches ne m'ont rapportées que les constantes suivantes : VBA6, UNICODE, WIN32, MAC, WIN16. Si quelqu'un connaît un site traitant de la compilation conditionnelle sous vba, qu'il n'hésite pas a en communiquer l'adresse. Dans un premier temps, je resterais avec ma gestion d'erreur.
Alain CROS.
"Michel Pierron" a écrit dans le message de news:
Bonjour Alain; Peut être tout simplement, dans la partie Déclarations:
#If WinVersion = xxx Then Private Declare Function applicable à ce cas. #Else Private Declare Function applicable aux autres cas. #End If
Dans laquelle bien sur, WinVersion renvoie le paramètre nécessaire. Exemple simple: #If UNICODE Then Private Declare Function CharNext Lib "user32" Alias "CharNextW" (ByVal lpsz As Any) As Long #Else Private Declare Function CharNext Lib "user32" Alias "CharNextA" (ByVal lpsz As Any) As Long #End If
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
J'utilise une API qui n'est pas définie dans la même dll en fonction de la version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ? Comment connaître toutes les constantes de compilation prédéfinies ?
Merci.
Alain CROS.
Bonjour Alain,
Je n'ai pas de tuyau particulier sur les directives de compilation
conditionnelle. Je pense qu'elles sont en petit nombre et, pour ce qui est du
système d'exploitation, qu'elles ne font pas de distinction plus "fine" que
WIN16 et WIN32.
Ceci dit, sans gestion d'erreur, tu peux aussi déclarer les deux API différentes
et, dans ton code, tester le système pour utiliser l'une ou l'autre. Si une des
fonctions a été conçue pour l'architecture NT et l'autre pour les versions 32
bits de Windows/Dos, le test demande assez peu de code..
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonjour.
Merci pour ta réponse.
J' ai essayé de faire quelque chose du genre
If Application.OperatingSystem = window98 then
#Const WinVersion = 1
end if
Puis #If WinVersion = 1 ... comme suggéré mais ça ne fonctionne pas.
C'est toujours la même qui est déclarée.
Je pense qu'il doit exister une constante de compilation prédéfinie genre "W2000".
Mes recherches ne m'ont rapportées que les constantes suivantes :
VBA6, UNICODE, WIN32, MAC, WIN16.
Si quelqu'un connaît un site traitant de la compilation conditionnelle sous vba, qu'il n'hésite pas a en communiquer l'adresse.
Dans un premier temps, je resterais avec ma gestion d'erreur.
Alain CROS.
"Michel Pierron" <mpierron@europtest.com> a écrit dans le message de news: OoVUxWtnDHA.2312@TK2MSFTNGP12.phx.gbl...
Bonjour Alain;
Peut être tout simplement, dans la partie Déclarations:
#If WinVersion = xxx Then
Private Declare Function applicable à ce cas.
#Else
Private Declare Function applicable aux autres cas.
#End If
Dans laquelle bien sur, WinVersion renvoie le paramètre nécessaire.
Exemple simple:
#If UNICODE Then
Private Declare Function CharNext Lib "user32" Alias "CharNextW" (ByVal lpsz As
Any) As Long
#Else
Private Declare Function CharNext Lib "user32" Alias "CharNextA" (ByVal lpsz As
Any) As Long
#End If
MP
"Alain CROS" <Personne@ICI> a écrit dans le message de
news:eRCc1WsnDHA.2536@tk2msftngp13.phx.gbl...
Bonjour.
J'utilise une API qui n'est pas définie dans la même dll en fonction de la
version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion
d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ?
Comment connaître toutes les constantes de compilation prédéfinies ?
Je n'ai pas de tuyau particulier sur les directives de compilation conditionnelle. Je pense qu'elles sont en petit nombre et, pour ce qui est du système d'exploitation, qu'elles ne font pas de distinction plus "fine" que WIN16 et WIN32. Ceci dit, sans gestion d'erreur, tu peux aussi déclarer les deux API différentes et, dans ton code, tester le système pour utiliser l'une ou l'autre. Si une des fonctions a été conçue pour l'architecture NT et l'autre pour les versions 32 bits de Windows/Dos, le test demande assez peu de code..
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonjour.
Merci pour ta réponse. J' ai essayé de faire quelque chose du genre If Application.OperatingSystem = window98 then #Const WinVersion = 1 end if Puis #If WinVersion = 1 ... comme suggéré mais ça ne fonctionne pas. C'est toujours la même qui est déclarée. Je pense qu'il doit exister une constante de compilation prédéfinie genre "W2000". Mes recherches ne m'ont rapportées que les constantes suivantes : VBA6, UNICODE, WIN32, MAC, WIN16. Si quelqu'un connaît un site traitant de la compilation conditionnelle sous vba, qu'il n'hésite pas a en communiquer l'adresse. Dans un premier temps, je resterais avec ma gestion d'erreur.
Alain CROS.
"Michel Pierron" a écrit dans le message de news:
Bonjour Alain; Peut être tout simplement, dans la partie Déclarations:
#If WinVersion = xxx Then Private Declare Function applicable à ce cas. #Else Private Declare Function applicable aux autres cas. #End If
Dans laquelle bien sur, WinVersion renvoie le paramètre nécessaire. Exemple simple: #If UNICODE Then Private Declare Function CharNext Lib "user32" Alias "CharNextW" (ByVal lpsz As Any) As Long #Else Private Declare Function CharNext Lib "user32" Alias "CharNextA" (ByVal lpsz As Any) As Long #End If
MP
"Alain CROS" a écrit dans le message de news:
Bonjour.
J'utilise une API qui n'est pas définie dans la même dll en fonction de la version de Windows.
J'aurais préféré utiliser une compilation conditionnelle plutôt qu'une gestion d'erreur.
Existe t'il une constante de compilation prédéfinie utilisable dans ce cas ? Comment connaître toutes les constantes de compilation prédéfinies ?
Merci.
Alain CROS.
Alain CROS
Bonjour.
Ok Merci. C'est un peu plus long comme ça mais faisable aussi.
Alain CROS.
"Frédéric Sigonneau" a écrit dans le message de news:
Bonjour Alain,
Je n'ai pas de tuyau particulier sur les directives de compilation conditionnelle. Je pense qu'elles sont en petit nombre et, pour ce qui est du système d'exploitation, qu'elles ne font pas de distinction plus "fine" que WIN16 et WIN32. Ceci dit, sans gestion d'erreur, tu peux aussi déclarer les deux API différentes et, dans ton code, tester le système pour utiliser l'une ou l'autre. Si une des fonctions a été conçue pour l'architecture NT et l'autre pour les versions 32 bits de Windows/Dos, le test demande assez peu de code..
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonjour.
Ok Merci.
C'est un peu plus long comme ça mais faisable aussi.
Alain CROS.
"Frédéric Sigonneau" <frederic.sigonneau@wanadoo.fr> a écrit dans le message de news: 3FA2A387.875AD8D7@wanadoo.fr...
Bonjour Alain,
Je n'ai pas de tuyau particulier sur les directives de compilation
conditionnelle. Je pense qu'elles sont en petit nombre et, pour ce qui est du
système d'exploitation, qu'elles ne font pas de distinction plus "fine" que
WIN16 et WIN32.
Ceci dit, sans gestion d'erreur, tu peux aussi déclarer les deux API différentes
et, dans ton code, tester le système pour utiliser l'une ou l'autre. Si une des
fonctions a été conçue pour l'architecture NT et l'autre pour les versions 32
bits de Windows/Dos, le test demande assez peu de code..
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Ok Merci. C'est un peu plus long comme ça mais faisable aussi.
Alain CROS.
"Frédéric Sigonneau" a écrit dans le message de news:
Bonjour Alain,
Je n'ai pas de tuyau particulier sur les directives de compilation conditionnelle. Je pense qu'elles sont en petit nombre et, pour ce qui est du système d'exploitation, qu'elles ne font pas de distinction plus "fine" que WIN16 et WIN32. Ceci dit, sans gestion d'erreur, tu peux aussi déclarer les deux API différentes et, dans ton code, tester le système pour utiliser l'une ou l'autre. Si une des fonctions a été conçue pour l'architecture NT et l'autre pour les versions 32 bits de Windows/Dos, le test demande assez peu de code..
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !