Probleme d'écriture avec ADODB

Bonjour,

Je viens vers vous car je rencontre un problème très agassant.

Je souhaite lire et écrire dans un fichier excel fermé. J'utilse donc la méthode ADODB.recordset.

Or elle ne fonctionne pas tout le temps et je ne comprend pas du tout pourquoi.

Voici un exemple du code utilisé si cela peux vous aider.

Lorsque j'ouvre la connexion Rst via cd (SELECT * FROM) et que je souhaite effacer le contenu de ma cellule source avec Rst(0), je vérifie avec un espion le changement de valeur, il passe de "une valeur" à NULL donc tout va bien, j'effectue le Rst.Update pour mise à jour du recordset de destination.

Mais quand j'actualise la connection, le Rst(0) a garder l'ancienne valeur...

Je ne sais pas si je suis assez clair.

Merci pour le temps que vous pourrez m'accorder.

'Activation des outils ADO
    Dim Cn As ADODB.Connection
    Dim cd As ADODB.Command
    Dim Rst As ADODB.Recordset

    Set Cn = New ADODB.Connection
    Set cd = New ADODB.Command
    Set Rst = New ADODB.Recordset

    'connexion au fichier partagé
    fichier = Sheets("données").Cells(2, 2).Value & "\" & Sheets("données").Cells(2, 3).Value
    With Cn
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                            & fichier & ";Extended Properties=""Excel 12.0;HDR=NO;"""
        .Open
    End With

    'mise à jour de la cellule dans le fichier partagé
    cellule = Cells(l, c).Address(0, 0)
    cellule = cellule & ":" & cellule
    cd.ActiveConnection = Cn
    cd.CommandText = "SELECT * FROM [" & f & "$" & cellule & "]"
    Rst.Open cd, , adOpenKeyset, adLockOptimistic
    Rst(0).Value = ""
    Rst.Update
    DoEvents

    'déconnexion du fichier partagé
    Cn.Close

    'Libération des outils ADO
    Set Cn = Nothing
    Set cd = Nothing
    Set Rst = Nothing

Bonjour,

Visiblement tu confonds requête SQL et valeurs du tableau.

* Ta requête SQL de type SELECT effectue une simple lecture de données et place son résultat dans ton tableau Rst.

* Tu peux faire toutes les modif possibles dans ton tableau (qui reste 'virtuel'), il est normal que les données initiales restent intactes (encore une fois SELECT est uniquement une lecture).

Maintenant si tu souhaites faire une modif de données, il suffit de faire une requête SQL de type UPDATE dont la syntaxe est :

UPDATE table SET entête='valeur-de-mise-à-jour' WHERE condition

Pour une nouvelle ligne de donnée ce sera un INSERT

(Et si tu veux du code plus précis, il faudrait indiquer la structure de ton fichier de données)

Pierre

Pourtant la modification s'effectue bien de temps en temps.

Je viens de vérifier, sa fonctionne bien, puis quand sa commence a ne plus marcher sur une feuille sa marche sur une autre. Et si je veux que sa fonctionne sur la feuille précédente je dois redémarrer mon pc...

Je vais essayer avec UPDATE, tu aurais la syntaxe d'une ligne de code stp ?

La structure de mon fichier source est très simple, c'est un fichier Excel avec une feuille nommées base de données.

Merci pour ton aide

Tiens, c'est cado.

Voici un fichier démo pour des INSERT ET UPDATE.

L'idée est d'avoir un Query générique qui sert à tous types de requêtes, et 2 fonctions génériques aussi pour les insert et update (voir module SQL).

Dans le module Démo, 3 procédures :

* une procédure init pour placer le nom du fichier dans une variable (ici c'est le fichier en cours, mais tu peux mettre le chemin et le fichier que tu veux)

* et 2 procédures demo_update et demo_insert écrites à minima pour l'exemple

Le tout est fonctionnel.

Pour des requêtes plus étoffées, nul besoin de modifier le contenu du module SQL, il suffit d'adapter les procédures demo_update et demo_insert à ton besoin.

Et vois comme un update devient simple :

Sub Demo_update()
Dim result As Long

    Init
    result = Update_XL("Feuil1", "Nom='TEST'", "Id=3")
    If result >= 0 Then MsgBox "Ok, c'est bon!" Else MsgBox "C'est la loose"

End Sub

Pierre

Je regarde tout de suite et te tiens au courant, merci pour ton aide

Merci cela me sera très utile

Rechercher des sujets similaires à "probleme ecriture adodb"