Récupérer dans une variable le résultat d'une formule excel contenue dans une cellule.
Bonjour, je me heurte actuellement à soucis dans le développement d'une petite appli me permettant de lire un fichier d'horaires.
Dans mon fichier à lire nous avons des lignes remplies soit de texte directement comme "B" "B" "B" dans plusieurs cellules soit vides, soit contenant des formules telles que
Code:
=IF($C205<>"";INDEX(R$1:R$199;$E205);"")
Lorsque mon application lit une ligne, j'arrive a récupérer la valeur d'une cellule mais ce qu'il me faudrait c'est le résultat de la formule excel contenue dans cette cellule.
Actuellement j'utilise la fonctione .Value de la classe range pour récupérer la valeur de ma cellule :
Code:
horaire = horsource.Cells(numligne, 4).value
Evidemment s'il y a une formule dans ma cellule, le résultat est la formule. J'ai eu beau cherché sur le forum, je n'ai pas encore trouvé mon bonheur.
Contournement : J'avais tenté de faire un copier/coller les valeurs de ma ligne sur un nouveau fichier via mon code mais cela allait à l'encontre d'une de mes contraintes : l'application doit fonctionner de manière transparent et aucune fenêtre présentant le fichier excel ne doit apparaitre, donc pour le copier/coller c'est raté.
J'attend vos idées avec impatiences, je suis débutant et là je bloque depuis 2 semaines là dessus :x
Merci d'avance pour vos suggestions
recuper valeur cellules Excel contenant une formule
bonjour ,ikoyy
utilise l'objet range lorsque tu travailles avec des valeurs de cellules .c'est plus efficace .voici un bout de code qui recupere dans 2 textbox la valeur d'une cellule (3,1) et sa formule :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
'Utilise Alias pour alleger ecriture de code
'panneau reference COM:une ref à Microsoft.excel 11.0 Object Library(excel 2003)
'-2 boutons
'-3 controles TextBox
'-la cellule (1,1) contient une simple valeur
'-la cellule (3,1) contient une formule =SI($C3<>22;D3;$E3).
'- ca fonctionne nickel
Imports OXL = Microsoft.Office.Interop.Excel
Imports System.IO
Public Class Form1
Dim objAppExcel As OXL.Application
Dim objClasseur As OXL.Workbook
Dim objFeuille As OXL.Worksheet
Public Sub New()
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
Me.TopMost = True
End Sub
Private Sub btnAfficheCellules_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAfficheCellules.Click
Dim appPath As String = My.Computer.FileSystem.CurrentDirectory
objAppExcel = New OXL.Application
objClasseur = objAppExcel.Workbooks.Open(appPath & "\monClasseur.xls")
objFeuille = objClasseur.Worksheets(1)
objAppExcel.Visible = True
'affiche valeur texte
Me.txtValeur.Text = CType(objFeuille.Cells(1, 1).value, String)
'affiche valeur formule1
Dim rng As OXL.Range = Nothing
rng = objFeuille.Cells(3, 1)
Me.txtResultatFormule.Text = rng.Value.ToString
'affiche valeur formule2
rng = objFeuille.Cells(3, 1)
Me.txtFormule.Text = rng.FormulaR1C1.ToString
End Sub
Private Sub btnQuitteExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnQuitteExcel.Click
objAppExcel.Quit()
End Sub
End Class |
bon code....