Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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



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
 

Staple1600

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

Re


Chr(34) -> "

Pour plus aller dans l'aide de VBA
ALT+F11, puis F1
ou sur le net

Chr pour Character

Je te laisse traduire en français
 

Discussions similaires

Réponses
17
Affichages
995
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…