Définir une variable avec une formule

Bonjour,

malgré quelques recherches je ne trouve pas la solution à une question assez simple...à poser en tout cas.

Comment mettre le résultat d'une formule dans une variable ?

Voici un bout de mon code :

Private Sub CommandButton1_Click()

Dim resultat As Double
Dim ValeurCommune As String
Dim ValeurMois As String
Dim ValeurAnnee As String
Dim station As String

ValeurCommune = ComboBox1.Value
ValeurMois = ComboBox2.Value
ValeurAnnee = ComboBox3.Value
station = "=INDEX(CommuneStationPluie,MATCH(ValeurCommune,Communes,0),CodeStationPluie)"

resultat = "=SUMPRODUCT((Tableau_BD_PLUVIOMETRIE[STATION]=station)*(Tableau_BD_PLUVIOMETRIE[Mois]=ValeurMois)*(Tableau_BD_PLUVIOMETRIE[Année]=ValeurAnnee)*(Tableau_BD_PLUVIOMETRIE[Hauteur en mm]))"

MsgBox "La hauteur de pluie est de " & resultat

End Sub

J'ai surligné mes 2 variables qui me posent souci.

Merci d'avance pour vos réponses.

Oliv

Bonsoir,

Je ne sais pas si VBA peut interpréter une formule Excel.

La solution est d'écrire la formule dans une cellule arbitraire et de récupérer le résultat.

Proposition :

'Ecriture de la formule dans une cellule

Range("C3").FormulaLocal = "=somme(A1:A2)"

'Récupération du résultat

MonResultat = Range("C3").Value

Appliqué au cas présent :

Range("A1").FormulaLocal = "=INDEX(CommuneStationPluie,MATCH(ValeurCommune,Communes,0),CodeStationPluie)"

resultat = Range("A1").value

Bonne soirée

Bouben

Bonjour,

merci pour votre réponse.

Ca ne fonctionne toujours pas, j'ai une erreur '1004' : erreur définie par l'application ou par l'objet.

Je ne connaissais pas FormulaLocal mais en me renseignant un peu, j'ai cru comprendre qu'en utilisant cette objet, je peux donc écrire mes formules en français? Cela donnerait dans mon cas "=INDEX;....EQUIV(..."

De toute façon, en français ou anglais l'erreur est la même.

Merci quand même, je continue de chercher.

Oliv

Re-bonjour,

j'ai suivi tes conseils et j'ai une erreur d'incompatibilité de type lorsque je veux afficher le resultat dans mon MsgBox, y'a t-il quelque chose que je déclare mal svp?

A savoir que la variable "station" est un code type INSEE et "resultat" est un nombre à virgule ou pas.

Private Sub CommandButton1_Click()

Dim ValeurCommune As String
Dim ValeurMois As String
Dim ValeurAnnee As String
Dim station As Variant
Dim resultat As Double

ValeurCommune = ComboBox1.Value
ValeurMois = ComboBox2.Value
ValeurAnnee = ComboBox3.Value

Range("X1").FormulaLocal = "=INDEX(CommuneStationPLuie;EQUIV(ValeurCommune;Communes;0);2)"
station = Range("X1").Value

Range("X2").FormulaLocal = "=SOMMEPROD((Tableau_BD_PLUVIOMETRIE[STATION]=station)*(Tableau_BD_PLUVIOMETRIE[Mois]=ValeurMois)*(Tableau_BD_PLUVIOMETRIE[Année]=ValeurAnnee)*(Tableau_BD_PLUVIOMETRIE[Hauteur en mm]))"
resultat = Range("X2").Value

MsgBox "La hauteur de pluie est de " & resultat

End Sub

En vous remerciant.

Oliv

Rechercher des sujets similaires à "definir variable formule"