Ecrire ac VBA formule ds case Excel
Résolu
ptit81
Messages postés
30
Statut
Membre
-
ptit81 Messages postés 30 Statut Membre -
ptit81 Messages postés 30 Statut Membre -
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?
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?
A voir également:
- Ecrire ac VBA formule ds case Excel
- Formule si et excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Excel mise en forme conditionnelle formule - Guide
- Liste déroulante excel - Guide
- Formule somme excel colonne - Guide
4 réponses
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
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
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
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 !
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
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