Bonjour à tous et à toutes,
alors voilà, j'essaye de me mettre à la programmation () sous Visual Basic 2010. Je dois tenter de créer un programme pour un proche dans le domaine de l'équitation.
Je n'ai pas enregistré plusieurs versions de mon programme et je me retrouve maintenant embêté avec ce qu'il me semble être un problème de compatibilité ou de référence.. En fait, j'ai réalisé une fonction qui me permet d'aller piocher dans un fichier excel (toujours du même modèle) les informations qui m'intéressent. Le programme fonctionnait bien, mais j'ai du touché aux références en voulant continuer et j'ai l'erreur:
Erreur 1 Type 'Microsoft.Office.Interop.Excel.Application' non défini. C:\Users\Charles\documents\visual studio 2010\Projects\WinPaddock\WinPaddock\WinPaddock.vb 36 164 WinPaddock
Voici la fonction:
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 43 44 45 46 47 48 49 50 51 52 53 54 55
| Private Function GetInfo() As Boolean
Dim Completed As Boolean = False
'OUVERTURE
Dim MyExcel As New Excel.Application
MyExcel.Workbooks.Open(Me.TextBox1.Text)
'EXTRACTION
Dim sheet As String
sheet = Path.GetFileName(OpenFileDialog1.FileName)
sheet = sheet.Replace(".xls", "")
MyExcel.Sheets(sheet).Activate()
MyExcel.Range("A8").Activate()
Dim ThisRow As New Excelrows
Do
MyExcel.ActiveCell.Offset(0, 6).Activate()
If MyExcel.ActiveCell.Text = "Sous X" Then
MyExcel.ActiveCell.Offset(0, 1).Activate()
MyExcel.ActiveCell.Value = " "
MyExcel.ActiveCell.Offset(0, -1).Activate()
End If
MyExcel.ActiveCell.Offset(0, -6).Activate()
If MyExcel.ActiveCell.Value > Nothing Or MyExcel.ActiveCell.Text > Nothing Then
MyExcel.ActiveCell.Offset(0, 6).Activate()
ThisRow.NOM = MyExcel.ActiveCell.Value
MyExcel.ActiveCell.Offset(0, 1).Activate()
ThisRow.PRENOM = MyExcel.ActiveCell.Value
MyExcel.ActiveCell.Offset(0, -6).Activate()
ThisRow.CHEVAL = MyExcel.ActiveCell.Value
MyExcel.ActiveCell.Offset(0, -1).Activate()
ThisRow.NBO = MyExcel.ActiveCell.Value
ExcelRowList.Add(ThisRow)
MyExcel.ActiveCell.Offset(1, 0).Activate()
Else
Completed = True
Exit Do
End If
Loop
'FERMETURE
MyExcel.Workbooks.Close()
MyExcel = Nothing
Return Completed
End Function |
Celle-ci est appelée dans le code suivant:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Sub importer()
Me.ListView1.Items.Clear()
Me.OpenFileDialog1.FileName = Nothing
Me.ExcelRowList.Clear()
If Me.OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.TextBox1.Text = Me.OpenFileDialog1.FileName
End If
If GetInfo() = True Then
For Each Xitem In ExcelRowList
Dim item As ListViewItem
item = Me.ListView1.Items.Add(Xitem.NOM)
item.SubItems.AddRange(New String() {Xitem.PRENOM, Xitem.CHEVAL, Xitem.NBO})
Next
End If
End Sub |
ExcelRowList étant définie par:
Private ExcelRowList As List(Of Excelrows) = New List(Of Excelrows)
L'erreur se trouve dans cette ligne:
Dim MyExcel As New Excel.Application
Si Microsoft.Office.Interop n'est pas ajouté dans les noms importés, alors il me dit que Excel.Application n'est pas défini.
Lorsque je le rajoute, j'ai Microsoft.Office.Interop.Excel.Application qui n'est pas défini.
Si je rajoute Microsoft.Office.Interop.Excel alors il me dit que 'Forms' n'est pas un membre de 'Microsoft.Office.Interop.Excel.Windows', et donc il me génére des erreurs d'un peu partout... ()
Voici les références que j'ai dans mon projet:
Microsoft Excel 14.0 Object Library
Microsoft Office 14.0 Object Library
Microsoft Visual Basic for Applications Extensibility 5.3
puis tous les "System.[...]"
Et dans les noms importés j'ai pour l'instant viré tous les Microsoft.Office.[...] que j'avais mis et j'essaye des combinaisons mais rien n'y fait...
Une idée d'où cela pourrait venir ? J'espère avoir été suffisamment clair et avoir donné suffisamment de données. C'est surement tout bête mais je m'arrache les cheveux...
Merci d'avance !!!
Partager