Appel d'une fonction dans un label

Salutations !

Je voudrais afficher le résultat d'un calcul d'une function dans le label d'un userform. De plus les valeurs utilisées par la function pour entreprendre les calculs sont celles affichées par les différents labels de mon userform...

Je m'explique : Je calcul une distance orthodromique. Pour ce faire, la function va chercher les valeurs affichées dans 4 labels de mon userform. Ces valeurs sont la latitude-longitude en degrés décmaux d'une ville A et d'une ville B.

On a alors :

  • label58 = latitude ville A
  • label60 = longitude ville A
  • label62 = latitude ville B
  • label64 = longitude ville B
  • label66 = distance orthodromique
Function Dist_Orthodromique(ByVal Label58 As Double, Label60 As Double, Label62 As Double, Label64 As Double)

Dim a, b As Double

Label58 = Label58.Caption
Label60 = Label60.Caption
Label62 = Label62.Caption
Label64 = Label64.Caption

a = Sin(Label58) * Sin(Label60)
b = Cos(Label58) * Cos(Label60) * Cos(Label64 - Label62)
Dist_Orthodromique = 60 * 1.852 * Acos(a + b)

End Function

Une fois ce calcul realisé, le résultat doit apparaître dans un 5ème label :

'Calcul de la distance orthodromique entre la ville de départ et la ville d'arrivée

Private Sub Label66_Click()

    Label66.Caption = Application.Dist_Orthodromique.Value

End Sub

Je pense que le problem vient surtout de la manière dont j'ai écrit les codes. Le calcul et la demarche ont l'air corrects..

Merci de bien vouloir m'aider, désolé pour la longueur du post !

Bonne journée !

Bonjour,

Je pense que le problem vient surtout de la manière dont j'ai écrit les codes.

Oui, tout à fait.

A tester :

code de la fonction :

Function Dist_Orthodromique(ByVal Label58 As Double, Label60 As Double, Label62 As Double, Label64 As Double) As Double
    Dim a, b As Double
    a = Sin(Label58) * Sin(Label60)
    b = Cos(Label58) * Cos(Label60) * Cos(Label64 - Label62)
    Dist_Orthodromique = 60 * 1.852 * Acos(a + b)
End Function

code de l'événement click sur le label :

Private Sub Label66_Click()
    Dim dbl58 As Double, dbl60 As Double, dbl62 As Double, dbl64 As Double
'ICI ajouter des tests sur les caption de tes labels... si numériques, si non vides...
    dbl58 = CDbl(Label58.Caption)
    dbl60 = CDbl(Label60.Caption)
    dbl62 = CDbl(Label62.Caption)
    dbl64 = CDbl(Label64.Caption)
    Label66.Caption = Dist_Orthodromique(dbl58, dbl60, dbl62, dbl64)
End Sub

Merci Pijaku pour l'aide, j'ai finalement trouvé un moyen détourné pour résoudre le problem

J'ai remplacé les labels par des textbox, ce qui m'a permit de rentrer un calcul en utilisant "textbox.value" ça fonctionne

Bonne journée !

Rechercher des sujets similaires à "appel fonction label"