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 SubJ'ai surligné mes 2 variables qui me posent souci.
Merci d'avance pour vos réponses.
Oliv
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
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 SubEn vous remerciant.
Oliv