Transformer Formule VBA en Formule normale dans cellule

Tonino7

XLDnaute Occasionnel
Bonjour à tous,

connaitriez vous un moyen de transformer une formule créée en VBA, directement dans une cellule excel en formule locale.

Exemple:

Je souhaiterais que dans la cellule A1 vienne s'inscrire la formule suivante:
=EQUIV("chien";animaux;0) + EQUIV("chat";animaux;0)

et ceci, grace à du code VBA, qui pourrait etre celui ci dessous :

range("A1").formula = match("chien",range("animaux"),0) + match("chat",range("animaux"),0)

mais bien évidemment, ça ne marche pas. Donc avez vous un code VBA dans ce style là, à me proposer ?

merci

(je ne veux pas mettre directement "equiv" dans le code vba... car le fichier excel est voué à etre utilisé dans plusieurs versions d'excel à l'étranger, soit italien, espagnol, néerlandais.... donc il ne reconnaitra pas le Equiv)
 

ROGER2327

XLDnaute Barbatruc
Re : Transformer Formule VBA en Formule normale dans cellule

Bonjour Tonino7
Code:
[COLOR="DarkSlateGray"][B]Range("A1").FormulaR1C1 = "=MATCH(""chien"",animaux,0)+MATCH(""chat"",animaux,0)"[/B][/COLOR]
peut-être ?​
ROGER2327
#3450


20 Floréal An CCXVIII
2010-W18-7T02:11:45Z
 

Tonino7

XLDnaute Occasionnel
Re : Transformer Formule VBA en Formule normale dans cellule

Bonjour Tonino7
Code:
[COLOR="DarkSlateGray"][B]Range("A1").FormulaR1C1 = "=MATCH(""chien"",animaux,0)+MATCH(""chat"",animaux,0)"[/B][/COLOR]
peut-être ?​
ROGER2327
#3450


20 Floréal An CCXVIII
2010-W18-7T02:11:45Z

effectivement, ça marche. Merci. Mais je m'aperçois que ma problématique est un tantinet plus complexe :

Les noms à rechercher "chien" ou "chat"... sont en réalité des variables. Et je souhaiterais faire en sorte d'inclure la nom de la variable dans la formule, à la place de constantes comme "chien" ou "chat".
en imaginant, que la variable s'appelerait NOM_ANIMAL, le code VBA devrait donner quelquechose comme ça :

Range("A1").FormulaR1C1 = "=MATCH(NOM_ANIMAL,animaux,0)"

et évidemment, cela ne marche pas... en raison de l'histoire des guillemets. Auriez-vous la solution?

merci
 

Staple1600

XLDnaute Barbatruc
Re : Transformer Formule VBA en Formule normale dans cellule

Bonjour Tonino7, ROGER2327, le fil, le forum


Comme ceci, cela fonctionne

Code:
Sub a()
Dim t
t = Array("chien", "chat","lapin","tortue","staple1600")
Range("A1").FormulaR1C1 = _
"=MATCH(" & Chr(34) & CStr(t(0)) & Chr(34) & ",animaux,0)+MATCH(" & Chr(34) & CStr(t(1)) & Chr(34) & ",animaux,0)"
End Sub
EDITION: une variante plus lisible (et à mon gout) (+ commentaires)
Code:
Sub a_1()
[COLOR=SeaGreen]'Déclarations[/COLOR]
Dim t, f$, fp_1$, fp_2$
[COLOR=SeaGreen]'Array[/COLOR]
t = Array("chien", "chat","lapin","tortue","staple1600")
[COLOR=SeaGreen]'Décomposition de la formule en 2 parties[/COLOR]
fp_1 = "MATCH(" & Chr(34) & CStr(t(0)) & Chr(34) & ",animaux,0)"
fp_2 = "MATCH(" & Chr(34) & CStr(t(1)) & Chr(34) & ",animaux,0)"
[COLOR=SeaGreen]'création de la formule par concaténation[/COLOR]
f = "=" & fp_1 & "+" & fp_2
[COLOR=SeaGreen]'insertion de la formule en A1[/COLOR]
Range("A1").FormulaR1C1 = f
End Sub
 
Dernière édition:

Tonino7

XLDnaute Occasionnel
Re : Transformer Formule VBA en Formule normale dans cellule

Bonjour Tonino7, ROGER2327, le fil, le forum


Comme ceci, cela fonctionne

Code:
Sub a()
Dim t
t = Array("chien", "chat","lapin","tortue","staple1600")
Range("A1").FormulaR1C1 = _
"=MATCH(" & Chr(34) & CStr(t(0)) & Chr(34) & ",animaux,0)+MATCH(" & Chr(34) & CStr(t(1)) & Chr(34) & ",animaux,0)"
End Sub
EDITION: une variante plus lisible (et à mon gout) (+ commentaires)
Code:
Sub a_1()
[COLOR=SeaGreen]'Déclarations[/COLOR]
Dim t, f$, fp_1$, fp_2$
[COLOR=SeaGreen]'Array[/COLOR]
t = Array("chien", "chat","lapin","tortue","staple1600")
[COLOR=SeaGreen]'Décomposition de la formule en 2 parties[/COLOR]
fp_1 = "MATCH(" & Chr(34) & CStr(t(0)) & Chr(34) & ",animaux,0)"
fp_2 = "MATCH(" & Chr(34) & CStr(t(1)) & Chr(34) & ",animaux,0)"
[COLOR=SeaGreen]'création de la formule par concaténation[/COLOR]
f = "=" & fp_1 & "+" & fp_2
[COLOR=SeaGreen]'insertion de la formule en A1[/COLOR]
Range("A1").FormulaR1C1 = f
End Sub


Un grand MERCI ! je n'ai pas repris toute la formule mais uniquement le coup du chr(34) ....
petite question : en français, ça signifie quoi le chr(34) ?
Une de mes craintes, c'est que ce ne soit pas reconnu par toutes les versions d'excel
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley