mstarsup5
Messages postés527Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention10 octobre 20131 24 déc. 2007 à 09:40
Ah, finalement je reposte... j'ai testé avec ton code, ton bouton et ton textbox:
Dim logtxt50rec As Double
Private Sub cmdcalcci_Click()
logtxt50rec = Log10(Val(txtcit50.Text))
MsgBox Str(logtxt50rec)
End Sub
Public Function Log10(ByVal logtxt50rec As Double) As Double
Log10 = Log(logtxt50rec) / Log(10#)
End Function
Ca marche impec...
Par contre, c'est sur que si je mets un nombre <=0 en paramètre, ça marche pas et j'obtiens le même message d'erreur que toi... Après tout, un logarithme prend ses valeurs dans R+*... Comme quoi, si l'erreur ne vient pas de la fonction, elle vient peut être de son utilisation...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 23 déc. 2007 à 21:28
Bondoir,
Voilà ce que l'on peut lire dans l'aide en ligne (la mienne est en anglais), en consultant tout simplement sur la fonction Log :
The natural logarithm is the logarithm to the base e. The constant e is approximately 2.718282.
You can calculate base-n logarithms for any number x by dividing the natural logarithm of x by the natural logarithm of n as follows:
Logn(x) = Log(x) / Log(n)
The following example illustrates a custom Function that calculates base-10 logarithms:
Static Function Log10(X)
Log10 = Log(X) / Log(10#)
End Function
mstarsup5
Messages postés527Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention10 octobre 20131 24 déc. 2007 à 01:08
lol, je me disais que j'avais déjà vu ce topic il n'y avait pas longtemps, je ne me doutais pas que c'était en réalité deux topics différents, postés par la même personne
philjoyal, écris quelque part dans ton code:
Public Function Log10(byval X as double) as double
Log10 = Log(X) / Log(10#)
End Function
(Tu remarqueras que c'est ce que t'as donné jmfmarques et les gens qui ont répondu à ton post du 21/12/2007)
mstarsup5
Messages postés527Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention10 octobre 20131 24 déc. 2007 à 09:33
Ben écoute, dernier post que je fais dans ce topic, je viens de tester, j'ai mis exactement ce que je t'ai écris...
Fais toi une form et mets y un bouton nommé Command1
et en code, mets exactement ceci:
Public Function Log10(ByVal X As Double) As Double
Log10 = Log(X) / Log(10#)
End Function
Private Sub Command1_Click()
Dim i As Double
i = 50000 * Rnd
MsgBox "i= " & Str(i) & ", et log10(i)= " & Str(Log10(i))
End Sub
et tu vois par toi même que 1: c'est pas sorcier, et 2: c'est exactement ce qu'on t'a dit pendant 20 posts.
Après, c'est à toi, comme akim77 te l'a souligné, de ne pas faire d'erreur en demandant un log de 0 ou de quelconque nombre négatif, c'est à toi de vérifier que ton programme ne se plante pas et met bien un nombre comme paramètre de la fonction log10 que je t'ai donnée, etc...
philjoyal
Messages postés14Date d'inscriptionvendredi 21 décembre 2007StatutMembreDernière intervention25 décembre 2007 25 déc. 2007 à 22:56
parfait...ca fonctionne maintenant...
mon probleme c'etait justement que je testait avec aucun nombre dans mon textbox...en vb6 cela donne un message d'erreur...mais en vb2005 il retourne: + infini, sans message d'erreur.
maintenant sa souleve un autre probleme, c'est-a-dire de mettre un code pour eviter que mon programme plante si une valeur <=0 est mis dans le textbox..
merci a tous de m'avoir aider et particulierement a mstarsup5 pour avoir mis autant de temps!!