CLASSE POUR PILOTER EXCEL SIMPLEMENT

Signaler
Messages postés
257
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
22 décembre 2012
-
Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52448-classe-pour-piloter-excel-simplement

Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012

En fait, l'erreur était toute bête : bon j'ai cherché un moment qd même :(

Mon séparateur est le ; donc c'est Semicolon:=True, _ et non Comma:=True
Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012

J'utilise cette class pour piloter Excel sans souci jusqu'à aujourdhui

J'essaie de rajouter l'ouverture d'un fichier de type csv

Mon code dans la class

''' <summary>
''' Lance une nouvelle instance d'Excel
''' </summary>
''' description des colonnes à importer

''' Nom du fichier Csv à ouvrir

''' Rend Excel visible ou pas à son demarrage

''' <remarks></remarks>
Public Sub OuvreCsvExcel(ByVal columnarray(,) As Integer, ByVal Nom As String, Optional ByVal Visible As Boolean = True)

_Application = New Excel.Application
_Application.DisplayAlerts = False
_Application.Visible = Visible

If (_Application Is Nothing) Then
Throw New Exception("Excel ne peut pas démarrer !")
End If

_WorkBooks = _Application.Workbooks
_Application.Caption = Nom
_WorkBook = _WorkBooks.Add(XlWBATemplate.xlWBATWorksheet)
_PagesDuClasseur = _WorkBook.Sheets
' Par defaut on recupere la première feuille comme page principale
Me._PageEnCours = Me._PagesDuClasseur.Item(1)

_WorkBooks.OpenText(Filename:=Nom, Origin:=437, StartRow:=1, DataType:=Excel.XlTextParsingType.xlDelimited, _
TextQualifier:=Excel.XlTextQualifier.xlTextQualifierNone, ConsecutiveDelimiter:=False, _
Tab:=True, Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo:=columnarray, TrailingMinusNumbers:=True)

If (_PagesDuClasseur Is Nothing) Then
Throw New Exception("Impossible de créer le classeur Excel")
End If

End Sub

Je ne comprends pas : mon code s'execute sans anomalie mais j'ai rien dans le fichier générer alors qu'il n'est pas vide.

Quelqu'un aurait une idée ?
Messages postés
19
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
3 mars 2012

Très bon, Franchement !

Depuis mon passage en VB Studio 2010, mon application plantait à cause d'Excel. Je n'arrivais pas à reproduire le pilotage d'Excel qui fonctionnait en 2008 (je ne passais pas par une classe mais j'obtenais la même chose)

2 petites remarques :
- la valeur Excel.xlRgColor n'est pas reconnu, je ne comprends pas pourquoi, tu as peut-être une idée ? (pour l'instant, j'ai enlevé la partie sur les couleurs : j'y reviendrais qd j'aurais un moment)
- quand tu quittes Excel, le process n'est pas terminé (il tourne en fantôme qd tu regarde le gestionnaire des tâches => tu ne peux ouvrir excel)

J'ai rajouté le bout de code suivant :

Sub ForceExcelToQuit()
Dim proc As System.Diagnostics.Process

For Each proc In System.Diagnostics.Process.GetProcessesByName("EXCEL")
If proc.MainWindowTitle.Trim() = "" Then
proc.Kill()
End If
Next
End Sub

Pour l'instant, je ne l'ai pas mis dans la classe

En tout ca merci

P.S. : et je n'ai pas trouvé que c'était du niveau débutant car ca fait un moment que j'en fait et là je callais (je regardais pas au bon endroit mais qd même)

+1 ;)
Messages postés
2
Date d'inscription
mardi 21 octobre 2003
Statut
Membre
Dernière intervention
10 décembre 2010

Excusez-moi j'avais oublié la note : 9.75/10
geodidier
Afficher les 7 commentaires