OVH Cloud OVH Cloud

Pb de lecture d'1 fichier Excel : Cellule A1 introuvable ?

4 réponses
Avatar
Stéphane L.
Bonjour,

En utilisant la méthode qui permet de lire 1 fichier Excel sans l'ouvrir, je
n'arrive pas à trouver la cellule A1.
Dim ds As DataSet

Dim ma_commande As OleDb.OleDbDataAdapter

Dim ma_connexion As OleDb.OleDbConnection

ma_connexion = New OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0"
& _

"; data source=" & Me.OpenFileDialog_Importation_MP.FileName & _

"; Extended Properties=Excel 8.0;")

ma_commande = New OleDb.OleDbDataAdapter("Select * from [Feuil1$]",
ma_connexion)

ds = New DataSet

ma_commande.Fill(ds)

feuille_xl = ds.Tables(0)

'A1

If IsDBNull(feuille_xl.Rows(0).ItemArray(0)) Then

a1 = "VIDE"

Else

a1 = feuille_xl.Rows(0).ItemArray(0)

End If

'A5

If IsDBNull(feuille_xl.Rows(4).ItemArray(0)) Then

a5 = ""

Else

a5 = feuille_xl.Rows(4).ItemArray(0)

End If


Dans mon fichier Excel, j'ai bien quelque chose de marqué en A1 et A5.
Mais le programme ne me lit 1 valeur que dans A5 (me retourne "VIDE" pour
A1).


--
Cordialement,

Stéphane L

4 réponses

Avatar
Stéphane L.
Bon.. bin tant pis, j'utilise l'objet Excel.Application
Comme ça, j'ai bien A1.
Par contre, c'est 10 fois plus lent :/

"Stéphane L." a écrit dans le message de
news:%23qLQYW$
Bonjour,

En utilisant la méthode qui permet de lire 1 fichier Excel sans l'ouvrir,


je
n'arrive pas à trouver la cellule A1.
Dim ds As DataSet

Dim ma_commande As OleDb.OleDbDataAdapter

Dim ma_connexion As OleDb.OleDbConnection

ma_connexion = New


OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0"
& _

"; data source=" & Me.OpenFileDialog_Importation_MP.FileName & _

"; Extended Properties=Excel 8.0;")

ma_commande = New OleDb.OleDbDataAdapter("Select * from [Feuil1$]",
ma_connexion)

ds = New DataSet

ma_commande.Fill(ds)

feuille_xl = ds.Tables(0)

'A1

If IsDBNull(feuille_xl.Rows(0).ItemArray(0)) Then

a1 = "VIDE"

Else

a1 = feuille_xl.Rows(0).ItemArray(0)

End If

'A5

If IsDBNull(feuille_xl.Rows(4).ItemArray(0)) Then

a5 = ""

Else

a5 = feuille_xl.Rows(4).ItemArray(0)

End If


Dans mon fichier Excel, j'ai bien quelque chose de marqué en A1 et A5.
Mais le programme ne me lit 1 valeur que dans A5 (me retourne "VIDE" pour
A1).


--
Cordialement,

Stéphane L




Avatar
Stéphane L.
Bonjour,

Bien sur, toujours 1 pb...

xlApp = CreateObject("Excel.Application")

xlBook = xlApp.Workbooks.Open(Me.OpenFileDialog_Importation_MP.FileName)

xlSheet = xlBook.Worksheets("Feuil1")

...

xlBook.Close()

xlApp.Quit()

xlSheet = Nothing

xlBook = Nothing

xlApp = Nothing


Mais le processus Excel.exe est toujours actif...

J'ai oublié de faire quekchose?
Merci d'avance

Stéphane

"Stéphane L." a écrit dans le message de
news:%
Bon.. bin tant pis, j'utilise l'objet Excel.Application
Comme ça, j'ai bien A1.
Par contre, c'est 10 fois plus lent :/

"Stéphane L." a écrit dans le message de
news:%23qLQYW$
> Bonjour,
>
> En utilisant la méthode qui permet de lire 1 fichier Excel sans


l'ouvrir,
je
> n'arrive pas à trouver la cellule A1.
> Dim ds As DataSet
>
> Dim ma_commande As OleDb.OleDbDataAdapter
>
> Dim ma_connexion As OleDb.OleDbConnection
>
> ma_connexion = New
OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0"
> & _
>
> "; data source=" & Me.OpenFileDialog_Importation_MP.FileName & _
>
> "; Extended Properties=Excel 8.0;")
>
> ma_commande = New OleDb.OleDbDataAdapter("Select * from [Feuil1$]",
> ma_connexion)
>
> ds = New DataSet
>
> ma_commande.Fill(ds)
>
> feuille_xl = ds.Tables(0)
>
> 'A1
>
> If IsDBNull(feuille_xl.Rows(0).ItemArray(0)) Then
>
> a1 = "VIDE"
>
> Else
>
> a1 = feuille_xl.Rows(0).ItemArray(0)
>
> End If
>
> 'A5
>
> If IsDBNull(feuille_xl.Rows(4).ItemArray(0)) Then
>
> a5 = ""
>
> Else
>
> a5 = feuille_xl.Rows(4).ItemArray(0)
>
> End If
>
>
> Dans mon fichier Excel, j'ai bien quelque chose de marqué en A1 et A5.
> Mais le programme ne me lit 1 valeur que dans A5 (me retourne "VIDE"


pour
> A1).
>
>
> --
> Cordialement,
>
> Stéphane L
>
>




Avatar
Aba
Essayez d'ajouter GC.Collect() qui force le GC (Garbage Collection) sur
tous les objets .

"Stéphane L." a écrit dans le message de
news:
Bonjour,

Bien sur, toujours 1 pb...

xlApp = CreateObject("Excel.Application")

xlBook = xlApp.Workbooks.Open(Me.OpenFileDialog_Importation_MP.FileName)

xlSheet = xlBook.Worksheets("Feuil1")

...

xlBook.Close()

xlApp.Quit()

xlSheet = Nothing

xlBook = Nothing

xlApp = Nothing


Mais le processus Excel.exe est toujours actif...

J'ai oublié de faire quekchose?
Merci d'avance

Stéphane

"Stéphane L." a écrit dans le message de
news:%
> Bon.. bin tant pis, j'utilise l'objet Excel.Application
> Comme ça, j'ai bien A1.
> Par contre, c'est 10 fois plus lent :/
>
> "Stéphane L." a écrit dans le message de
> news:%23qLQYW$
> > Bonjour,
> >
> > En utilisant la méthode qui permet de lire 1 fichier Excel sans
l'ouvrir,
> je
> > n'arrive pas à trouver la cellule A1.
> > Dim ds As DataSet
> >
> > Dim ma_commande As OleDb.OleDbDataAdapter
> >
> > Dim ma_connexion As OleDb.OleDbConnection
> >
> > ma_connexion = New
> OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0"
> > & _
> >
> > "; data source=" & Me.OpenFileDialog_Importation_MP.FileName & _
> >
> > "; Extended Properties=Excel 8.0;")
> >
> > ma_commande = New OleDb.OleDbDataAdapter("Select * from [Feuil1$]",
> > ma_connexion)
> >
> > ds = New DataSet
> >
> > ma_commande.Fill(ds)
> >
> > feuille_xl = ds.Tables(0)
> >
> > 'A1
> >
> > If IsDBNull(feuille_xl.Rows(0).ItemArray(0)) Then
> >
> > a1 = "VIDE"
> >
> > Else
> >
> > a1 = feuille_xl.Rows(0).ItemArray(0)
> >
> > End If
> >
> > 'A5
> >
> > If IsDBNull(feuille_xl.Rows(4).ItemArray(0)) Then
> >
> > a5 = ""
> >
> > Else
> >
> > a5 = feuille_xl.Rows(4).ItemArray(0)
> >
> > End If
> >
> >
> > Dans mon fichier Excel, j'ai bien quelque chose de marqué en A1 et A5.
> > Mais le programme ne me lit 1 valeur que dans A5 (me retourne "VIDE"
pour
> > A1).
> >
> >
> > --
> > Cordialement,
> >
> > Stéphane L
> >
> >
>
>




Avatar
Stéphane L.
Je ne connaissais pas ça... je vais y regarder de plus pret
Merci Aba pour la proposition :)

Stéphane

"Aba" a écrit dans le message de
news:erw2%
Essayez d'ajouter GC.Collect() qui force le GC (Garbage Collection) sur
tous les objets .

"Stéphane L." a écrit dans le message de
news:
> Bonjour,
>
> Bien sur, toujours 1 pb...
>
> xlApp = CreateObject("Excel.Application")
>
> xlBook = xlApp.Workbooks.Open(Me.OpenFileDialog_Importation_MP.FileName)
>
> xlSheet = xlBook.Worksheets("Feuil1")
>
> ...
>
> xlBook.Close()
>
> xlApp.Quit()
>
> xlSheet = Nothing
>
> xlBook = Nothing
>
> xlApp = Nothing
>
>
> Mais le processus Excel.exe est toujours actif...
>
> J'ai oublié de faire quekchose?
> Merci d'avance
>
> Stéphane
>
> "Stéphane L." a écrit dans le message de
> news:%
> > Bon.. bin tant pis, j'utilise l'objet Excel.Application
> > Comme ça, j'ai bien A1.
> > Par contre, c'est 10 fois plus lent :/
> >
> > "Stéphane L." a écrit dans le message de
> > news:%23qLQYW$
> > > Bonjour,
> > >
> > > En utilisant la méthode qui permet de lire 1 fichier Excel sans
> l'ouvrir,
> > je
> > > n'arrive pas à trouver la cellule A1.
> > > Dim ds As DataSet
> > >
> > > Dim ma_commande As OleDb.OleDbDataAdapter
> > >
> > > Dim ma_connexion As OleDb.OleDbConnection
> > >
> > > ma_connexion = New
> > OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0"
> > > & _
> > >
> > > "; data source=" & Me.OpenFileDialog_Importation_MP.FileName & _
> > >
> > > "; Extended Properties=Excel 8.0;")
> > >
> > > ma_commande = New OleDb.OleDbDataAdapter("Select * from [Feuil1$]",
> > > ma_connexion)
> > >
> > > ds = New DataSet
> > >
> > > ma_commande.Fill(ds)
> > >
> > > feuille_xl = ds.Tables(0)
> > >
> > > 'A1
> > >
> > > If IsDBNull(feuille_xl.Rows(0).ItemArray(0)) Then
> > >
> > > a1 = "VIDE"
> > >
> > > Else
> > >
> > > a1 = feuille_xl.Rows(0).ItemArray(0)
> > >
> > > End If
> > >
> > > 'A5
> > >
> > > If IsDBNull(feuille_xl.Rows(4).ItemArray(0)) Then
> > >
> > > a5 = ""
> > >
> > > Else
> > >
> > > a5 = feuille_xl.Rows(4).ItemArray(0)
> > >
> > > End If
> > >
> > >
> > > Dans mon fichier Excel, j'ai bien quelque chose de marqué en A1 et


A5.
> > > Mais le programme ne me lit 1 valeur que dans A5 (me retourne "VIDE"
> pour
> > > A1).
> > >
> > >
> > > --
> > > Cordialement,
> > >
> > > Stéphane L
> > >
> > >
> >
> >
>
>