Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
chaîne "OK" pour que le programme appelant sache simplement si la fonction
a marché ou bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
par le programme appelant, la question ne se pose pas. La valeur retournée
doit être d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
voudrais donc savoir si on privilégie le retour d'un Integer pour des
raisons d'optimisation ou de "règle de l'art ou d'habitude de
programmation" plutôt qu'un String ou bien si c'est sans aucune importance
?
Merci pour votre avis.
Ted
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
chaîne "OK" pour que le programme appelant sache simplement si la fonction
a marché ou bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
par le programme appelant, la question ne se pose pas. La valeur retournée
doit être d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
voudrais donc savoir si on privilégie le retour d'un Integer pour des
raisons d'optimisation ou de "règle de l'art ou d'habitude de
programmation" plutôt qu'un String ou bien si c'est sans aucune importance
?
Merci pour votre avis.
Ted
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
chaîne "OK" pour que le programme appelant sache simplement si la fonction
a marché ou bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
par le programme appelant, la question ne se pose pas. La valeur retournée
doit être d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
voudrais donc savoir si on privilégie le retour d'un Integer pour des
raisons d'optimisation ou de "règle de l'art ou d'habitude de
programmation" plutôt qu'un String ou bien si c'est sans aucune importance
?
Merci pour votre avis.
Ted
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la chaîne
"OK" pour que le programme appelant sache simplement si la fonction a marché
ou bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable par
le programme appelant, la question ne se pose pas. La valeur retournée doit
être d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je voudrais
donc savoir si on privilégie le retour d'un Integer pour des raisons
d'optimisation ou de "règle de l'art ou d'habitude de programmation" plutôt
qu'un String ou bien si c'est sans aucune importance ?
Merci pour votre avis.
Ted
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la chaîne
"OK" pour que le programme appelant sache simplement si la fonction a marché
ou bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable par
le programme appelant, la question ne se pose pas. La valeur retournée doit
être d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je voudrais
donc savoir si on privilégie le retour d'un Integer pour des raisons
d'optimisation ou de "règle de l'art ou d'habitude de programmation" plutôt
qu'un String ou bien si c'est sans aucune importance ?
Merci pour votre avis.
Ted
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la chaîne
"OK" pour que le programme appelant sache simplement si la fonction a marché
ou bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable par
le programme appelant, la question ne se pose pas. La valeur retournée doit
être d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je voudrais
donc savoir si on privilégie le retour d'un Integer pour des raisons
d'optimisation ou de "règle de l'art ou d'habitude de programmation" plutôt
qu'un String ou bien si c'est sans aucune importance ?
Merci pour votre avis.
Ted
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et
qui ne retournent rien d'utile.
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et
qui ne retournent rien d'utile.
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et
qui ne retournent rien d'utile.
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
"OK" pour que le programme appelant sache simplement si la fonction a
bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
le programme appelant, la question ne se pose pas. La valeur retournée
d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
savoir si on privilégie le retour d'un Integer pour des raisons
ou de "règle de l'art ou d'habitude de programmation" plutôt qu'un String
bien si c'est sans aucune importance ?
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
"OK" pour que le programme appelant sache simplement si la fonction a
bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
le programme appelant, la question ne se pose pas. La valeur retournée
d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
savoir si on privilégie le retour d'un Integer pour des raisons
ou de "règle de l'art ou d'habitude de programmation" plutôt qu'un String
bien si c'est sans aucune importance ?
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
"OK" pour que le programme appelant sache simplement si la fonction a
bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
le programme appelant, la question ne se pose pas. La valeur retournée
d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
savoir si on privilégie le retour d'un Integer pour des raisons
ou de "règle de l'art ou d'habitude de programmation" plutôt qu'un String
bien si c'est sans aucune importance ?
Salut,
Tu dis "J'ai crée des fonctions.... retourner rien d'utile", lol !
La fonction n'est pas native du Basic, à 99% on peut écrire sans
aucune
fonction... Tout peut passer par procédures, variables locales et
globales... Avec un standard qui dépasse un peu le demi giga octet de RAM
et un processeur à 400 Mhz, mettre 1 ou 2 ko de plus ou de moins en
variables globales n'a aucune importance généralement...
---------------
Salut,
Tu dis "J'ai crée des fonctions.... retourner rien d'utile", lol !
La fonction n'est pas native du Basic, à 99% on peut écrire sans
aucune
fonction... Tout peut passer par procédures, variables locales et
globales... Avec un standard qui dépasse un peu le demi giga octet de RAM
et un processeur à 400 Mhz, mettre 1 ou 2 ko de plus ou de moins en
variables globales n'a aucune importance généralement...
---------------
Salut,
Tu dis "J'ai crée des fonctions.... retourner rien d'utile", lol !
La fonction n'est pas native du Basic, à 99% on peut écrire sans
aucune
fonction... Tout peut passer par procédures, variables locales et
globales... Avec un standard qui dépasse un peu le demi giga octet de RAM
et un processeur à 400 Mhz, mettre 1 ou 2 ko de plus ou de moins en
variables globales n'a aucune importance généralement...
---------------
Salut,Salut,
Tu dis "J'ai crée des fonctions.... retourner rien d'utile", lol !
La fonction n'est pas native du Basic, à 99% on peut écrire sans
aucune
fonction... Tout peut passer par procédures, variables locales et
globales... Avec un standard qui dépasse un peu le demi giga octet de RAM
et un processeur à 400 Mhz, mettre 1 ou 2 ko de plus ou de moins en
variables globales n'a aucune importance généralement...
---------------
Oui mais c'est moins propre et apres on ne s'y retrouve plus.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Salut,
Salut,
Tu dis "J'ai crée des fonctions.... retourner rien d'utile", lol !
La fonction n'est pas native du Basic, à 99% on peut écrire sans
aucune
fonction... Tout peut passer par procédures, variables locales et
globales... Avec un standard qui dépasse un peu le demi giga octet de RAM
et un processeur à 400 Mhz, mettre 1 ou 2 ko de plus ou de moins en
variables globales n'a aucune importance généralement...
---------------
Oui mais c'est moins propre et apres on ne s'y retrouve plus.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Salut,Salut,
Tu dis "J'ai crée des fonctions.... retourner rien d'utile", lol !
La fonction n'est pas native du Basic, à 99% on peut écrire sans
aucune
fonction... Tout peut passer par procédures, variables locales et
globales... Avec un standard qui dépasse un peu le demi giga octet de RAM
et un processeur à 400 Mhz, mettre 1 ou 2 ko de plus ou de moins en
variables globales n'a aucune importance généralement...
---------------
Oui mais c'est moins propre et apres on ne s'y retrouve plus.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
" teddy" wrote in message
news:e$Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
chaîne"OK" pour que le programme appelant sache simplement si la fonction a
marché oubien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
parle programme appelant, la question ne se pose pas. La valeur retournée
doit êtred'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
voudrais doncsavoir si on privilégie le retour d'un Integer pour des raisons
d'optimisationou de "règle de l'art ou d'habitude de programmation" plutôt qu'un String
oubien si c'est sans aucune importance ?
Hello,
une bonne habitude est de faire retourner une
valeur numérique (un long, comme le dit Christian
est la meilleure option).
On peut adopter les conventions que l'on veut,
par exemple 0 = OK, 1 = PAS OK
Si on a besoin de connaitre des choses additionnelles en
cas d'erreur, on renseigne des paramètres ByRef.
Voici un exemple de bonne pratique:
' 8<--------------------------------------
Option Explicit
Const ERR_DIV_BY_ZERO As Long = -1
Const RET_ERR As Long = 1
Const RET_OK As Long = 0
Private Sub Command1_Click()
Dim status As Long
Dim err_code As Long
Dim err_msg As String
Dim n1 As Double, n2 As Double, result As Double
Dim dbg As String
status = DivisePar(n1, n2, result, err_code, err_msg)
If status = RET_OK Then
' tout va bien, on continue
MsgBox "OK"
Else
' tout va mal
dbg = "erreur dans DivisePar()" & vbCrLf
dbg = dbg & "Code erreur : " & err_code & vbCrLf
dbg = dbg & "Description erreur : " & err_msg
MsgBox dbg
End If
End Sub
'
' Calcule div/dvd, met le résultat dans result
' En cas d'erreur, retourne RET_OK (0) sinon retourne RET_ERR (1)
' En cas d'erreur, on renseigne errCode et errMsg
Public Function DivisePar(ByVal div As Double, _
ByVal dvd As Double, _
ByRef result As Double, _
ByRef errCode As Long, _
ByRef errMsg As String) As Double
If dvd = 0 Then ' division par zero demandée
errCode = ERR_DIV_BY_ZERO
errMsg = "Division par zero"
DivisePar = RET_ERR
Else
result = div / dvd
DivisePar = RET_OK
End If
End Function
' 8<------------------------------------
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
" teddy" <teddy@wanadoo.fr> wrote in message
news:e$Wu0RzrFHA.2212@TK2MSFTNGP15.phx.gbl...
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
chaîne
"OK" pour que le programme appelant sache simplement si la fonction a
marché ou
bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
par
le programme appelant, la question ne se pose pas. La valeur retournée
doit être
d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
voudrais donc
savoir si on privilégie le retour d'un Integer pour des raisons
d'optimisation
ou de "règle de l'art ou d'habitude de programmation" plutôt qu'un String
ou
bien si c'est sans aucune importance ?
Hello,
une bonne habitude est de faire retourner une
valeur numérique (un long, comme le dit Christian
est la meilleure option).
On peut adopter les conventions que l'on veut,
par exemple 0 = OK, 1 = PAS OK
Si on a besoin de connaitre des choses additionnelles en
cas d'erreur, on renseigne des paramètres ByRef.
Voici un exemple de bonne pratique:
' 8<--------------------------------------
Option Explicit
Const ERR_DIV_BY_ZERO As Long = -1
Const RET_ERR As Long = 1
Const RET_OK As Long = 0
Private Sub Command1_Click()
Dim status As Long
Dim err_code As Long
Dim err_msg As String
Dim n1 As Double, n2 As Double, result As Double
Dim dbg As String
status = DivisePar(n1, n2, result, err_code, err_msg)
If status = RET_OK Then
' tout va bien, on continue
MsgBox "OK"
Else
' tout va mal
dbg = "erreur dans DivisePar()" & vbCrLf
dbg = dbg & "Code erreur : " & err_code & vbCrLf
dbg = dbg & "Description erreur : " & err_msg
MsgBox dbg
End If
End Sub
'
' Calcule div/dvd, met le résultat dans result
' En cas d'erreur, retourne RET_OK (0) sinon retourne RET_ERR (1)
' En cas d'erreur, on renseigne errCode et errMsg
Public Function DivisePar(ByVal div As Double, _
ByVal dvd As Double, _
ByRef result As Double, _
ByRef errCode As Long, _
ByRef errMsg As String) As Double
If dvd = 0 Then ' division par zero demandée
errCode = ERR_DIV_BY_ZERO
errMsg = "Division par zero"
DivisePar = RET_ERR
Else
result = div / dvd
DivisePar = RET_OK
End If
End Function
' 8<------------------------------------
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
" teddy" wrote in message
news:e$Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
chaîne"OK" pour que le programme appelant sache simplement si la fonction a
marché oubien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
parle programme appelant, la question ne se pose pas. La valeur retournée
doit êtred'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
voudrais doncsavoir si on privilégie le retour d'un Integer pour des raisons
d'optimisationou de "règle de l'art ou d'habitude de programmation" plutôt qu'un String
oubien si c'est sans aucune importance ?
Hello,
une bonne habitude est de faire retourner une
valeur numérique (un long, comme le dit Christian
est la meilleure option).
On peut adopter les conventions que l'on veut,
par exemple 0 = OK, 1 = PAS OK
Si on a besoin de connaitre des choses additionnelles en
cas d'erreur, on renseigne des paramètres ByRef.
Voici un exemple de bonne pratique:
' 8<--------------------------------------
Option Explicit
Const ERR_DIV_BY_ZERO As Long = -1
Const RET_ERR As Long = 1
Const RET_OK As Long = 0
Private Sub Command1_Click()
Dim status As Long
Dim err_code As Long
Dim err_msg As String
Dim n1 As Double, n2 As Double, result As Double
Dim dbg As String
status = DivisePar(n1, n2, result, err_code, err_msg)
If status = RET_OK Then
' tout va bien, on continue
MsgBox "OK"
Else
' tout va mal
dbg = "erreur dans DivisePar()" & vbCrLf
dbg = dbg & "Code erreur : " & err_code & vbCrLf
dbg = dbg & "Description erreur : " & err_msg
MsgBox dbg
End If
End Sub
'
' Calcule div/dvd, met le résultat dans result
' En cas d'erreur, retourne RET_OK (0) sinon retourne RET_ERR (1)
' En cas d'erreur, on renseigne errCode et errMsg
Public Function DivisePar(ByVal div As Double, _
ByVal dvd As Double, _
ByRef result As Double, _
ByRef errCode As Long, _
ByRef errMsg As String) As Double
If dvd = 0 Then ' division par zero demandée
errCode = ERR_DIV_BY_ZERO
errMsg = "Division par zero"
DivisePar = RET_ERR
Else
result = div / dvd
DivisePar = RET_OK
End If
End Function
' 8<------------------------------------
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
" teddy" wrote in message
news:e$Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
chaîne"OK" pour que le programme appelant sache simplement si la fonction a
marché oubien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
parle programme appelant, la question ne se pose pas. La valeur retournée
doit êtred'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
voudrais doncsavoir si on privilégie le retour d'un Integer pour des raisons
d'optimisationou de "règle de l'art ou d'habitude de programmation" plutôt qu'un String
oubien si c'est sans aucune importance ?
Hello,
une bonne habitude est de faire retourner une
valeur numérique (un long, comme le dit Christian
est la meilleure option).
On peut adopter les conventions que l'on veut,
par exemple 0 = OK, 1 = PAS OK
Si on a besoin de connaitre des choses additionnelles en
cas d'erreur, on renseigne des paramètres ByRef.
Voici un exemple de bonne pratique:
' 8<--------------------------------------
Option Explicit
Const ERR_DIV_BY_ZERO As Long = -1
Const RET_ERR As Long = 1
Const RET_OK As Long = 0
Private Sub Command1_Click()
Dim status As Long
Dim err_code As Long
Dim err_msg As String
Dim n1 As Double, n2 As Double, result As Double
Dim dbg As String
status = DivisePar(n1, n2, result, err_code, err_msg)
If status = RET_OK Then
' tout va bien, on continue
MsgBox "OK"
Else
' tout va mal
dbg = "erreur dans DivisePar()" & vbCrLf
dbg = dbg & "Code erreur : " & err_code & vbCrLf
dbg = dbg & "Description erreur : " & err_msg
MsgBox dbg
End If
End Sub
'
' Calcule div/dvd, met le résultat dans result
' En cas d'erreur, retourne RET_OK (0) sinon retourne RET_ERR (1)
' En cas d'erreur, on renseigne errCode et errMsg
Public Function DivisePar(ByVal div As Double, _
ByVal dvd As Double, _
ByRef result As Double, _
ByRef errCode As Long, _
ByRef errMsg As String) As Double
If dvd = 0 Then ' division par zero demandée
errCode = ERR_DIV_BY_ZERO
errMsg = "Division par zero"
DivisePar = RET_ERR
Else
result = div / dvd
DivisePar = RET_OK
End If
End Function
' 8<------------------------------------
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
" teddy" <teddy@wanadoo.fr> wrote in message
news:e$Wu0RzrFHA.2212@TK2MSFTNGP15.phx.gbl...
Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
chaîne
"OK" pour que le programme appelant sache simplement si la fonction a
marché ou
bien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
par
le programme appelant, la question ne se pose pas. La valeur retournée
doit être
d'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
voudrais donc
savoir si on privilégie le retour d'un Integer pour des raisons
d'optimisation
ou de "règle de l'art ou d'habitude de programmation" plutôt qu'un String
ou
bien si c'est sans aucune importance ?
Hello,
une bonne habitude est de faire retourner une
valeur numérique (un long, comme le dit Christian
est la meilleure option).
On peut adopter les conventions que l'on veut,
par exemple 0 = OK, 1 = PAS OK
Si on a besoin de connaitre des choses additionnelles en
cas d'erreur, on renseigne des paramètres ByRef.
Voici un exemple de bonne pratique:
' 8<--------------------------------------
Option Explicit
Const ERR_DIV_BY_ZERO As Long = -1
Const RET_ERR As Long = 1
Const RET_OK As Long = 0
Private Sub Command1_Click()
Dim status As Long
Dim err_code As Long
Dim err_msg As String
Dim n1 As Double, n2 As Double, result As Double
Dim dbg As String
status = DivisePar(n1, n2, result, err_code, err_msg)
If status = RET_OK Then
' tout va bien, on continue
MsgBox "OK"
Else
' tout va mal
dbg = "erreur dans DivisePar()" & vbCrLf
dbg = dbg & "Code erreur : " & err_code & vbCrLf
dbg = dbg & "Description erreur : " & err_msg
MsgBox dbg
End If
End Sub
'
' Calcule div/dvd, met le résultat dans result
' En cas d'erreur, retourne RET_OK (0) sinon retourne RET_ERR (1)
' En cas d'erreur, on renseigne errCode et errMsg
Public Function DivisePar(ByVal div As Double, _
ByVal dvd As Double, _
ByRef result As Double, _
ByRef errCode As Long, _
ByRef errMsg As String) As Double
If dvd = 0 Then ' division par zero demandée
errCode = ERR_DIV_BY_ZERO
errMsg = "Division par zero"
DivisePar = RET_ERR
Else
result = div / dvd
DivisePar = RET_OK
End If
End Function
' 8<------------------------------------
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
" teddy" wrote in message
news:e$Bonjour,
J'ai crée des fonctions qui agissent sur des BASES ou des Objets et qui ne
retournent rien d'utile.
Je voudrais leur faire retourner le Err.Number par exemple ou bien la
chaîne"OK" pour que le programme appelant sache simplement si la fonction a
marché oubien si elle a "planté".
Bien sûr, dans d'autres cas, si la fonction retourne une valeur utilisable
parle programme appelant, la question ne se pose pas. La valeur retournée
doit êtred'un type attendu et pas un autre.
Dans le cas où on n'exploite pas forcément la valeur retournée, je
voudrais doncsavoir si on privilégie le retour d'un Integer pour des raisons
d'optimisationou de "règle de l'art ou d'habitude de programmation" plutôt qu'un String
oubien si c'est sans aucune importance ?
Hello,
une bonne habitude est de faire retourner une
valeur numérique (un long, comme le dit Christian
est la meilleure option).
On peut adopter les conventions que l'on veut,
par exemple 0 = OK, 1 = PAS OK
Si on a besoin de connaitre des choses additionnelles en
cas d'erreur, on renseigne des paramètres ByRef.
Voici un exemple de bonne pratique:
' 8<--------------------------------------
Option Explicit
Const ERR_DIV_BY_ZERO As Long = -1
Const RET_ERR As Long = 1
Const RET_OK As Long = 0
Private Sub Command1_Click()
Dim status As Long
Dim err_code As Long
Dim err_msg As String
Dim n1 As Double, n2 As Double, result As Double
Dim dbg As String
status = DivisePar(n1, n2, result, err_code, err_msg)
If status = RET_OK Then
' tout va bien, on continue
MsgBox "OK"
Else
' tout va mal
dbg = "erreur dans DivisePar()" & vbCrLf
dbg = dbg & "Code erreur : " & err_code & vbCrLf
dbg = dbg & "Description erreur : " & err_msg
MsgBox dbg
End If
End Sub
'
' Calcule div/dvd, met le résultat dans result
' En cas d'erreur, retourne RET_OK (0) sinon retourne RET_ERR (1)
' En cas d'erreur, on renseigne errCode et errMsg
Public Function DivisePar(ByVal div As Double, _
ByVal dvd As Double, _
ByRef result As Double, _
ByRef errCode As Long, _
ByRef errMsg As String) As Double
If dvd = 0 Then ' division par zero demandée
errCode = ERR_DIV_BY_ZERO
errMsg = "Division par zero"
DivisePar = RET_ERR
Else
result = div / dvd
DivisePar = RET_OK
End If
End Function
' 8<------------------------------------
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;