Tester l'existence dun feuille de calcul avec VB.net

jamsom Messages postés 242 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 4 novembre 2017 - 22 mai 2016 à 16:20
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 - 23 mai 2016 à 07:08
Bonjour,
sur ma Form j'ai un bouton parcourir et DatagridView
le bouton bouton parcourir permet de choisir un fichier Excel sur mon disque dur, si ce classeur contient une feuille de calcul nommée Source, il affiche les information sur DataGridView et tout marche bien,
si la feuille Source n'existe pas il maffiche un message d'erreur

je veux faire un test si la feuille Source existe il affiche les informations sinon il va afficher un message box pour m'informer que le nom Source n'existe pas

aidezoi Svp

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 22/05/2016 à 17:15
Bonjour,
Avant de le faire en "pilotage" de Excel depuis VB.Net, il va falloir que tu saches le faire depuis VBA/Excel.
Si tu le sais déjà : montre le code que tu écrirais depuis VBA/Excel directement.
Si tu ne le sais pas : discussion à ouvrir dans le forum VBA (sans même mentionner le fait que tu veux "piloter" depuis VB.Net).
On ne saurait piloter à distance un véhicule que l'on ne saurait conduire directement. Cela va de soi.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
22 mai 2016 à 18:35
Bonsoir
Si tu comptes utiliser l'API interop, alors commence par suivre le conseil d'Uc.
L'intérêt principal de cette api est de piloter le logiciel, donc d'en faire tout ce qu'on veut:
  • mise en forme
  • formules
  • graphiques
  • etc....

Le désavantage principal est sa lenteur d'exécution.
Et bien sûr, il faut excel.

Si ton besoin consiste juste à l'extraction de données (et éventuellement l'export), il y'a d'autres méthodes bien plus rapides:

Donc afin de te répondre il faudrait savoir quelle méthode tu utilises ou quel besoin tu as.
0
jamsom Messages postés 242 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 4 novembre 2017
22 mai 2016 à 19:10
voici mon code:

OpenFileDialog1.Filter = "fichier Excel (*.xlsx)|*.xlsx| fichier Excel (*.xlsm)|*.xlsm"
OpenFileDialog1.ShowDialog()

Try
dim titre as string
Dim lien As String = OpenFileDialog1.FileName
Dim MyConnection As System.Data.OleDb.OleDbConnection
Dim Dataset As System.Data.DataSet
Dim Mycommand As System.Data.OleDb.OleDbDataAdapter
Dim path As String = lien
titre = lien

MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0; Data source=" + path + "; Extended Properties=Excel 12.0;")

Mycommand = New System.Data.OleDb.OleDbDataAdapter(" Select * from [source$]", MyConnection)

Dataset = New System.Data.DataSet
Mycommand.Fill(Dataset)
DataGridView1.DataSource = Dataset.Tables(0)

MyConnection.Close()

Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
22 mai 2016 à 20:08
Bon, ole de ça n'est pas mon truc, mais tu as déjà une solution, à savoir le Try catch.
Tu peux même faire plusieurs catch en fonction de l'erreur retournée
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 22/05/2016 à 20:54
 Dim lien As String = OpenFileDialog1.FileName
...
Dim path As String = lien
...
titre = lien

...
Je ne connais vraiment rien de VB.Net, mais aimerais qu'un connaisseur m'explique les lignes de code ci-dessus.
Pour moi, finalement :
Lien = OpenFileDialog1.FileName (pour autant qu'un fichier ait été sélectionné)
Mais également :
Path = OpenFileDialog1.FileName (pour autant qu'un fichier ait été sélectionné)
Mais également :
titre = OpenFileDialog1.FileName (pour autant qu'un fichier ait été sélectionné)
Etrange, pour moi, cette multiplication de variables ayant le même contenu ...
On m'explique ?
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
jamsom Messages postés 242 Date d'inscription mercredi 8 mai 2013 Statut Membre Dernière intervention 4 novembre 2017
22 mai 2016 à 21:17
les variable Titre et lien
je les déclare comme des variables globales, il sont utilisés dans d'autres boutons
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 mai 2016 à 21:20
Oui ? Et alors ?
Bon ... je vais dormir (ce sera mieux).
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656 > ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018
22 mai 2016 à 22:56
Oh je n'avais même pas vu!
Si c'est très utile, ça sert à tripler la mémoire nécessaire!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 22/05/2016 à 23:53
Salut, Whismeril...
Je te propose maintenant une petite causerie.
Comment qualifierions-nous un personnage qui entrerait dans l'enceinte d'une usine pour y rechercher quelque-chose sur les étagères de l'un des entrepôts, sans même savoir si cet entrepôt-là existe parmi les entrepôts de cette usine ? Sans vraiment tenir à le qualifier avec précision, j'avancerais quand-même que ce personnage est totalement étranger à cette usine. Et s'il entre dans cette enceinte autrement que par la porte normale (l'accès/ouverture), il doit bien avoir ses raisons que je ne connais pas.
Ceci étant dit :
Un classeur Excel est en fait une base de données composée d'une ou de plusieurs tables. Les différentes tables d'un classeur sont ses feuilles de calcul.
Vouloir extraire des données de l'une des tables d'une base sans connaître les noms des tables qui la composent (et donc encore moins si le nom de table que l'on "suppose" existe) est pour le moins surprenant.
Travailler à coups de Try Catch servirait à quoi ? à tenter de trouver une table (laquelle) en essayant plusieurs "clés" (j'ai choisi mon mot) du trousseau de clés que l'on porte à la ceinture ? Quelle serait donc une telle démarche ?
S'il y tient maintenant tant : il lui faut alors commencer par analyser la structure de la base de données concernée (son classeur, donc), afin d'y recenser la/les table(s) (ses feuilles de calculs) présentes. Puis en choisir une (laquelle ?) et y farfouiller ...
Comment le faire ? Réponse dans l'un des messages de cette discussion :
https://social.msdn.microsoft.com/Forums/vstudio/en-US/ce4bbe9c-7d13-44c5-a26c-4b84912a51f3/read-excel-file-without-worksheet-name?forum=vbgeneral
Je sais que cela t'intéressera mais ne suis pas certain de ce que notre ami demandeur y comprenne grand chose
Bonne nuit.

PS : il lui serait bien évidemment plus facile d'entrer sans se cacher par la porte normale (instanciation de Excel, du classeur, des feuilles ...)

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
23 mai 2016 à 07:08
Bonjour

Comme je l'ai écrit plus haut (ou ou essayé car mon correcteur d'orthographe est passé par là et je n'ai pas fait attention sur le moment), Ole DB n'est pas dans mon champ de compétence, j'en ai fait un peu il y a bien longtemps et sans doute pas au mieux.
Le try catch est nécessaire car il arrive qu'une connexion ne marche pas.
Donc vu qu'il est là, une solution est de s'en servir.
Bien sûr l'interception d'exemption n'est pas la meilleure façon de programmer et la framework est en général bien faite.
Le lien que tu as trouvé le montre bien, il existe un outils sur Ole BD qui retourne la liste des tables.
Cela me parait parfaitement logique, mais hier j'avais la flemme de chercher ;-).
0
Rejoignez-nous