ThomasFalguieres
Messages postés36Date d'inscriptionmardi 21 février 2012StatutMembreDernière intervention11 juillet 2012
-
2 avril 2012 à 11:31
ThomasFalguieres
Messages postés36Date d'inscriptionmardi 21 février 2012StatutMembreDernière intervention11 juillet 2012
-
3 avril 2012 à 15:16
Bonjour,
Étant en train de développer une application VBA sur Excel 2007, je rencontre un problème lorsque je veux analyser un document Excel (contenant un tableau).
J'utilise la méthode de lecture de fichier Excel fermé: on utilise un objet ADO faisant intermédiaire entre l'application et le fichier Excel considéré comme base de donnée.
En effet je charge dans un recordset le contenu du tableau contenu dans le fichier excel avec le code suivant:
Sub RequeteClasseurFerme_Excel()
Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset
Set Rst = New ADODB.Recordset
Dim Rst1 As ADODB.Recordset
Set Rst1 = New ADODB.Recordset
Dim tableauLTR() As ltrObjectif
'Définit le classeur fermé servant de base de données
Fichier = "P:\ltrsample2.xlsx"
'Nom de la feuille dans le classeur fermé
NomFeuille = "Feuil1"
Set Cn = New ADODB.Connection
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
'-----------------
'On définit la requête ...
'
Rst.CursorType = adOpenKeyset
Rst.CursorLocation = adUseClient
Rst.Open "SELECT * FROM [" & NomFeuille & "$]", Cn, adOpenDynamic, adLockOptimistic
Lorsque j'exécute ce code une première fois, tout se passe bien, à savoir que je lis bien le contenu du recordset.
Maintenant j'apporte des modifications manuelles (je vais dans le fichier excel modifier les informations à la main)au fichier et le sauve. Lorsque j'exécute une nouvelle fois ce code, le contenu de mon recodset correspond au fichier non modifié. En clair: les modifications du fichier ne sont pas prises en compte.
ThomasFalguieres
Messages postés36Date d'inscriptionmardi 21 février 2012StatutMembreDernière intervention11 juillet 2012 3 avril 2012 à 15:16
Bonjour,
Désolé pour le retard.
J'ai finalement réussi à trouver pourquoi je n'avais pas de MAJ du fichier. Je fermais bien la connexion avec "set cn Nothing" mais j'avais oublié de détruire en même temps le recordset en écrivant "Set Rst Nothing". Du coup il restait plein en mémoire lors de la première exécution et me ressortait ce qu'il avait enregistré lors d'une seconde exécution.
Du coup votre idée de vider Cn était la bonne idée mais appliquée sur le recordset
mjpmjp
Messages postés115Date d'inscriptiondimanche 6 avril 2003StatutMembreDernière intervention29 juin 2012 3 avril 2012 à 07:26
bonjour
on dirait une histoire de focus sur le fichier que tu as modifié.
il m'arrive souvent qu'aprés avoir lu un ficher dans un
repertoire je ne puisse plus renomé etc ce repertoire...
cependant aprés m 'etre ocupé d'un autre fichier, le
répertoire en question c'est libéré ??
peut etre fermer ?? par code le fichier avant de l'ouvrir??