Pb MAJ fichier Excel en mode lecture fichier fermé [Résolu]

Messages postés
36
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
11 juillet 2012
- - Dernière réponse : ThomasFalguieres
Messages postés
36
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
11 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.

une idée d'où cela pourrait provenir ?

Je vous remercie d'avance

Thomas
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
36
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
11 juillet 2012
3
Merci
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

Merci beaucoup de m'avoir aidé

Thomas

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ThomasFalguieres
Messages postés
115
Date d'inscription
dimanche 6 avril 2003
Statut
Membre
Dernière intervention
29 juin 2012
0
Merci
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??

@+JP
Commenter la réponse de mjpmjp
Messages postés
115
Date d'inscription
dimanche 6 avril 2003
Statut
Membre
Dernière intervention
29 juin 2012
0
Merci
bonjour
encor moi

Set Cn = New ADODB.Connection


est ce que Cn pourait etre en cause? vider l'Objet Cn ?
ou autre Objet ?
@+JP
Commenter la réponse de mjpmjp