Programmes excel en vb.net qui ne fonctionne plus

Résolu
infodes Messages postés 50 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 21 décembre 2023 - Modifié le 8 janv. 2024 à 16:35
 infodes - 8 janv. 2024 à 14:41

Bonjour, j'ai fait plusieurs code en vb.net au cours des dernières années qui utilisent des fichiers excel mais plus aucun de ces codes ne fonctionne depuis début décembre 2023. J'ai fait plusieurs testes mais j'ai toujours le même résultat. Est-ce que quelqu'un peut me dire ce qui a changé dans le vb.net?

voici ce que le code fait : lorsque je passe le code en débuggage, xlapp fonctionne mais pas xlbook, l'application passe par dessus. Lorsqu'il arrive sur xlapp.workbooks.count, il en trouve 0 d'ouvert même si j'ai plusieurs fichier excel d'ouvert. Après ça, plus rien ne fonctionne naturellement.

Imports Microsoft.Office.Interop.Excel

 Dim XlApp As Excel.Application = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")
 Dim XlBook As Excel.Workbook

Dim intCount As Integer

intCount = XlApp.Workbooks.Count
If intCount > 1 Then
    XlBook = XlApp.Workbooks(intCount)
Else
    XlBook = XlApp.Workbooks(1)
End If

2 réponses

Edith99_2801 Messages postés 5 Date d'inscription vendredi 22 septembre 2023 Statut Membre Dernière intervention 25 décembre 2023
25 déc. 2023 à 08:20


Bonjour,

Il se peut que votre problème soit dû à une incompatibilité entre la version de Microsoft.Office.Interop.Excel que vous utilisez et la version d’Excel installée sur votre machine. En effet, depuis la mise à jour d’Excel en décembre 2023, il y a eu des changements dans la bibliothèque Microsoft.Office.Interop.Excel qui peuvent causer des erreurs de cast ou de chargement12. Pour résoudre ce problème, vous pouvez essayer les solutions suivantes :

Vérifier que la référence à Microsoft.Office.Interop.Excel dans votre projet est bien à jour et correspond à la version d’Excel installée. Vous pouvez aussi essayer de réinstaller cette référence34.
Utiliser une méthode alternative pour créer l’objet Excel.Application, en utilisant la classe System.Type et la méthode System.Activator.CreateInstance5. Par exemple, vous pouvez remplacer la ligne :
Dim XlApp As Excel.Application = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application")

par la ligne :

Dim excelType As Type = System.Type.GetTypeFromProgID("Excel.Application")
Dim XlApp As Excel.Application = CType(System.Activator.CreateInstance(excelType), Excel.Application)


0

Merci pour la réponse. J'ai corrigé mon problème avec ceci : 

Imports Microsoft.Office.Interop

Dim xlapp As New Microsoft.Office.Interop.Excel.Application()
xlapp.Visible = True
Dim xlbook As Microsoft.Office.Interop.Excel.Workbook = xlapp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlSheetType.xlWorksheet)
Dim xlsheet As Microsoft.Office.Interop.Excel.Worksheet

intCount = xlApp.Workbooks.Count
If intCount > 1 Then
    xlBook = xlApp.Workbooks(intCount)
Else
    xlBook = xlApp.Workbooks(1)
End If

Mes programmes fonctionnent tous maintenant. Merci!

0
Rejoignez-nous