Ecriture d'une formule utilisant des variables

Bonjour

Je voudrais utiliser les varables i et j dans une formule de ce type

=ACOS(SIN(RADIANS($B$3))*SIN(RADIANS(B2))+COS(RADIANS($B$3))*COS(RADIANS(B2))*COS(RADIANS($C$3-C2)))*6371

ou i représente dans cet exemple la valeur de $B$3 et j celle de $C$3 (du style 43,13 et 1,17)

Je déclare mes variables avec

Dim i, j As Single

i = Target.Offset(0, 1).Value

j = Target.Offset(0, 2).Value

MsgBox i & j renvoie un résultat correct

Comment rédiger cette formule sachant que cette écriture est incorrecte (Je sais, je ne brille pas en VBA..)

FormulaR1C1 = _
        "=ACOS(SIN(RADIANS(i))*SIN(RADIANS(RC[-2]))+COS(RADIANS(i))*COS(RADIANS(RC[-2]))*COS(RADIANS(j-RC[-1])))*6371"

Merci

Cordialement

bonsoir Amadeus,

voici, (non testé) !

FormulaR1C1 = _
        "=ACOS(SIN(RADIANS(" _
      & i  & "))*SIN(RADIANS(RC[-2]))+COS(RADIANS(" _
      & i & "))*COS(RADIANS(RC[-2]))*COS(RADIANS("  _
      & j & "-RC[-1])))*6371"

Bonsoir Amadeus

Une 1er point concernant les variables.

Attention que si tu écris Dim i, j as single. la variable i est déclarée comme Variant

ecris plutôt --> Dim i as single, j as single

Pour ta formule essaie ceci

Range("A1").FormulaR1C1 = _
        "=ACOS(SIN(RADIANS(" & i & "))*SIN(RADIANS(" & Range("B2") & "))+COS(RADIANS(" & i & "))*COS(RADIANS(" & Range("B2") & "))*COS(RADIANS(" & j & "-" & Range("C2") & ")))*6371"

J'ai ajouté Range A1 devant la formule car je ne sais dans quelle cellule tu veux le résultat

Amicalement

Bonsoir,

Un 1er. jus avec une fonction personnalisée.

A tester...

Cdlt

Option Explicit
Public Function test(A As Double, B As Double, C As Double, D As Double) As Double
Dim temp_1 As Double
Dim temp_2 As Double
Dim temp_3 As Double
Dim temp_4 As Double
Dim temp_5 As Double
'=ACOS(SIN(RADIANS($B$3))
temp_1 = Application.WorksheetFunction.Radians(A)
temp_1 = Application.WorksheetFunction.Sin(temp_1)
temp_1 = Application.WorksheetFunction.Acos(temp_1)
'SIN(RADIANS(B2))
temp_2 = Application.WorksheetFunction.Radians(B)
temp_2 = Application.WorksheetFunction.Sin(temp_2)
'COS(RADIANS($B$3))
temp_3 = Application.WorksheetFunction.Radians(A)
temp_3 = Application.WorksheetFunction.Cos(temp_3)
'COS(RADIANS(B2))
temp_4 = Application.WorksheetFunction.Radians(B)
temp_4 = Application.WorksheetFunction.Cos(temp_4)
'COS(RADIANS($C$3-C2))
temp_5 = Application.WorksheetFunction.Radians(C - D)
temp_5 = Application.WorksheetFunction.Cos(temp_5)
'=ACOS(SIN(RADIANS($B$3))*SIN(RADIANS(B2))+COS(RADIANS($B$3))*COS(RADIANS(B2))*COS(RADIANS($C$3-C2)))*6371
test = temp_1 * temp_2 + temp_3 * temp_4 * temp_5 * 6371
End Function

Bonjour,

le mieux est d'utiliser .FormulaLocal : tu seras en référence A1 et les fonctions n'ont pas besoin d''être traduites.

Comme ça en point de départ tu as juste à copier-coller la formule que tu as testé sur la feuille :

[A2].FormulaLocal = "=ACOS(SIN(RADIANS($B$3))*SIN(RADIANS(B2))+COS(RADIANS($B$3))*COS(RADIANS(B2))*COS(RADIANS($C$3-C2)))*6371"

Déjà si tu veux calculer les ref pour inscrire la formule sur une colonne c'est plus simple d'ajouter simplement :

[A2].AutoFill [A2:A10]

Les références relatives seront mises à jour toutes seules.

Mais comme tu demandes pour y mettre les valeurs calculées et non les références, pour répondre à ta question :

Ta formule est une chaine entre 2 " "

Il faut la couper là où tu veux mettre les valeurs calculées en insérant : " & ta_valeur_calculée & " à la place de la référence que tu remplaces.

En résumé : fermer la chaine avec ", concaténer avec & i & , mettre le marqueur de début de chaine "

Pour remplacer $B$3 et $C$3 ça donnera donc :

[A2].FormulaLocal = "=ACOS(SIN(RADIANS(" & i & ")) *SIN(RADIANS(B2))+COS(RADIANS(" & i & "))*COS(RADIANS(B2))*COS(RADIANS(" & j & "-C2)))*6371"

Bon, ben je vois que tu auras de la lecture

Bonjour à tous.

eric

Bonjour

Désolé, panne internet depuis 24h.

La formule d' eriiic fonctionne parfaitement et se retrouve appliquée sur le sujet

https://forum.excel-pratique.com/excel/coordonnees-gps-les-plus-proches-t40926.html

Merci à tous

Bien cordialement

Rechercher des sujets similaires à "ecriture formule utilisant variables"