Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Suite Quasimodo bis

9 réponses
Avatar
JCM
Bonjour Quasimodo
>
> lors d'une précédente question vous m'avez demandé :
> pouvez-vous explicité votre fonction : ExecSQLExcell
>
> et j'ai répondu :
> Ma fonction : ExecSQLExcell
>
> Public Function ExecSQLExcell(MySqlExcell As String, ByRef ADOrstExcell As
> ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
> 'Initialisation du RecordSet
> If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
> 'Ouvre une transaction pour ne pas à avoir à réaliser de commit en fin
> de traitement
> ADOcnExcel.BeginTrans
> 'Positionne le curseur côté client
> ADOrstExcell.CursorLocation = adUseClient
> 'Vérifie que la connexion passée est bonne
> Set ADOrstExcell.ActiveConnection = ADOcnExcel
> On Error GoTo ErrHandle
> 'Exécute la requête
> ADOrstExcell.Open MySqlExcell, ADOcnExcel
> 'Valide la transaction
> ADOcnExcel.CommitTrans
> ExecSQLExcell = True
> Exit Function
> ErrHandle:
> ExecSQLExcell = False
> MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr & Err.Description,
> vbCritical
> End Function
>
>
> ET PLUS DE SUITE .........;
>
> Cordialement
> JCM

soir,
sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes de
revvoir cela pour cette semaine ;-)

9 réponses

Avatar
LE TROLL
Ah, pardon, c'et un courrier personnel, désolé :o)

----------
"JCM" a écrit dans le message de news:

Bonjour Quasimodo

lors d'une précédente question vous m'avez demandé :
pouvez-vous explicité votre fonction : ExecSQLExcell

et j'ai répondu :
Ma fonction : ExecSQLExcell

Public Function ExecSQLExcell(MySqlExcell As String, ByRef ADOrstExcell
As
ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
'Initialisation du RecordSet
If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
'Ouvre une transaction pour ne pas à avoir à réaliser de commit en
fin
de traitement
ADOcnExcel.BeginTrans
'Positionne le curseur côté client
ADOrstExcell.CursorLocation = adUseClient
'Vérifie que la connexion passée est bonne
Set ADOrstExcell.ActiveConnection = ADOcnExcel
On Error GoTo ErrHandle
'Exécute la requête
ADOrstExcell.Open MySqlExcell, ADOcnExcel
'Valide la transaction
ADOcnExcel.CommitTrans
ExecSQLExcell = True
Exit Function
ErrHandle:
ExecSQLExcell = False
MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr & Err.Description,
vbCritical
End Function


ET PLUS DE SUITE .........;

Cordialement
JCM



soir,
sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes de
revvoir cela pour cette semaine ;-)




Avatar
Quasimodo
JCM explained on 12/22/2004 :
Bonjour Quasimodo

lors d'une précédente question vous m'avez demandé :
pouvez-vous explicité votre fonction : ExecSQLExcell

et j'ai répondu :
Ma fonction : ExecSQLExcell

Public Function ExecSQLExcell(MySqlExcell As String, ByRef ADOrstExcell As
ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
'Initialisation du RecordSet
If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
'Ouvre une transaction pour ne pas à avoir à réaliser de commit en
fin de traitement
ADOcnExcel.BeginTrans
'Positionne le curseur côté client
ADOrstExcell.CursorLocation = adUseClient
'Vérifie que la connexion passée est bonne
Set ADOrstExcell.ActiveConnection = ADOcnExcel
On Error GoTo ErrHandle
'Exécute la requête
ADOrstExcell.Open MySqlExcell, ADOcnExcel
'Valide la transaction
ADOcnExcel.CommitTrans
ExecSQLExcell = True
Exit Function
ErrHandle:
ExecSQLExcell = False
MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr & Err.Description,
vbCritical
End Function


ET PLUS DE SUITE .........;

Cordialement
JCM



soir,
sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes de
revvoir cela pour cette semaine ;-)



salut,
oooouuuupss sorry.
J'y tape un zoeil maintenant. Pouvez-vous me rappeler l'erreur (le code
est ici) ok
suite ce-soir ;-)

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
JCM
Bonjour voici l'erreur :

Je voudrais afficher les données de la feuille d'un classeur Excell existant
dans un MSFlexgrid et là j'ai un beug : la feuille est introuvable, et
pourtant elle existe
Par contre si c'est un classeur créé et rempli par l'appli cela fonctionne
Pouvez-vous me dire ou est l'erreur
voici mon code :

le chemin du classeur est donné par un commandDialog :
strFileNameExcel = CmdLgMain.fileName

ensuite la feuille est donnée par un affichage dans un combo:

Private Sub CboFeuillesEX_Click()
'feuille sélectionnée
LafeuilleEX = CboFeuillesEX.Text
'Vérifie que la connexion est bien fermée
If ADOcnExcel.state = adStateOpen Then
ADOcnExcel.Close
End If
Set ADOcnExcel = Nothing

Call MyFonctions.InitConnectionExcell
Call ExecSQLExcell("select * from " & LafeuilleEX, ADOrstExcell, ADOcnExcel)

'remplissage de MSExcell
laligne = 0
Do Until ADOrstExcell.EOF
laligne% = laligne + 1
MSExcell.FixedAlignment(1) = 4
MSExcell.Rows = laligne + 1
MSExcell.Row = laligne
MSExcell.col = 0
MSExcell.Text = ADOrstExcell("ZONE")
etc...............
ADOrstExcell.MoveNext
Loop
End Sub

Merci pour votre réponse
Cordialement
JCM
"Quasimodo" a écrit dans le message de
news:
JCM explained on 12/22/2004 :
> Bonjour Quasimodo
>>
>> lors d'une précédente question vous m'avez demandé :
>> pouvez-vous explicité votre fonction : ExecSQLExcell
>>
>> et j'ai répondu :
>> Ma fonction : ExecSQLExcell
>>
>> Public Function ExecSQLExcell(MySqlExcell As String, ByRef ADOrstExcell


As
>> ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
>> 'Initialisation du RecordSet
>> If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
>> 'Ouvre une transaction pour ne pas à avoir à réaliser de commit


en
>> fin de traitement
>> ADOcnExcel.BeginTrans
>> 'Positionne le curseur côté client
>> ADOrstExcell.CursorLocation = adUseClient
>> 'Vérifie que la connexion passée est bonne
>> Set ADOrstExcell.ActiveConnection = ADOcnExcel
>> On Error GoTo ErrHandle
>> 'Exécute la requête
>> ADOrstExcell.Open MySqlExcell, ADOcnExcel
>> 'Valide la transaction
>> ADOcnExcel.CommitTrans
>> ExecSQLExcell = True
>> Exit Function
>> ErrHandle:
>> ExecSQLExcell = False
>> MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr & Err.Description,
>> vbCritical
>> End Function
>>
>>
>> ET PLUS DE SUITE .........;
>>
>> Cordialement
>> JCM
>
> soir,
> sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes de
> revvoir cela pour cette semaine ;-)

salut,
oooouuuupss sorry.
J'y tape un zoeil maintenant. Pouvez-vous me rappeler l'erreur (le code
est ici) ok
suite ce-soir ;-)

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com



Avatar
Hervé
Salut JCM,
Essai avec le caractère accentué (` AltGr et 7 du pavé Alphanumérique) et le
dollar $ :
Call ExecSQLExcell("select * from `" & LafeuilleEX & "$`", ADOrstExcell,
ADOcnExcel)

Un exemple avec ADO (cocher la référence) :
Pour tester, un MSFlexGrid et un CommandButton sur une Form en modifiant le
chemin du classeur et le nom de la feuille (ça fonctionne que le classeur
soit ouvert ou non) :

Sub ConnecterCLasseur(ConnectBD As ADODB.Connection, _
Fichier As String, _
Optional Rs)
Set ConnectBD = New ADODB.Connection
If Not IsMissing(Rs) Then
Set Rs = New ADODB.Recordset
End If
ConnectBD.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""
End Sub

Private Sub Command1_Click()
Dim Classeur As String
Dim I As Integer, J As Integer

Classeur = "D:Mon DossierMonClasseur.xls"
Lire Classeur, "Feuil1"
End Sub

Sub Lire(Classeur As String, _
NomFeuille As String)
'relation précoce
Dim ConnectCL As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Champ As ADODB.Field
Dim I As Integer, J As Integer

'ouvre la connection au classeur
ConnecterCLasseur ConnectCL, _
Classeur, _
Rs

With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$`", _
ConnectCL
.MoveFirst
MSFlexGrid1.Rows = .RecordCount
MSFlexGrid1.Cols = .Fields.Count
Do While Not .EOF
MSFlexGrid1.Row = I
I = I + 1
For Each Champ In .Fields
MSFlexGrid1.Col = J
If I = 1 Then
MSFlexGrid1.Text = Champ.Name
Else
MSFlexGrid1.Text = Champ.Value
End If
J = J + 1
Next
J = 0
.MoveNext
Loop
End With

ConnectCL.Close

Set Champ = Nothing
Set Rs = Nothing
Set ConnectCL = Nothing
End Sub

Hervé.


"JCM" a écrit dans le message news:

Bonjour voici l'erreur :

Je voudrais afficher les données de la feuille d'un classeur Excell


existant
dans un MSFlexgrid et là j'ai un beug : la feuille est introuvable, et
pourtant elle existe
Par contre si c'est un classeur créé et rempli par l'appli cela fonctionne
Pouvez-vous me dire ou est l'erreur
voici mon code :

le chemin du classeur est donné par un commandDialog :
strFileNameExcel = CmdLgMain.fileName

ensuite la feuille est donnée par un affichage dans un combo:

Private Sub CboFeuillesEX_Click()
'feuille sélectionnée
LafeuilleEX = CboFeuillesEX.Text
'Vérifie que la connexion est bien fermée
If ADOcnExcel.state = adStateOpen Then
ADOcnExcel.Close
End If
Set ADOcnExcel = Nothing

Call MyFonctions.InitConnectionExcell
Call ExecSQLExcell("select * from " & LafeuilleEX, ADOrstExcell,


ADOcnExcel)

'remplissage de MSExcell
laligne = 0
Do Until ADOrstExcell.EOF
laligne% = laligne + 1
MSExcell.FixedAlignment(1) = 4
MSExcell.Rows = laligne + 1
MSExcell.Row = laligne
MSExcell.col = 0
MSExcell.Text = ADOrstExcell("ZONE")
etc...............
ADOrstExcell.MoveNext
Loop
End Sub

Merci pour votre réponse
Cordialement
JCM
"Quasimodo" a écrit dans le message de
news:
> JCM explained on 12/22/2004 :
> > Bonjour Quasimodo
> >>
> >> lors d'une précédente question vous m'avez demandé :
> >> pouvez-vous explicité votre fonction : ExecSQLExcell
> >>
> >> et j'ai répondu :
> >> Ma fonction : ExecSQLExcell
> >>
> >> Public Function ExecSQLExcell(MySqlExcell As String, ByRef


ADOrstExcell
As
> >> ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
> >> 'Initialisation du RecordSet
> >> If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
> >> 'Ouvre une transaction pour ne pas à avoir à réaliser de


commit
en
> >> fin de traitement
> >> ADOcnExcel.BeginTrans
> >> 'Positionne le curseur côté client
> >> ADOrstExcell.CursorLocation = adUseClient
> >> 'Vérifie que la connexion passée est bonne
> >> Set ADOrstExcell.ActiveConnection = ADOcnExcel
> >> On Error GoTo ErrHandle
> >> 'Exécute la requête
> >> ADOrstExcell.Open MySqlExcell, ADOcnExcel
> >> 'Valide la transaction
> >> ADOcnExcel.CommitTrans
> >> ExecSQLExcell = True
> >> Exit Function
> >> ErrHandle:
> >> ExecSQLExcell = False
> >> MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr &


Err.Description,
> >> vbCritical
> >> End Function
> >>
> >>
> >> ET PLUS DE SUITE .........;
> >>
> >> Cordialement
> >> JCM
> >
> > soir,
> > sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes de
> > revvoir cela pour cette semaine ;-)
>
> salut,
> oooouuuupss sorry.
> J'y tape un zoeil maintenant. Pouvez-vous me rappeler l'erreur (le code
> est ici) ok
> suite ce-soir ;-)
>
> @+Quaz
>
> --
> This is an automatic signature of MesNews.
> Site : http://mesnews.no-ip.com
>




Avatar
JCM
Bonjour Hervé
Merci pour ta réponse et ton code qui règle en partie mon problème,
néanmoins quand je lance l'appli j'ai le problème suivant

Mon MSFlexgrid comporte 15 colonnes et les titres des colonnes 5 à 13 ne
s'affichent pas
pour certaines colonnes j'ai données décimales et je voudrais limité
l'affichage à 2 décimales (comme dans mon classeur Excell)
Peux-tu me donner les réponses

D'autre part je voudrais également après l'affichage des données dans le
MSflexgrid, à partir d'un second bouton, transférer la feuille excell dans
une table Access, as-tu un bout de code pour faire se transfert

Encore merci pour ton aide, car cela fait un mois que je galère sur ce
problème et cela ma met dans la M........

Cordialement
JCM
"Hervé" a écrit dans le message de
news:%
Salut JCM,
Essai avec le caractère accentué (` AltGr et 7 du pavé Alphanumérique) et


le
dollar $ :
Call ExecSQLExcell("select * from `" & LafeuilleEX & "$`", ADOrstExcell,
ADOcnExcel)

Un exemple avec ADO (cocher la référence) :
Pour tester, un MSFlexGrid et un CommandButton sur une Form en modifiant


le
chemin du classeur et le nom de la feuille (ça fonctionne que le classeur
soit ouvert ou non) :

Sub ConnecterCLasseur(ConnectBD As ADODB.Connection, _
Fichier As String, _
Optional Rs)
Set ConnectBD = New ADODB.Connection
If Not IsMissing(Rs) Then
Set Rs = New ADODB.Recordset
End If
ConnectBD.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""
End Sub

Private Sub Command1_Click()
Dim Classeur As String
Dim I As Integer, J As Integer

Classeur = "D:Mon DossierMonClasseur.xls"
Lire Classeur, "Feuil1"
End Sub

Sub Lire(Classeur As String, _
NomFeuille As String)
'relation précoce
Dim ConnectCL As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Champ As ADODB.Field
Dim I As Integer, J As Integer

'ouvre la connection au classeur
ConnecterCLasseur ConnectCL, _
Classeur, _
Rs

With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$`", _
ConnectCL
.MoveFirst
MSFlexGrid1.Rows = .RecordCount
MSFlexGrid1.Cols = .Fields.Count
Do While Not .EOF
MSFlexGrid1.Row = I
I = I + 1
For Each Champ In .Fields
MSFlexGrid1.Col = J
If I = 1 Then
MSFlexGrid1.Text = Champ.Name
Else
MSFlexGrid1.Text = Champ.Value
End If
J = J + 1
Next
J = 0
.MoveNext
Loop
End With

ConnectCL.Close

Set Champ = Nothing
Set Rs = Nothing
Set ConnectCL = Nothing
End Sub

Hervé.


"JCM" a écrit dans le message news:

> Bonjour voici l'erreur :
>
> Je voudrais afficher les données de la feuille d'un classeur Excell
existant
> dans un MSFlexgrid et là j'ai un beug : la feuille est introuvable, et
> pourtant elle existe
> Par contre si c'est un classeur créé et rempli par l'appli cela


fonctionne
> Pouvez-vous me dire ou est l'erreur
> voici mon code :
>
> le chemin du classeur est donné par un commandDialog :
> strFileNameExcel = CmdLgMain.fileName
>
> ensuite la feuille est donnée par un affichage dans un combo:
>
> Private Sub CboFeuillesEX_Click()
> 'feuille sélectionnée
> LafeuilleEX = CboFeuillesEX.Text
> 'Vérifie que la connexion est bien fermée
> If ADOcnExcel.state = adStateOpen Then
> ADOcnExcel.Close
> End If
> Set ADOcnExcel = Nothing
>
> Call MyFonctions.InitConnectionExcell
> Call ExecSQLExcell("select * from " & LafeuilleEX, ADOrstExcell,
ADOcnExcel)
>
> 'remplissage de MSExcell
> laligne = 0
> Do Until ADOrstExcell.EOF
> laligne% = laligne + 1
> MSExcell.FixedAlignment(1) = 4
> MSExcell.Rows = laligne + 1
> MSExcell.Row = laligne
> MSExcell.col = 0
> MSExcell.Text = ADOrstExcell("ZONE")
> etc...............
> ADOrstExcell.MoveNext
> Loop
> End Sub
>
> Merci pour votre réponse
> Cordialement
> JCM
> "Quasimodo" a écrit dans le message de
> news:
> > JCM explained on 12/22/2004 :
> > > Bonjour Quasimodo
> > >>
> > >> lors d'une précédente question vous m'avez demandé :
> > >> pouvez-vous explicité votre fonction : ExecSQLExcell
> > >>
> > >> et j'ai répondu :
> > >> Ma fonction : ExecSQLExcell
> > >>
> > >> Public Function ExecSQLExcell(MySqlExcell As String, ByRef
ADOrstExcell
> As
> > >> ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
> > >> 'Initialisation du RecordSet
> > >> If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
> > >> 'Ouvre une transaction pour ne pas à avoir à réaliser de
commit
> en
> > >> fin de traitement
> > >> ADOcnExcel.BeginTrans
> > >> 'Positionne le curseur côté client
> > >> ADOrstExcell.CursorLocation = adUseClient
> > >> 'Vérifie que la connexion passée est bonne
> > >> Set ADOrstExcell.ActiveConnection = ADOcnExcel
> > >> On Error GoTo ErrHandle
> > >> 'Exécute la requête
> > >> ADOrstExcell.Open MySqlExcell, ADOcnExcel
> > >> 'Valide la transaction
> > >> ADOcnExcel.CommitTrans
> > >> ExecSQLExcell = True
> > >> Exit Function
> > >> ErrHandle:
> > >> ExecSQLExcell = False
> > >> MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr &
Err.Description,
> > >> vbCritical
> > >> End Function
> > >>
> > >>
> > >> ET PLUS DE SUITE .........;
> > >>
> > >> Cordialement
> > >> JCM
> > >
> > > soir,
> > > sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes de
> > > revvoir cela pour cette semaine ;-)
> >
> > salut,
> > oooouuuupss sorry.
> > J'y tape un zoeil maintenant. Pouvez-vous me rappeler l'erreur (le


code
> > est ici) ok
> > suite ce-soir ;-)
> >
> > @+Quaz
> >
> > --
> > This is an automatic signature of MesNews.
> > Site : http://mesnews.no-ip.com
> >
>
>




Avatar
Quasimodo
JCM used his keyboard to write :
Bonjour Hervé
Merci pour ta réponse et ton code qui règle en partie mon problème,
néanmoins quand je lance l'appli j'ai le problème suivant

Mon MSFlexgrid comporte 15 colonnes et les titres des colonnes 5 à 13 ne
s'affichent pas
pour certaines colonnes j'ai données décimales et je voudrais limité
l'affichage à 2 décimales (comme dans mon classeur Excell)
Peux-tu me donner les réponses

D'autre part je voudrais également après l'affichage des données dans le
MSflexgrid, à partir d'un second bouton, transférer la feuille excell dans
une table Access, as-tu un bout de code pour faire se transfert

Encore merci pour ton aide, car cela fait un mois que je galère sur ce
problème et cela ma met dans la M........

Cordialement
JCM
"Hervé" a écrit dans le message de
news:%
Salut JCM,
Essai avec le caractère accentué (` AltGr et 7 du pavé Alphanumérique) et le
dollar $ :
Call ExecSQLExcell("select * from `" & LafeuilleEX & "$`", ADOrstExcell,
ADOcnExcel)

Un exemple avec ADO (cocher la référence) :
Pour tester, un MSFlexGrid et un CommandButton sur une Form en modifiant le
chemin du classeur et le nom de la feuille (ça fonctionne que le classeur
soit ouvert ou non) :

Sub ConnecterCLasseur(ConnectBD As ADODB.Connection, _
Fichier As String, _
Optional Rs)
Set ConnectBD = New ADODB.Connection
If Not IsMissing(Rs) Then
Set Rs = New ADODB.Recordset
End If
ConnectBD.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""
End Sub

Private Sub Command1_Click()
Dim Classeur As String
Dim I As Integer, J As Integer

Classeur = "D:Mon DossierMonClasseur.xls"
Lire Classeur, "Feuil1"
End Sub

Sub Lire(Classeur As String, _
NomFeuille As String)
'relation précoce
Dim ConnectCL As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Champ As ADODB.Field
Dim I As Integer, J As Integer

'ouvre la connection au classeur
ConnecterCLasseur ConnectCL, _
Classeur, _
Rs

With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$`", _
ConnectCL
.MoveFirst
MSFlexGrid1.Rows = .RecordCount
MSFlexGrid1.Cols = .Fields.Count
Do While Not .EOF
MSFlexGrid1.Row = I
I = I + 1
For Each Champ In .Fields
MSFlexGrid1.Col = J
If I = 1 Then
MSFlexGrid1.Text = Champ.Name
Else
MSFlexGrid1.Text = Champ.Value
End If
J = J + 1
Next
J = 0
.MoveNext
Loop
End With

ConnectCL.Close

Set Champ = Nothing
Set Rs = Nothing
Set ConnectCL = Nothing
End Sub

Hervé.


"JCM" a écrit dans le message news:

Bonjour voici l'erreur :

Je voudrais afficher les données de la feuille d'un classeur Excell
existant dans un MSFlexgrid et là j'ai un beug : la feuille est
introuvable, et pourtant elle existe
Par contre si c'est un classeur créé et rempli par l'appli cela fonctionne
Pouvez-vous me dire ou est l'erreur
voici mon code :

le chemin du classeur est donné par un commandDialog :
strFileNameExcel = CmdLgMain.fileName

ensuite la feuille est donnée par un affichage dans un combo:

Private Sub CboFeuillesEX_Click()
'feuille sélectionnée
LafeuilleEX = CboFeuillesEX.Text
'Vérifie que la connexion est bien fermée
If ADOcnExcel.state = adStateOpen Then
ADOcnExcel.Close
End If
Set ADOcnExcel = Nothing

Call MyFonctions.InitConnectionExcell
Call ExecSQLExcell("select * from " & LafeuilleEX, ADOrstExcell,
ADOcnExcel)

'remplissage de MSExcell
laligne = 0
Do Until ADOrstExcell.EOF
laligne% = laligne + 1
MSExcell.FixedAlignment(1) = 4
MSExcell.Rows = laligne + 1
MSExcell.Row = laligne
MSExcell.col = 0
MSExcell.Text = ADOrstExcell("ZONE")
etc...............
ADOrstExcell.MoveNext
Loop
End Sub

Merci pour votre réponse
Cordialement
JCM
"Quasimodo" a écrit dans le message de
news:
JCM explained on 12/22/2004 :
Bonjour Quasimodo

lors d'une précédente question vous m'avez demandé :
pouvez-vous explicité votre fonction : ExecSQLExcell

et j'ai répondu :
Ma fonction : ExecSQLExcell

Public Function ExecSQLExcell(MySqlExcell As String, ByRef ADOrstExcell
As ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
'Initialisation du RecordSet
If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
'Ouvre une transaction pour ne pas à avoir à réaliser de commit
en fin de traitement
ADOcnExcel.BeginTrans
'Positionne le curseur côté client
ADOrstExcell.CursorLocation = adUseClient
'Vérifie que la connexion passée est bonne
Set ADOrstExcell.ActiveConnection = ADOcnExcel
On Error GoTo ErrHandle
'Exécute la requête
ADOrstExcell.Open MySqlExcell, ADOcnExcel
'Valide la transaction
ADOcnExcel.CommitTrans
ExecSQLExcell = True
Exit Function
ErrHandle:
ExecSQLExcell = False
MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr & Err.Description,
vbCritical
End Function


ET PLUS DE SUITE .........;

Cordialement
JCM



soir,
sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes de
revvoir cela pour cette semaine ;-)



salut,
oooouuuupss sorry.
J'y tape un zoeil maintenant. Pouvez-vous me rappeler l'erreur (le code
est ici) ok
suite ce-soir ;-)

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com









Bonjour,
1.Pour votre grid, évitez de le remplir manuellement, utilisez plutot
le binding avec votre recordset et votre problème sera réglé de facto
(set objRecordset.datasource=....).
2.Voir la technopoche ado, la faq vb ... Aussi, je vous invite à relire
le petit bout de code que je vous avais donné pour la création d'un
fichier mdb (MS Access).

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Avatar
Hervé
Sulut JCM,
-1) Pour le nom des champs, remplace "HDR=NO" par "HDR=YES" (retourne les
entetes de colonnes) dans les lignes ci-dessous :
ConnectBD.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=YES;IMEX=2;"""
_______________________________
-2) Pour les décimales, je te reposte la proc "Lire" modifiée :
Sub Lire(Classeur As String, _
NomFeuille As String)
'relation précoce
Dim ConnectCL As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Champ As ADODB.Field
Dim I As Integer, J As Integer

'ouvre la connection au classeur
ConnecterCLasseur ConnectCL, _
Classeur, _
Rs

With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$`", _
ConnectCL
.MoveFirst
MSFlexGrid1.Rows = .RecordCount
MSFlexGrid1.Cols = .Fields.Count
Do While Not .EOF
MSFlexGrid1.Row = I
I = I + 1
For Each Champ In .Fields
MSFlexGrid1.Col = J
If I = 1 Then
MSFlexGrid1.Text = Champ.Name
Else
' ---modif ici...
If Champ.Type = 5 Then ' Double
MSFlexGrid1.Text = Round(Champ.Value, 2)
Else
MSFlexGrid1.Text = Champ.Value
End If
' ---
End If
J = J + 1
Next
J = 0
.MoveNext
Loop
End With

ConnectCL.Close

Set Champ = Nothing
Set Rs = Nothing
Set ConnectCL = Nothing
End Sub
_________________________

-3) Pour l'ajout dans une base de données, adapte (bouton Command2) :
Il faut que la base de données soit structurée comme le classeur (ou vise
versa). La base et le classeur peuvent être ouverts ou non.

Sub Ajouter(Classeur As String, _
Base As String, _
NomFeuille As String, _
NomTable As String)

Dim ConnectBD As ADODB.Connection
Dim ConnectCL As ADODB.Connection
Dim RsExcel As ADODB.Recordset
Dim RsAccess As ADODB.Recordset
Dim Tbl() As Integer
Dim Enrg As String
Dim I As Integer, J As Integer, K As Integer

ConnecterBase ConnectBD, _
Base, _
RsAccess
ConnecterCLasseur ConnectCL, _
Classeur, _
RsExcel

'ajout de plusieurs enregistrements
With RsAccess
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM " & NomTable, ConnectBD
End With

With RsExcel
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$`", _
ConnectCL
.MoveFirst
Do While Not .EOF
K = K + 1
RsAccess.AddNew
For I = 0 To .Fields.Count - 1
RsAccess.Fields(I) = .Fields(I)
Next I
'évite l'erreur due aux doublons sur champ index
'(clé primaire)
On Error Resume Next
RsAccess.Update
If Err.Number = -2147217887 Then
J = J + 1
ReDim Preserve Tbl(1 To J)
Tbl(J) = K
End If
.MoveNext
Loop
End With

'si erreur due à un ou plusieurs
'doublons dans le champ index
If J <> 0 Then
For I = 1 To UBound(Tbl)
Enrg = Enrg & Tbl(I) & " "
Next I
MsgBox "Le ou les enregistrements " & _
Enrg & _
"n'ont pus être enregistrés " & _
"car risque de doublons dans " & _
"le champ index (clé primaire) !"
End If

ConnectCL.Close
ConnectBD.Close

Set ConnectCL = Nothing
Set ConnectBD = Nothing
Set RsExcel = Nothing
Set RsAccess = Nothing
End Sub

Private Sub Command2_Click()
Dim Base As String
Dim Classeur As String
Dim NomFeuille As String
Dim NomTable As String

Base = "D:DossierMabase.mdb"
Classeur = "D:DossierMonClasseur.xls"
NomFeuille = "MaFeuille"
NomTable = "MaTable"

Ajouter Classeur, Base, NomFeuille, NomTable

End Sub

Hervé.

"JCM" a écrit dans le message news:

Bonjour Hervé
Merci pour ta réponse et ton code qui règle en partie mon problème,
néanmoins quand je lance l'appli j'ai le problème suivant

Mon MSFlexgrid comporte 15 colonnes et les titres des colonnes 5 à 13 ne
s'affichent pas
pour certaines colonnes j'ai données décimales et je voudrais limité
l'affichage à 2 décimales (comme dans mon classeur Excell)
Peux-tu me donner les réponses

D'autre part je voudrais également après l'affichage des données dans le
MSflexgrid, à partir d'un second bouton, transférer la feuille excell dans
une table Access, as-tu un bout de code pour faire se transfert

Encore merci pour ton aide, car cela fait un mois que je galère sur ce
problème et cela ma met dans la M........

Cordialement
JCM
"Hervé" a écrit dans le message de
news:%
> Salut JCM,
> Essai avec le caractère accentué (` AltGr et 7 du pavé Alphanumérique)


et
le
> dollar $ :
> Call ExecSQLExcell("select * from `" & LafeuilleEX & "$`", ADOrstExcell,
> ADOcnExcel)
>
> Un exemple avec ADO (cocher la référence) :
> Pour tester, un MSFlexGrid et un CommandButton sur une Form en modifiant
le
> chemin du classeur et le nom de la feuille (ça fonctionne que le


classeur
> soit ouvert ou non) :
>
> Sub ConnecterCLasseur(ConnectBD As ADODB.Connection, _
> Fichier As String, _
> Optional Rs)
> Set ConnectBD = New ADODB.Connection
> If Not IsMissing(Rs) Then
> Set Rs = New ADODB.Recordset
> End If
> ConnectBD.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
> "Data Source=" & Fichier & ";" & _
> "Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""
> End Sub
>
> Private Sub Command1_Click()
> Dim Classeur As String
> Dim I As Integer, J As Integer
>
> Classeur = "D:Mon DossierMonClasseur.xls"
> Lire Classeur, "Feuil1"
> End Sub
>
> Sub Lire(Classeur As String, _
> NomFeuille As String)
> 'relation précoce
> Dim ConnectCL As ADODB.Connection
> Dim Rs As ADODB.Recordset
> Dim Champ As ADODB.Field
> Dim I As Integer, J As Integer
>
> 'ouvre la connection au classeur
> ConnecterCLasseur ConnectCL, _
> Classeur, _
> Rs
>
> With Rs
> .CursorType = 1
> .LockType = 3
> .Open "SELECT * FROM `" & NomFeuille & "$`", _
> ConnectCL
> .MoveFirst
> MSFlexGrid1.Rows = .RecordCount
> MSFlexGrid1.Cols = .Fields.Count
> Do While Not .EOF
> MSFlexGrid1.Row = I
> I = I + 1
> For Each Champ In .Fields
> MSFlexGrid1.Col = J
> If I = 1 Then
> MSFlexGrid1.Text = Champ.Name
> Else
> MSFlexGrid1.Text = Champ.Value
> End If
> J = J + 1
> Next
> J = 0
> .MoveNext
> Loop
> End With
>
> ConnectCL.Close
>
> Set Champ = Nothing
> Set Rs = Nothing
> Set ConnectCL = Nothing
> End Sub
>
> Hervé.
>
>
> "JCM" a écrit dans le message news:
>
> > Bonjour voici l'erreur :
> >
> > Je voudrais afficher les données de la feuille d'un classeur Excell
> existant
> > dans un MSFlexgrid et là j'ai un beug : la feuille est introuvable, et
> > pourtant elle existe
> > Par contre si c'est un classeur créé et rempli par l'appli cela
fonctionne
> > Pouvez-vous me dire ou est l'erreur
> > voici mon code :
> >
> > le chemin du classeur est donné par un commandDialog :
> > strFileNameExcel = CmdLgMain.fileName
> >
> > ensuite la feuille est donnée par un affichage dans un combo:
> >
> > Private Sub CboFeuillesEX_Click()
> > 'feuille sélectionnée
> > LafeuilleEX = CboFeuillesEX.Text
> > 'Vérifie que la connexion est bien fermée
> > If ADOcnExcel.state = adStateOpen Then
> > ADOcnExcel.Close
> > End If
> > Set ADOcnExcel = Nothing
> >
> > Call MyFonctions.InitConnectionExcell
> > Call ExecSQLExcell("select * from " & LafeuilleEX, ADOrstExcell,
> ADOcnExcel)
> >
> > 'remplissage de MSExcell
> > laligne = 0
> > Do Until ADOrstExcell.EOF
> > laligne% = laligne + 1
> > MSExcell.FixedAlignment(1) = 4
> > MSExcell.Rows = laligne + 1
> > MSExcell.Row = laligne
> > MSExcell.col = 0
> > MSExcell.Text = ADOrstExcell("ZONE")
> > etc...............
> > ADOrstExcell.MoveNext
> > Loop
> > End Sub
> >
> > Merci pour votre réponse
> > Cordialement
> > JCM
> > "Quasimodo" a écrit dans le message de
> > news:
> > > JCM explained on 12/22/2004 :
> > > > Bonjour Quasimodo
> > > >>
> > > >> lors d'une précédente question vous m'avez demandé :
> > > >> pouvez-vous explicité votre fonction : ExecSQLExcell
> > > >>
> > > >> et j'ai répondu :
> > > >> Ma fonction : ExecSQLExcell
> > > >>
> > > >> Public Function ExecSQLExcell(MySqlExcell As String, ByRef
> ADOrstExcell
> > As
> > > >> ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
> > > >> 'Initialisation du RecordSet
> > > >> If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
> > > >> 'Ouvre une transaction pour ne pas à avoir à réaliser de
> commit
> > en
> > > >> fin de traitement
> > > >> ADOcnExcel.BeginTrans
> > > >> 'Positionne le curseur côté client
> > > >> ADOrstExcell.CursorLocation = adUseClient
> > > >> 'Vérifie que la connexion passée est bonne
> > > >> Set ADOrstExcell.ActiveConnection = ADOcnExcel
> > > >> On Error GoTo ErrHandle
> > > >> 'Exécute la requête
> > > >> ADOrstExcell.Open MySqlExcell, ADOcnExcel
> > > >> 'Valide la transaction
> > > >> ADOcnExcel.CommitTrans
> > > >> ExecSQLExcell = True
> > > >> Exit Function
> > > >> ErrHandle:
> > > >> ExecSQLExcell = False
> > > >> MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr &
> Err.Description,
> > > >> vbCritical
> > > >> End Function
> > > >>
> > > >>
> > > >> ET PLUS DE SUITE .........;
> > > >>
> > > >> Cordialement
> > > >> JCM
> > > >
> > > > soir,
> > > > sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes


de
> > > > revvoir cela pour cette semaine ;-)
> > >
> > > salut,
> > > oooouuuupss sorry.
> > > J'y tape un zoeil maintenant. Pouvez-vous me rappeler l'erreur (le
code
> > > est ici) ok
> > > suite ce-soir ;-)
> > >
> > > @+Quaz
> > >
> > > --
> > > This is an automatic signature of MesNews.
> > > Site : http://mesnews.no-ip.com
> > >
> >
> >
>
>




Avatar
Hervé
Oups,
J'ai oublié une partie de la proc pour la connexion à la base de données :

Private Sub ConnecterBase(ConnectBD As ADODB.Connection, _
Base As String, _
Optional Rs)

Set ConnectBD = New ADODB.Connection
Set Rs = New ADODB.Recordset

With ConnectBD
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = Base
.Open
End With

End Sub

Hervé.

"JCM" a écrit dans le message news:

Bonjour Hervé
Merci pour ta réponse et ton code qui règle en partie mon problème,
néanmoins quand je lance l'appli j'ai le problème suivant

Mon MSFlexgrid comporte 15 colonnes et les titres des colonnes 5 à 13 ne
s'affichent pas
pour certaines colonnes j'ai données décimales et je voudrais limité
l'affichage à 2 décimales (comme dans mon classeur Excell)
Peux-tu me donner les réponses

D'autre part je voudrais également après l'affichage des données dans le
MSflexgrid, à partir d'un second bouton, transférer la feuille excell dans
une table Access, as-tu un bout de code pour faire se transfert

Encore merci pour ton aide, car cela fait un mois que je galère sur ce
problème et cela ma met dans la M........

Cordialement
JCM
"Hervé" a écrit dans le message de
news:%
> Salut JCM,
> Essai avec le caractère accentué (` AltGr et 7 du pavé Alphanumérique)


et
le
> dollar $ :
> Call ExecSQLExcell("select * from `" & LafeuilleEX & "$`", ADOrstExcell,
> ADOcnExcel)
>
> Un exemple avec ADO (cocher la référence) :
> Pour tester, un MSFlexGrid et un CommandButton sur une Form en modifiant
le
> chemin du classeur et le nom de la feuille (ça fonctionne que le


classeur
> soit ouvert ou non) :
>
> Sub ConnecterCLasseur(ConnectBD As ADODB.Connection, _
> Fichier As String, _
> Optional Rs)
> Set ConnectBD = New ADODB.Connection
> If Not IsMissing(Rs) Then
> Set Rs = New ADODB.Recordset
> End If
> ConnectBD.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
> "Data Source=" & Fichier & ";" & _
> "Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""
> End Sub
>
> Private Sub Command1_Click()
> Dim Classeur As String
> Dim I As Integer, J As Integer
>
> Classeur = "D:Mon DossierMonClasseur.xls"
> Lire Classeur, "Feuil1"
> End Sub
>
> Sub Lire(Classeur As String, _
> NomFeuille As String)
> 'relation précoce
> Dim ConnectCL As ADODB.Connection
> Dim Rs As ADODB.Recordset
> Dim Champ As ADODB.Field
> Dim I As Integer, J As Integer
>
> 'ouvre la connection au classeur
> ConnecterCLasseur ConnectCL, _
> Classeur, _
> Rs
>
> With Rs
> .CursorType = 1
> .LockType = 3
> .Open "SELECT * FROM `" & NomFeuille & "$`", _
> ConnectCL
> .MoveFirst
> MSFlexGrid1.Rows = .RecordCount
> MSFlexGrid1.Cols = .Fields.Count
> Do While Not .EOF
> MSFlexGrid1.Row = I
> I = I + 1
> For Each Champ In .Fields
> MSFlexGrid1.Col = J
> If I = 1 Then
> MSFlexGrid1.Text = Champ.Name
> Else
> MSFlexGrid1.Text = Champ.Value
> End If
> J = J + 1
> Next
> J = 0
> .MoveNext
> Loop
> End With
>
> ConnectCL.Close
>
> Set Champ = Nothing
> Set Rs = Nothing
> Set ConnectCL = Nothing
> End Sub
>
> Hervé.
>
>
> "JCM" a écrit dans le message news:
>
> > Bonjour voici l'erreur :
> >
> > Je voudrais afficher les données de la feuille d'un classeur Excell
> existant
> > dans un MSFlexgrid et là j'ai un beug : la feuille est introuvable, et
> > pourtant elle existe
> > Par contre si c'est un classeur créé et rempli par l'appli cela
fonctionne
> > Pouvez-vous me dire ou est l'erreur
> > voici mon code :
> >
> > le chemin du classeur est donné par un commandDialog :
> > strFileNameExcel = CmdLgMain.fileName
> >
> > ensuite la feuille est donnée par un affichage dans un combo:
> >
> > Private Sub CboFeuillesEX_Click()
> > 'feuille sélectionnée
> > LafeuilleEX = CboFeuillesEX.Text
> > 'Vérifie que la connexion est bien fermée
> > If ADOcnExcel.state = adStateOpen Then
> > ADOcnExcel.Close
> > End If
> > Set ADOcnExcel = Nothing
> >
> > Call MyFonctions.InitConnectionExcell
> > Call ExecSQLExcell("select * from " & LafeuilleEX, ADOrstExcell,
> ADOcnExcel)
> >
> > 'remplissage de MSExcell
> > laligne = 0
> > Do Until ADOrstExcell.EOF
> > laligne% = laligne + 1
> > MSExcell.FixedAlignment(1) = 4
> > MSExcell.Rows = laligne + 1
> > MSExcell.Row = laligne
> > MSExcell.col = 0
> > MSExcell.Text = ADOrstExcell("ZONE")
> > etc...............
> > ADOrstExcell.MoveNext
> > Loop
> > End Sub
> >
> > Merci pour votre réponse
> > Cordialement
> > JCM
> > "Quasimodo" a écrit dans le message de
> > news:
> > > JCM explained on 12/22/2004 :
> > > > Bonjour Quasimodo
> > > >>
> > > >> lors d'une précédente question vous m'avez demandé :
> > > >> pouvez-vous explicité votre fonction : ExecSQLExcell
> > > >>
> > > >> et j'ai répondu :
> > > >> Ma fonction : ExecSQLExcell
> > > >>
> > > >> Public Function ExecSQLExcell(MySqlExcell As String, ByRef
> ADOrstExcell
> > As
> > > >> ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
> > > >> 'Initialisation du RecordSet
> > > >> If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
> > > >> 'Ouvre une transaction pour ne pas à avoir à réaliser de
> commit
> > en
> > > >> fin de traitement
> > > >> ADOcnExcel.BeginTrans
> > > >> 'Positionne le curseur côté client
> > > >> ADOrstExcell.CursorLocation = adUseClient
> > > >> 'Vérifie que la connexion passée est bonne
> > > >> Set ADOrstExcell.ActiveConnection = ADOcnExcel
> > > >> On Error GoTo ErrHandle
> > > >> 'Exécute la requête
> > > >> ADOrstExcell.Open MySqlExcell, ADOcnExcel
> > > >> 'Valide la transaction
> > > >> ADOcnExcel.CommitTrans
> > > >> ExecSQLExcell = True
> > > >> Exit Function
> > > >> ErrHandle:
> > > >> ExecSQLExcell = False
> > > >> MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr &
> Err.Description,
> > > >> vbCritical
> > > >> End Function
> > > >>
> > > >>
> > > >> ET PLUS DE SUITE .........;
> > > >>
> > > >> Cordialement
> > > >> JCM
> > > >
> > > > soir,
> > > > sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes


de
> > > > revvoir cela pour cette semaine ;-)
> > >
> > > salut,
> > > oooouuuupss sorry.
> > > J'y tape un zoeil maintenant. Pouvez-vous me rappeler l'erreur (le
code
> > > est ici) ok
> > > suite ce-soir ;-)
> > >
> > > @+Quaz
> > >
> > > --
> > > This is an automatic signature of MesNews.
> > > Site : http://mesnews.no-ip.com
> > >
> >
> >
>
>




Avatar
Quasimodo
Hervé used his keyboard to write :
Oups,
J'ai oublié une partie de la proc pour la connexion à la base de données :

Private Sub ConnecterBase(ConnectBD As ADODB.Connection, _
Base As String, _
Optional Rs)

Set ConnectBD = New ADODB.Connection
Set Rs = New ADODB.Recordset

With ConnectBD
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = Base
.Open
End With

End Sub

Hervé.

"JCM" a écrit dans le message news:

Bonjour Hervé
Merci pour ta réponse et ton code qui règle en partie mon problème,
néanmoins quand je lance l'appli j'ai le problème suivant

Mon MSFlexgrid comporte 15 colonnes et les titres des colonnes 5 à 13 ne
s'affichent pas
pour certaines colonnes j'ai données décimales et je voudrais limité
l'affichage à 2 décimales (comme dans mon classeur Excell)
Peux-tu me donner les réponses

D'autre part je voudrais également après l'affichage des données dans le
MSflexgrid, à partir d'un second bouton, transférer la feuille excell dans
une table Access, as-tu un bout de code pour faire se transfert

Encore merci pour ton aide, car cela fait un mois que je galère sur ce
problème et cela ma met dans la M........

Cordialement
JCM
"Hervé" a écrit dans le message de
news:%
Salut JCM,
Essai avec le caractère accentué (` AltGr et 7 du pavé Alphanumérique) et
le dollar $ :
Call ExecSQLExcell("select * from `" & LafeuilleEX & "$`", ADOrstExcell,
ADOcnExcel)

Un exemple avec ADO (cocher la référence) :
Pour tester, un MSFlexGrid et un CommandButton sur une Form en modifiant le
chemin du classeur et le nom de la feuille (ça fonctionne que le classeur
soit ouvert ou non) :

Sub ConnecterCLasseur(ConnectBD As ADODB.Connection, _
Fichier As String, _
Optional Rs)
Set ConnectBD = New ADODB.Connection
If Not IsMissing(Rs) Then
Set Rs = New ADODB.Recordset
End If
ConnectBD.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";" & _
"Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""
End Sub

Private Sub Command1_Click()
Dim Classeur As String
Dim I As Integer, J As Integer

Classeur = "D:Mon DossierMonClasseur.xls"
Lire Classeur, "Feuil1"
End Sub

Sub Lire(Classeur As String, _
NomFeuille As String)
'relation précoce
Dim ConnectCL As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Champ As ADODB.Field
Dim I As Integer, J As Integer

'ouvre la connection au classeur
ConnecterCLasseur ConnectCL, _
Classeur, _
Rs

With Rs
.CursorType = 1
.LockType = 3
.Open "SELECT * FROM `" & NomFeuille & "$`", _
ConnectCL
.MoveFirst
MSFlexGrid1.Rows = .RecordCount
MSFlexGrid1.Cols = .Fields.Count
Do While Not .EOF
MSFlexGrid1.Row = I
I = I + 1
For Each Champ In .Fields
MSFlexGrid1.Col = J
If I = 1 Then
MSFlexGrid1.Text = Champ.Name
Else
MSFlexGrid1.Text = Champ.Value
End If
J = J + 1
Next
J = 0
.MoveNext
Loop
End With

ConnectCL.Close

Set Champ = Nothing
Set Rs = Nothing
Set ConnectCL = Nothing
End Sub

Hervé.


"JCM" a écrit dans le message news:

Bonjour voici l'erreur :

Je voudrais afficher les données de la feuille d'un classeur Excell
existant dans un MSFlexgrid et là j'ai un beug : la feuille est
introuvable, et pourtant elle existe
Par contre si c'est un classeur créé et rempli par l'appli cela fonctionne
Pouvez-vous me dire ou est l'erreur
voici mon code :

le chemin du classeur est donné par un commandDialog :
strFileNameExcel = CmdLgMain.fileName

ensuite la feuille est donnée par un affichage dans un combo:

Private Sub CboFeuillesEX_Click()
'feuille sélectionnée
LafeuilleEX = CboFeuillesEX.Text
'Vérifie que la connexion est bien fermée
If ADOcnExcel.state = adStateOpen Then
ADOcnExcel.Close
End If
Set ADOcnExcel = Nothing

Call MyFonctions.InitConnectionExcell
Call ExecSQLExcell("select * from " & LafeuilleEX, ADOrstExcell,
ADOcnExcel)

'remplissage de MSExcell
laligne = 0
Do Until ADOrstExcell.EOF
laligne% = laligne + 1
MSExcell.FixedAlignment(1) = 4
MSExcell.Rows = laligne + 1
MSExcell.Row = laligne
MSExcell.col = 0
MSExcell.Text = ADOrstExcell("ZONE")
etc...............
ADOrstExcell.MoveNext
Loop
End Sub

Merci pour votre réponse
Cordialement
JCM
"Quasimodo" a écrit dans le message de
news:
JCM explained on 12/22/2004 :
Bonjour Quasimodo

lors d'une précédente question vous m'avez demandé :
pouvez-vous explicité votre fonction : ExecSQLExcell

et j'ai répondu :
Ma fonction : ExecSQLExcell

Public Function ExecSQLExcell(MySqlExcell As String, ByRef ADOrstExcell
As ADODB.Recordset, ByRef ADOcnExcel As ADODB.Connection) As Boolean
'Initialisation du RecordSet
If ADOrstExcell.state <> adStateClosed Then ADOrstExcell.Close
'Ouvre une transaction pour ne pas à avoir à réaliser de commit
en fin de traitement
ADOcnExcel.BeginTrans
'Positionne le curseur côté client
ADOrstExcell.CursorLocation = adUseClient
'Vérifie que la connexion passée est bonne
Set ADOrstExcell.ActiveConnection = ADOcnExcel
On Error GoTo ErrHandle
'Exécute la requête
ADOrstExcell.Open MySqlExcell, ADOcnExcel
'Valide la transaction
ADOcnExcel.CommitTrans
ExecSQLExcell = True
Exit Function
ErrHandle:
ExecSQLExcell = False
MsgBox "ADOManager.ExecSQL:ErrHandle" & vbCr & vbCr & Err.Description,
vbCritical
End Function


ET PLUS DE SUITE .........;

Cordialement
JCM



soir,
sorry pas eu le temps, mais je ne vous oublie pas. Je vous promes de
revvoir cela pour cette semaine ;-)



salut,
oooouuuupss sorry.
J'y tape un zoeil maintenant. Pouvez-vous me rappeler l'erreur (le code
est ici) ok
suite ce-soir ;-)

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com











soir,
merci, je ne connaissais pas du tout (extended properties= ....).

@+Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com