Pour faciliter les t=E2ches avec nos clients, je fournissais auparavant un =
fichier Excel 2003/2007/2010 qui attaquait directement (sans export pr=E9al=
able de l'appli) via ADO nos progiciels en access, sql etc.
Or, depuis la version d'office 2013, il n'est pas possible ou il ne me semb=
le pas :-), par ado, de consulter des bases d'Access 97 (je sais c'est vieu=
x comme version mais pas le choix pour nos d=E9veloppeurs) : pb de fourniss=
eur.
Si jamais quelqu'un a une astuce de contournement, ou me confirme que je do=
is faire =E0 l'ancienne (export de l'appli source), merci d'avance.
Steph
Le code que j'utilise par d=E9faut :
Dim MaMDB$
Dim oRec As ADODB.Recordset
Dim MaConnexionBase$, MonScript$
Dim MonCHEMINBase$
Dim intColIndex#
Dim DerLig#, derCol#, i#
Dim NomF$
=20
'=3D=3D=3D PARAMETRES
NomF=3D"IMPORT"
MonCHEMINBase =3D [PARAMETRES_REQ!A1]
MaConnexionBase =3D "Driver=3D{Microsoft Access Driver (*.mdb, *.accdb)=
};Dbq=3D" & MonCHEMINBase & ";"
Set oRec =3D New ADODB.Recordset
MonScript =3D [PARAMETRES_REQ!A2]
oRec.Open MonScript, MaConnexionBase
With Sheets(NomF)
Application.GoTo .[A1]
For intColIndex =3D 0 To oRec.Fields.Count - 1
.[A1].Offset(0, intColIndex).Value =3D oRec.Fields(intColInde=
x).Name
Next
.[A2].CopyFromRecordset oRec
Application.GoTo .[A1]
End With
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DanielCo
Bonjour, Je ne sais ce qu'il y a dans ton script mais apparemment le driver : Microsoft.Jet.OLEDB.4.0 fonctionne. (pas sûr que ma base soit une base Access 97 toutefois) Cordialement. Daniel
Bonjour à tous,
Pour faciliter les tâches avec nos clients, je fournissais auparavant un fichier Excel 2003/2007/2010 qui attaquait directement (sans export préalable de l'appli) via ADO nos progiciels en access, sql etc. Or, depuis la version d'office 2013, il n'est pas possible ou il ne me semble pas :-), par ado, de consulter des bases d'Access 97 (je sais c'est vieux comme version mais pas le choix pour nos développeurs) : pb de fournisseur.
Si jamais quelqu'un a une astuce de contournement, ou me confirme que je dois faire à l'ancienne (export de l'appli source), merci d'avance. Steph
Le code que j'utilise par défaut : Dim MaMDB$ Dim oRec As ADODB.Recordset Dim MaConnexionBase$, MonScript$ Dim MonCHEMINBase$ Dim intColIndex# Dim DerLig#, derCol#, i# Dim NomF$
'=== PARAMETRES NomF="IMPORT" MonCHEMINBase = [PARAMETRES_REQ!A1] MaConnexionBase = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" & MonCHEMINBase & ";" Set oRec = New ADODB.Recordset MonScript = [PARAMETRES_REQ!A2] oRec.Open MonScript, MaConnexionBase With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColIndex).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With
Bonjour,
Je ne sais ce qu'il y a dans ton script mais apparemment le driver :
Microsoft.Jet.OLEDB.4.0 fonctionne.
(pas sûr que ma base soit une base Access 97 toutefois)
Cordialement.
Daniel
Bonjour à tous,
Pour faciliter les tâches avec nos clients, je fournissais auparavant un
fichier Excel 2003/2007/2010 qui attaquait directement (sans export préalable
de l'appli) via ADO nos progiciels en access, sql etc. Or, depuis la version
d'office 2013, il n'est pas possible ou il ne me semble pas :-), par ado, de
consulter des bases d'Access 97 (je sais c'est vieux comme version mais pas
le choix pour nos développeurs) : pb de fournisseur.
Si jamais quelqu'un a une astuce de contournement, ou me confirme que je dois
faire à l'ancienne (export de l'appli source), merci d'avance. Steph
Le code que j'utilise par défaut :
Dim MaMDB$
Dim oRec As ADODB.Recordset
Dim MaConnexionBase$, MonScript$
Dim MonCHEMINBase$
Dim intColIndex#
Dim DerLig#, derCol#, i#
Dim NomF$
'=== PARAMETRES
NomF="IMPORT"
MonCHEMINBase = [PARAMETRES_REQ!A1]
MaConnexionBase = "Driver={Microsoft Access Driver (*.mdb,
*.accdb)};Dbq=" & MonCHEMINBase & ";" Set oRec = New ADODB.Recordset
MonScript = [PARAMETRES_REQ!A2]
oRec.Open MonScript, MaConnexionBase
With Sheets(NomF)
Application.GoTo .[A1]
For intColIndex = 0 To oRec.Fields.Count - 1
.[A1].Offset(0, intColIndex).Value =
oRec.Fields(intColIndex).Name Next
.[A2].CopyFromRecordset oRec
Application.GoTo .[A1]
End With
Bonjour, Je ne sais ce qu'il y a dans ton script mais apparemment le driver : Microsoft.Jet.OLEDB.4.0 fonctionne. (pas sûr que ma base soit une base Access 97 toutefois) Cordialement. Daniel
Bonjour à tous,
Pour faciliter les tâches avec nos clients, je fournissais auparavant un fichier Excel 2003/2007/2010 qui attaquait directement (sans export préalable de l'appli) via ADO nos progiciels en access, sql etc. Or, depuis la version d'office 2013, il n'est pas possible ou il ne me semble pas :-), par ado, de consulter des bases d'Access 97 (je sais c'est vieux comme version mais pas le choix pour nos développeurs) : pb de fournisseur.
Si jamais quelqu'un a une astuce de contournement, ou me confirme que je dois faire à l'ancienne (export de l'appli source), merci d'avance. Steph
Le code que j'utilise par défaut : Dim MaMDB$ Dim oRec As ADODB.Recordset Dim MaConnexionBase$, MonScript$ Dim MonCHEMINBase$ Dim intColIndex# Dim DerLig#, derCol#, i# Dim NomF$
'=== PARAMETRES NomF="IMPORT" MonCHEMINBase = [PARAMETRES_REQ!A1] MaConnexionBase = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" & MonCHEMINBase & ";" Set oRec = New ADODB.Recordset MonScript = [PARAMETRES_REQ!A2] oRec.Open MonScript, MaConnexionBase With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColIndex).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With
MichD
Bonjour,
À quel niveau as-tu un problème avec ta procédure avec Access 1997 ? Qu'est-ce bloque? Une ligne de code en particulier?
Sur le site suivant : http://www.carlprothman.net/Default.aspx?tabid tu obtiendras les diverses chaînes de connexion possible pour te connecter à une base de données.
Bonjour,
À quel niveau as-tu un problème avec ta procédure avec Access 1997 ?
Qu'est-ce bloque? Une ligne de code en particulier?
Sur le site suivant :
http://www.carlprothman.net/Default.aspx?tabid
tu obtiendras les diverses chaînes de connexion possible pour te connecter à une base de données.
À quel niveau as-tu un problème avec ta procédure avec Access 1997 ? Qu'est-ce bloque? Une ligne de code en particulier?
Sur le site suivant : http://www.carlprothman.net/Default.aspx?tabid tu obtiendras les diverses chaînes de connexion possible pour te connecter à une base de données.
stefdestroy
Bonjour et merci à tous les 2, j'ai pu faire quelques tests supplémenta ires :-)
Le but étant juste de pouvoir exécuter une requête simple par ADO de sélection avec access 97.
Dans mon Excel 2010 32 bits, les méthodes 1 et 2 suivantes fonctionnent, la troisième non ("impossible de démarrer votre application. Le fichier d'informations du groupe de traail est absent ou ouvert en mode exclusif p ar un autre utilisateur"). Je passe juste le chemin de ma base et un script en select.
Dans mon Excel 2013 64 bits, j'ai une erreur pour les trois méthodes, sur le "oRec.Open" (messages en deçà). J'ai fait le test sur plusieurs r éférences ADO sans succès. méthode 1 : "Source de données introuvable et nom de pilote non spéci fié" méthode 2 : "Impossible d'ouvrir une base de données créée avec une version antérieure de votre application".
Je vais faire quand même les mêmes tests sur un Excel 32 bits pour voir ce que cela me donne. Depuis le temps que je râle en interne quand je vo is que nous avons encore du Access 97 ...
Merci de m'avoir lu Steph
'== METHODE 1 Dim oOleDbConnection As OLEDBConnection Dim oRec As ADODB.Recordset Dim sConnString As String ' MonCHEMINBase = [PARAMETRES_REQ!A1] User = "ADMIN" Pwd = "TOTO" NomF = "TEST1" sConnString = "Provider=MSDASQL;" & _ "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=" & MonCHEMINBase & ";" & _ "Uid=" & User & ";" & _ "Pwd=" & Pwd MonScript = [PARAMETRES_REQ!A2] ' Set oRec = New ADODB.Recordset oRec.Open MonScript, sConnString ' On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0 Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With oRec.Close
'== METHODE 2 Dim oRec As ADODB.Recordset Dim sConnString As String ' MonCHEMINBase = [PARAMETRES_REQ!A1] NomF = "TEST2" sConnString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Db q=" & MonCHEMINBase & ";" MonScript = [PARAMETRES_REQ!A2] ' Set oRec = New ADODB.Recordset oRec.Open MonScript, sConnString ' On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0 Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With oRec.Close
'== METHODE 3 Dim oRec As ADODB.Recordset Dim sConnString As String ' MonCHEMINBase = [PARAMETRES_REQ!A1] NomF = "TEST3" User = "ADMIN" Pwd = "TOTO" 'sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""" & MonCHEMINBase & """;Mode=Share Exclusive;User ID=""" & User & """;Pas sword=""" & Pwd & """" sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & M onCHEMINBase & ";User ID=" & User & ";Password=" & Pwd & ";" MonScript = [PARAMETRES_REQ!A2] ' Set oRec = New ADODB.Recordset oRec.Open MonScript, sConnString ' On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0 Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With oRec.Close
Bonjour et merci à tous les 2, j'ai pu faire quelques tests supplémenta ires :-)
Le but étant juste de pouvoir exécuter une requête simple par ADO de sélection avec access 97.
Dans mon Excel 2010 32 bits, les méthodes 1 et 2 suivantes fonctionnent, la troisième non ("impossible de démarrer votre application. Le fichier d'informations du groupe de traail est absent ou ouvert en mode exclusif p ar un autre utilisateur"). Je passe juste le chemin de ma base et un script en select.
Dans mon Excel 2013 64 bits, j'ai une erreur pour les trois méthodes, sur le "oRec.Open" (messages en deçà). J'ai fait le test sur plusieurs r éférences ADO sans succès.
méthode 1 : "Source de données introuvable et nom de pilote non spéci fié"
méthode 2 : "Impossible d'ouvrir une base de données créée avec une version antérieure de votre application".
Je vais faire quand même les mêmes tests sur un Excel 32 bits pour voir ce que cela me donne. Depuis le temps que je râle en interne quand je vo is que nous avons encore du Access 97 ...
Merci de m'avoir lu
Steph
'== METHODE 1
Dim oOleDbConnection As OLEDBConnection
Dim oRec As ADODB.Recordset
Dim sConnString As String
'
MonCHEMINBase = [PARAMETRES_REQ!A1]
User = "ADMIN"
Pwd = "TOTO"
NomF = "TEST1"
sConnString = "Provider=MSDASQL;" & _
"Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=" & MonCHEMINBase & ";" & _
"Uid=" & User & ";" & _
"Pwd=" & Pwd
MonScript = [PARAMETRES_REQ!A2]
'
Set oRec = New ADODB.Recordset
oRec.Open MonScript, sConnString
'
On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0
Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF
With Sheets(NomF)
Application.GoTo .[A1]
For intColIndex = 0 To oRec.Fields.Count - 1
.[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name
Next
.[A2].CopyFromRecordset oRec
Application.GoTo .[A1]
End With
oRec.Close
'== METHODE 2
Dim oRec As ADODB.Recordset
Dim sConnString As String
'
MonCHEMINBase = [PARAMETRES_REQ!A1]
NomF = "TEST2"
sConnString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Db q=" & MonCHEMINBase & ";"
MonScript = [PARAMETRES_REQ!A2]
'
Set oRec = New ADODB.Recordset
oRec.Open MonScript, sConnString
'
On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0
Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF
With Sheets(NomF)
Application.GoTo .[A1]
For intColIndex = 0 To oRec.Fields.Count - 1
.[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name
Next
.[A2].CopyFromRecordset oRec
Application.GoTo .[A1]
End With
oRec.Close
'== METHODE 3
Dim oRec As ADODB.Recordset
Dim sConnString As String
'
MonCHEMINBase = [PARAMETRES_REQ!A1]
NomF = "TEST3"
User = "ADMIN"
Pwd = "TOTO"
'sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""" & MonCHEMINBase & """;Mode=Share Exclusive;User ID=""" & User & """;Pas sword=""" & Pwd & """"
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & M onCHEMINBase & ";User ID=" & User & ";Password=" & Pwd & ";"
MonScript = [PARAMETRES_REQ!A2]
'
Set oRec = New ADODB.Recordset
oRec.Open MonScript, sConnString
'
On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0
Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF
With Sheets(NomF)
Application.GoTo .[A1]
For intColIndex = 0 To oRec.Fields.Count - 1
.[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name
Next
.[A2].CopyFromRecordset oRec
Application.GoTo .[A1]
End With
oRec.Close
Bonjour et merci à tous les 2, j'ai pu faire quelques tests supplémenta ires :-)
Le but étant juste de pouvoir exécuter une requête simple par ADO de sélection avec access 97.
Dans mon Excel 2010 32 bits, les méthodes 1 et 2 suivantes fonctionnent, la troisième non ("impossible de démarrer votre application. Le fichier d'informations du groupe de traail est absent ou ouvert en mode exclusif p ar un autre utilisateur"). Je passe juste le chemin de ma base et un script en select.
Dans mon Excel 2013 64 bits, j'ai une erreur pour les trois méthodes, sur le "oRec.Open" (messages en deçà). J'ai fait le test sur plusieurs r éférences ADO sans succès. méthode 1 : "Source de données introuvable et nom de pilote non spéci fié" méthode 2 : "Impossible d'ouvrir une base de données créée avec une version antérieure de votre application".
Je vais faire quand même les mêmes tests sur un Excel 32 bits pour voir ce que cela me donne. Depuis le temps que je râle en interne quand je vo is que nous avons encore du Access 97 ...
Merci de m'avoir lu Steph
'== METHODE 1 Dim oOleDbConnection As OLEDBConnection Dim oRec As ADODB.Recordset Dim sConnString As String ' MonCHEMINBase = [PARAMETRES_REQ!A1] User = "ADMIN" Pwd = "TOTO" NomF = "TEST1" sConnString = "Provider=MSDASQL;" & _ "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=" & MonCHEMINBase & ";" & _ "Uid=" & User & ";" & _ "Pwd=" & Pwd MonScript = [PARAMETRES_REQ!A2] ' Set oRec = New ADODB.Recordset oRec.Open MonScript, sConnString ' On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0 Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With oRec.Close
'== METHODE 2 Dim oRec As ADODB.Recordset Dim sConnString As String ' MonCHEMINBase = [PARAMETRES_REQ!A1] NomF = "TEST2" sConnString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Db q=" & MonCHEMINBase & ";" MonScript = [PARAMETRES_REQ!A2] ' Set oRec = New ADODB.Recordset oRec.Open MonScript, sConnString ' On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0 Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With oRec.Close
'== METHODE 3 Dim oRec As ADODB.Recordset Dim sConnString As String ' MonCHEMINBase = [PARAMETRES_REQ!A1] NomF = "TEST3" User = "ADMIN" Pwd = "TOTO" 'sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""" & MonCHEMINBase & """;Mode=Share Exclusive;User ID=""" & User & """;Pas sword=""" & Pwd & """" sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & M onCHEMINBase & ";User ID=" & User & ";Password=" & Pwd & ";" MonScript = [PARAMETRES_REQ!A2] ' Set oRec = New ADODB.Recordset oRec.Open MonScript, sConnString ' On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0 Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With oRec.Close
stefdestroy
Bonjour,
Tests effectués ce jour avec Excel 2013 32 bits : méthode 2 OK et la m éthode 4 en deçà OK (itou en 2010). J'ai donc assez de possibilités , pour l'instant, pour assurer la pérennité du truc :-)
Après quelques recherches, j'ai lu qu'il fallait éviter, dans certains cas, les versions 64 bits.
Bonne journée à tous Steph
'== METHODE 4 Dim oRec As ADODB.Recordset Dim sConnString As String ' MonCHEMINBase = [PARAMETRES_REQ!A1] NomF = "TEST4" User = "ADMIN" Pwd = "TOTO" sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & MonCHEMINBase & ";Jet OLEDB:Database Password=TOTO;" MonScript = [PARAMETRES_REQ!A2] ' Set oRec = New ADODB.Recordset oRec.Open MonScript, sConnString ' On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0 Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With oRec.Close
Bonjour,
Tests effectués ce jour avec Excel 2013 32 bits : méthode 2 OK et la m éthode 4 en deçà OK (itou en 2010). J'ai donc assez de possibilités , pour l'instant, pour assurer la pérennité du truc :-)
Après quelques recherches, j'ai lu qu'il fallait éviter, dans certains cas, les versions 64 bits.
Bonne journée à tous
Steph
'== METHODE 4
Dim oRec As ADODB.Recordset
Dim sConnString As String
'
MonCHEMINBase = [PARAMETRES_REQ!A1]
NomF = "TEST4"
User = "ADMIN"
Pwd = "TOTO"
sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & MonCHEMINBase & ";Jet OLEDB:Database Password=TOTO;"
MonScript = [PARAMETRES_REQ!A2]
'
Set oRec = New ADODB.Recordset
oRec.Open MonScript, sConnString
'
On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0
Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF
With Sheets(NomF)
Application.GoTo .[A1]
For intColIndex = 0 To oRec.Fields.Count - 1
.[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name
Next
.[A2].CopyFromRecordset oRec
Application.GoTo .[A1]
End With
oRec.Close
Tests effectués ce jour avec Excel 2013 32 bits : méthode 2 OK et la m éthode 4 en deçà OK (itou en 2010). J'ai donc assez de possibilités , pour l'instant, pour assurer la pérennité du truc :-)
Après quelques recherches, j'ai lu qu'il fallait éviter, dans certains cas, les versions 64 bits.
Bonne journée à tous Steph
'== METHODE 4 Dim oRec As ADODB.Recordset Dim sConnString As String ' MonCHEMINBase = [PARAMETRES_REQ!A1] NomF = "TEST4" User = "ADMIN" Pwd = "TOTO" sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & MonCHEMINBase & ";Jet OLEDB:Database Password=TOTO;" MonScript = [PARAMETRES_REQ!A2] ' Set oRec = New ADODB.Recordset oRec.Open MonScript, sConnString ' On Error Resume Next: Sheets(NomF).Delete: On Error GoTo 0 Sheets.Add(after:=Sheets(Sheets.Count)).Name = NomF With Sheets(NomF) Application.GoTo .[A1] For intColIndex = 0 To oRec.Fields.Count - 1 .[A1].Offset(0, intColIndex).Value = oRec.Fields(intColInde x).Name Next .[A2].CopyFromRecordset oRec Application.GoTo .[A1] End With oRec.Close