Export to excel vb.net to excel 2010

jajjouna Messages postés 12 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 6 mars 2013 - 3 sept. 2012 à 14:11
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 3 sept. 2012 à 19:47
Bonjour tout le monde
svp j'ai un problème avec ma procédure d'export to excel vers excel 2010 en anglais. toujours le fichier excel généré est vide et l’exception Ancien format ou bibliothèque de type non valide est générée
voici mon code merci d'avance pour votre attention

Private Sub cmd_export_excel_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmd_export_excel.Click

On Error GoTo ErrorHandler

Dim iRow As Short
Dim iCol As Short
Dim objExcl As Microsoft.Office.Interop.Excel.Application
Dim objWk As Microsoft.Office.Interop.Excel.Workbook
Dim objSht As Microsoft.Office.Interop.Excel.Worksheet
Dim iHead As Short
Dim vHead As Object

objExcl = New Microsoft.Office.Interop.Excel.Application
objExcl.Visible = True
objExcl.UserControl = True


Dim oldCI As System.Globalization.CultureInfo = _
System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = _
New System.Globalization.CultureInfo("en-US")

objWk = objExcl.Workbooks.Add
System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
objSht = objWk.Sheets(1)

vHead = Split(g.FormatString, "|")
For iHead = 1 To UBound(vHead)
If Len(Trim(vHead(iHead))) > 0 Then objSht.Cells._Default(1, iHead) = vHead(iHead)
Next
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

For iRow = 0 To g.Rows - 1
For iCol = 0 To g.get_Cols() - 1
g.Row = iRow
g.Col = iCol
If g.Text <> "" Then


objSht.Range(NumCol2Lattre(iCol + 1) & "" & iRow + 2 & ":" & NumCol2Lattre(iCol + 1) & "" & iRow + 2 & "").Select()

objExcl.ActiveCell.Value = g.Text

End If
Next iCol


Next iRow

objExcl.Application.Visible = True


System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

objSht = Nothing
objWk = Nothing
objExcl = Nothing
Exit Sub

ErrorHandler:
objSht = Nothing
objWk = Nothing
objExcl = Nothing

MsgBox("Error In expotation task & " & Err.Description, MsgBoxStyle.Information)
Err.Clear()
end sub

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 sept. 2012 à 14:53
Bonjour

Merci d'utiliser la coloration syntaxique (3ème icone à droite) = plus facile à relire.

'g' : De quoi s'agit-il ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
jajjouna Messages postés 12 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 6 mars 2013
3 sept. 2012 à 15:24
merci pour votre réponse
g est un axmshflexgrid
je n'ai pas compris comment j'utilise la colaration syntaxique?
NHenry Messages postés 15143 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 17 juillet 2024 159
3 sept. 2012 à 18:34
Bonjour,

Pour la coloration :
Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
jajjouna Messages postés 12 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 6 mars 2013
3 sept. 2012 à 19:17
Bonjour
Option Explicit et Option Strict sont activées
le problème est toujours présent fichier excel vide

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 sept. 2012 à 19:47
As-tu suivi pas-à-pas ton code pour voir ce que le programme lit ?

Exemple de colorisation :
Tu colles ton code, tu le sélectionnes puis sur va choisir VB dans la liste de la 3ème icone.
If g.Text <> "" Then
    objSht.Range(NumCol2Lattre(iCol + 1) & "" & iRow + 2 & ":" & NumCol2Lattre(iCol + 1) & "" & iRow + 2 & "").Select()
    objExcl.ActiveCell.Value = g.Text
End If 
Les "" ne servent à rien.
Sous Excel, il faut absolument éviter les Select.
Cette syntaxe suffit :
    objSht.Range(NumCol2Lattre(iCol + 1) & iRow + 2 & ":" & _
                 NumCol2Lattre(iCol + 1) & iRow + 2 ) = g.Text

(iCol + 1) & iRow + 2 & ":"
Que penses-tu que le compilateur va comprendre entre la concaténation de chaine & et un + qui se balade au milieu ?
Utilise des parenthèses et/ou des conversions de format.

C'est quoi NumCol2Lattre ?
Un tableau de chaines ?

Sous Excel, il est plus pratique d'utiliser OffSet d'un Range, ça évite ce genre de triturage.

Difficile de t'aider plus, il y a trop d'inconnus et d'à peu près dans ces lignes.
Rejoignez-nous