Ouverture d'un document .csv sur excel

[Résolu]
Signaler
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009
-
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009
-
Bonjour tout le monde. Alors voici mon probleme du jour (oui, j'ai un pb chaque jours...):

Le code suivant me permet d'ouvrir une boite de dialogue où je selectionne un fichier à ouvrir. Je voudrais ouvrir ce document sous Excel. Est-ce qu'en selectionnant simplement le document et en appuyant sur "Ouvrir", Excel est sensé se lancer, ou dois-je apporter un supplément à mon code pour lui dire d'ouvrir ce document avec Excel?

Private Sub Ouvrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ouvrir.Click
        Dim OpenFichierExcel As New OpenFileDialog()
        OpenFichierExcel.Filter = "Fichiers CSV| *.csv"
        OpenFichierExcel.Title = "Selectionner le .csv à traiter (Extrait de REMEDY)"

        If OpenFichierExcel.ShowDialog() = DialogResult.OK Then
            Dim sr As New System.IO.StreamReader(OpenFichierExcel.FileName)
            MessageBox.Show(sr.ReadToEnd)
            sr.Close()

        End If
End Sub

18 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
pas grave, suffit de ne pas le mettre.

Sert toi de ce snippet de Drikce06, t'as juste la méthode Add à ne pas utiliser et à remplacer par Open :
http://www.codyx.org/snippet_comment-ouvrir-classeur-excel-vierge-depuis-vb6_202.aspx

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
tu as tous les éléments depuis le début...

If OpenFichierExcel.ShowDialog() = DialogResult.OK Then _
    startprocessOpenFichierExcel.FileName

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

C'est bon, j'ai trouvé pourquoi rien ne s'affichait: j'avais oublié "appExcel.Visible = True" ...
Merci à tous de m'avoir aidé :)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

ton code actuel récupère le contenu du fichier, excel risque de ne s'ouvrir que si le client clique dessus, çà ne serait que pure coïncidence ^^

http://www.codyx.org/snippet_ouvrir-document-lancer-executable_25.aspx#69

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

Est-ce qu'un simple ajout de ceci pourrait regler mon probleme?
StartProcess 
"C:\...\Excel.exe"
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
essaye, tu verras que non

le code fourni sert à lancer le programme associé "implicitement" en indiquant juste le nom du fichier à ouvrir...
(ce que te retourne la boite de dialogue)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

sinon, déclarer les objets Excel et Classeur, puis tu ouvres le fichier csv avec l'objet classeur avec Set pour lié la variable objet au fichier
(cherche du côté de Microsoft.Office.Interop.Excel.Application)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
(me semble qu'il n'y a plus de SET en .net, à vérifier)
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

Apparamment pas de SET en .net :s
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
... çà change rien, tu as tout de même 2 solutions

startprocess "chemin_complet.csv"
ou avec l'objet excel par obj excel (et pas set obj excel, mais c'est strictement pareil. VB doit même naturellement supprimer le mot SET ; pas d'erreur pour autant)

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

Oki merci à vous 2, des que j'ai un peu de temp je vais tester vos différentes méthodes et je vous tien au courant :)

Thx bye !!!
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

C'est encore moi ^^
Juste une petite question qui me passait par la tête, mais j'ai pas encore eu le temps de tester:
Est-ce que en valeur du startprocess je peux mettre une variable?
En gros est-ce que [ startprocess sr ] est susceptible  de fonctionner (d'après la partie du code que j'ai montré toute à l'heure)?

Bon aller, cette fois le travail m'appelle, je repasserais vers 17h pour voir si quelqu'un a rep :)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
si SR est une string uniquement, donc non pour SR, oui pour une variable STRING
(oublie de suite ton envie de passer LE CONTENU du fichier en param !!!)
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

*oubli*

C'est fait... ^^"
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

En fait je ne souhaite pas récupérer le contenu du mon document excel pour le mettre dans une variable, je souhaiterais récupérer l'adresse du document sélectionner pour le stocker dans une variable, pour apres pouvoir la placer apres un "startprocess". C'est possible?
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

Ouais mais j'y connais pratiquement rien en VB, je me lance là, donc je comprend pas tout :s
En tout cas merci :)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
c'est l'éternel problème des copier/coller :)
si on copie sans comprendre, souvent un moment, "çà marche pas" ^^

ps : si une ou des réponses te conviennent, pense à les valider
Messages postés
130
Date d'inscription
lundi 16 mars 2009
Statut
Membre
Dernière intervention
16 juillet 2009

Bon alors y'a un plus et un moins:
le plus c'est que j'ai plus d'erreurs et que tout est "reconnu";

le moins, c'est qu'après avoir appuyer sur le bouton "Ouvrir" de la boite de dialogue (donc après avoir sélectionner mon fichier à ouvrir), rien ne se passe. J'ai fais l'exécution en "Pas à pas détaillé", et je remarque qu'en cliquant sur le bouton "Ouvrir" de la boite de dialogue, je ne rentre pas dans le If.

(Je remet ici le code que j'ai utilisé, pour éviter de retourner tout au début)

Public Class Form1

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

    Public Sub StartProcess(ByVal sFile As String, Optional ByVal sParameters As String = vbNullString)
        ShellExecute(0&, "open", sFile, sParameters, vbNullString, 1&)
    End Sub

    Private Sub Ouvrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ouvrir.Click
        Dim OpenFichierExcel As New OpenFileDialog()
        OpenFichierExcel.Filter = "Fichiers CSV| *.csv"
        OpenFichierExcel.Title = "Selectionner le .csv à traiter (Extrait de REMEDY)"

        If OpenFichierExcel.ShowDialog() = DialogResult.OK Then
            StartProcess(OpenFichierExcel.FileName())
        End If
    End Sub
End Class

J'avoue ne pas avoir trop compris le code de la déclaration de ShellExecute, mis à part le fait que c'est ce qui apparamment servirait à fare en sorte à ce que StartProcess ouvre le .csv dans excel... mais je suis vraiment pas sur :s