4 votes

Problèmes avec les formats de chiffres

J'ai le code suivant :

Dim tarifa As Double
tarifa = Sheets("OD Tarifa").Cells(fila, 5 + r).value
Cells(j, r + 10).FormulaR1C1 = _
                "=" & tarifa & "-" & "SUMIF(C[-6],RC[-6],C[-3])+SUMIF(C[-6],RC[-6],C[-2])+SUMIF(C[-6],RC[-6],C[-1])"

tarifa est enregistré en utilisant une virgule comme séparateur décimal (1,5 par exemple), de sorte que lorsque VBA tente d'écrire la formule, il génère une erreur. Si je remplace manuellement tarifa pour un 1,5 par exemple, il n'y a pas d'erreur. Que puis-je faire pour résoudre ce problème ?

2voto

Florent B. Points 8564

Une façon de procéder serait d'utiliser FormulaR1C1Local au lieu de FormulaR1C1 :

Dim tarifa As Double
tarifa = Cells(1, 2).Value
Cells(2, 2).FormulaR1C1Local = "=" & tarifa

1voto

Doug Glancy Points 15254

Si vous êtes dans Excel 2013 ou une version ultérieure, essayez d'utiliser la fonction NUMBERVALUE fonction. Elle vous permet de spécifier le séparateur de décimales et de milliers dans un nombre que vous lisez. Je pense qu'elle pourrait fonctionner ici pour vous permettre de passer du séparateur décimal à virgule au point que VBA souhaite :

tarifa = worksheetfunction.NumberValue(Sheets("OD Tarifa").Cells(fila, 5 + r).value,",",".")

Si ce n'est pas le cas, vous devriez être en mesure de le réparer en le trouvant et en le remplaçant :

tarifa = replace((Sheets("OD Tarifa").Cells(fila, 5 + r).value,",",".")

0voto

N. Pavon Points 495

Comment je l'ai finalement résolu :

Dim tarifa As Double
tarifa = Sheets("OD Tarifa").Cells(fila, 5 + r).value
Cells(j, r + 10).FormulaR1C1 = _
                "=""" & CStr(tarifa) & """-" & "SUMIF(C[-6],RC[-6],C[-3])+SUMIF(C[-6],RC[-6],C[-2])+SUMIF(C[-6],RC[-6],C[-1])"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X