Ecrire dans un fichier fermé format xlsm

Bonjour après plusieurs heures de recherche et d'essais j'en appelle à votre bien vaillance

L'objectif:

1) Ecrire depuis un fichier ouvert xlsm vers un autre fichier xlsm ( pour pouvoir écrire sur une feuille invisible)

2) Ecrire depuis une feuille(listes) qui est invisible sur une autre feuille invisible(toto).

J'ai utilisé la méthode ADO qui fonctionne sur un fichier xls (test.xls) mais pas sur un fichier xlsm (essai.xlsm)

Est ce possible ?

Sub exportDonneeDansCelluleClasseurFerme()
    Dim Cn As ADODB.Connection
    Dim Cd As ADODB.Command
    Dim Rst As ADODB.Recordset
    Dim Fichier As String

    'Fichier = "F:\adotest\essai.xlsm"
    Fichier = "F:\adotest\test.xls"

    Set Cn = New ADODB.Connection

    ''-------------------------------------------------------------
    '' fonctionne avec fichier xls mais avec xslm message : la table externe n est pas dans le format attendu
    ''-------------------------------------------------------------
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Fichier & ";" & _
        "Extended Properties=""Excel 8.0;HDR=No;"";"
       ' '-------------------------------------------------------------

            ''-------------------------------------------------------------
    '' fonctionne pas pilote isam introuvable !
    ''-------------------------------------------------------------

    'Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
   ' "ConnectionString =Provider=Microsoft.ACE.OLEDB.12.0;" & _
       ' "Data Source=" & Fichier & ";" & _
       ' "Extended Properties=""Excel 12.0;HDR=YES;"";"

    Set Cd = New ADODB.Command
    Cd.ActiveConnection = Cn
    Cd.CommandText = "SELECT * FROM [toto$G30:G30]"

    Set Rst = New ADODB.Recordset
    Rst.Open Cd, , adOpenKeyset, adLockOptimistic
    'Rst(0).Value = "Donnée test"

    Rst(0).Value = Worksheets("listes").Range("T15").Value

    Rst.Update
    Cn.Close
    Set Cn = Nothing
    Set Cd = Nothing
    Set Rst = Nothing
End Sub

En vous remerciant par avance...Bonne journée !

Bonjour Xls-padawan-Vba le forum

pourquoi veux tu absolument écrire dans un classeur fermé, une raison particulière???

Car ouvrir un fichier, écrire et refermer est invisible à l'oeil nu

a+

Papou

bonjour

judicieuse remarque de paritec

note qu'il peut y avoir des cas où on veut modifier un fichier fermé et l'envoyer par mail sans l'ouvrir

est-ce le cas ?

si oui, je déconseille

dans tous les cas, ne pas utiliser VBA, source de soucis sans fin.

amitiés

Bonjour Xls-padawan-Vba le forum

pourquoi veux tu absolument écrire dans un classeur fermé, une raison particulière???

Car ouvrir un fichier, écrire et refermer est invisible à l'oeil nu

a+

Papou

Bonjour, je s'avais pas que l'on pouvez le faire ... je vais chercher voir.

Si tu as un lien n’hésites pas ...parce que j'ai cherché ce sont les solutions ADO qui sont sortis en masse sur google.

Merci, je laisse le sujet encore un peu ouvert au cas où un petit génie du ADO passe par là

re

en fait ce que voulait dire paritec (il me corrigera si je me trompe ) c'est que :

il est inutile d'écrire dans un fichier fermé, car tant qu'il reste fermé personne ne le lit

avec de simples liens, quand on ouvre le fichier, on le voit à jour

note : si besoin, il y a des méthodes plus puissantes que les liens (ou les "=" ) pour reporter des données d'un fichier à un autre. Par exemple le menu Données / Obtenir.

mais ça ne change rien à l'inutilité d'écrire dans un fichier fermé.

amitiés

Bonjour à tous,

Personnellement c'est une méthode que j'utilise dans beaucoup d'occasions.

Voici une démo simplette des 3 besoins de base pour lire et écrire dans un fichier fermé : INSERT, UPDATE et SELECT

Ces opérations se font à partir du fichier Demo_ADODB.xlsm vers le fichier Data.xlsm (qui reste fermé)

A noter, le module SQL peut être réutilisé tel quel dans n'importe quelle appli.

Pierre

102demo-adodb.zip (36.71 Ko)

Bonjour merci pierre je regarde ça de ce pas !!!.

J'ai trouvé une solution comme paritec me l'avais dit mais j'aime bien toucher un peu à tout

Je reviendrai pour éventuellement clôturer.

Merci.

Rechercher des sujets similaires à "ecrire fichier ferme format xlsm"