Ecrire ac VBA formule ds case Excel [Résolu/Fermé]

Signaler
Messages postés
29
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
6 décembre 2012
-
Messages postés
29
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
6 décembre 2012
-
Je suis novice en vba.

je voudrais écrire dans la case A3 d'excel une formule dépendant d'une case que l'utilisateur écris dans un userform.
Pour simplifier, on appelle cette case b et on dit qu'elle est égale à B13

mon code est le suivant:
Dim a, b As String

b = "B13"
a = "=SI(" & b & ">0;1;0)"
Range("A3").select
Selection.Value = a

ça ne marche pas.
J'ai aussi essayé de mettre
ActiveCell.FormulaR1C1 = a

ça ne marche pas non plus.

quelle est la fonction à utiliser?

4 réponses

Messages postés
23816
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 janvier 2021
6 598
Bonjour,

Amusant ton truc, je dirai que ça devrait marcher. Apparement Excel ne supporte pas les ; dans la chaine... (bug?)
En attendant pour palier à ça tu pourrais utiliser INDIRECT.
Ex
en A3 ta formule: =SI(INDIRECT(A4)>0;0;1) qui restera inchangée,
en A4 tu mets à jour la reference A13 par ton prog.

Dim b As String
b = "B13"
Range("A4").Value = b


cdt
Messages postés
29
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
6 décembre 2012
2
OK, j'vois l'idée. Je connaissais pas la fonction Indirect
C'est pas exactement ce que je veux mais ça me dépanne.
Si quelqu'un a une autre idée, je suis preneur.
En tout cas, merci à toi eriiic

Bonjour,

Votre formule est écrit en français sous Excel. Sous VBA toute formule doit être écrite en anglais !

Range("A3").Value =  "=IF("" & b & "">0,1,0)"


astuce : pour connaitre la formule sous VBA, créer d'abord une formule type sous l'enregistreur de macro,
vous aurez ainsi la syntaxe exacte.

Lupin
Messages postés
29
Date d'inscription
mercredi 12 septembre 2007
Statut
Membre
Dernière intervention
6 décembre 2012
2
CA MARCHE

Merci beaucoup...