Ecrire ac VBA formule ds case Excel [Résolu/Fermé]
Signaler
ptit81
ptit81
- Messages postés
- 29
- Date d'inscription
- mercredi 12 septembre 2007
- Statut
- Membre
- Dernière intervention
- 6 décembre 2012
ptit81
- 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?
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
- Ecrire ac VBA formule ds case Excel ✓ - Forum - VB / VBA
- VBA sélection case Excel ds Userform ✓ - Forum - VB / VBA
- Ecrire dans une case excel ✓ - Forum - Excel
- Aller à la ligne dans une cellule Excel - Guide
- Excel Formule si case vide ✓ - Forum - Excel
4 réponses
eriiic
- Messages postés
- 23816
- Date d'inscription
- mardi 11 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 26 janvier 2021
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
ptit81
- Messages postés
- 29
- Date d'inscription
- mercredi 12 septembre 2007
- Statut
- Membre
- Dernière intervention
- 6 décembre 2012
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
Utilisateur anonyme
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