Ecrire dans un classeur fermé

Philippe

XLDnaute Occasionnel
Bonjour à tous,

je sais que la question a déjà été abordée, mais une recherche rapide dans les archives n'a rien donné et je manque cruellement de temps aujourd'hui :S

QQun peut-il me rappeler comment écrire dans un classeur depuis un autre en VBA SANS OUVRIR LE 1er classeur

Merci d'avance
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Philippe, le Forum

Dans le Fil 'Spy' où tu étais présent hier soir mon copain Michel_M a posté une Démo ADO, qui est aussi ta solution pour écrire dans un classeur fermé, mais je pense que tu n'as pas eu le temps de la regarder.

Bon Aprèm
@+Thierry
 

Philippe

XLDnaute Occasionnel
Bonjour Thierry et merci de m'avoir répondu,

en fait j'ai bien regardé la solution de Michel et c'est justement parceque je n'ai pas compris comment il écrivait dans le classeur en le laissant fermé que j'ai posé cette question...
(dans ma solution, le classeur 'TOTO' s'ouvrait (ce qui n'est pas souhaitable dans ce cas...))
Bon bah je vais réétudier tout ça.... Celà dit, si quelqu'un peut
m'aiguiller...
 
M

michel_m

Guest
Salut Philippe et Thierry

Pour que cela puisse fonctionner:
as tu coché dans outils | références de VBE la bibliothèque microsoft activeX data object 2.x library ?

'x' dépend des versions utilisées (x=1 pour xl 2000)

Le pb dans la solution proposée au 'très discret' djaro est qu'on ne peut pas protéger le classeur 'toto' ou il faudrait indiquer le pwd dans la connection et protéger la macro

tu trouveras l'aide sur ADO dans l'aide ....Access; à consulter également les démos de notre MichelXLD national sur ce forum qui te guideront

Bonne découverte

Michel (at work)
 

Philippe

XLDnaute Occasionnel
Salut à tous,

alors, c'est pas simple, mais je propose du 'prédigéré' à ceux qui feront une recherche sur ce thème.
Ce qui suit n'est pas le fruit du travail de mes neurones (je ne suis pas encore au niveau) mais de mes recherches sur GOOGLE, merci à tous pour votre aide...

' PRODEDURE D'ECRITURE DANS UN CLASSEUR FERME


Sub classeur_ferme()
Dim fichier$, cell As Range
fichier = 'C:\\Documents and Settings\\FILTEP\\Mes documents\\TOTO.xls'
SetExternalDatas fichier, 'Feuil1', 'h18', ICI CE QUE TU VEUX ECRIRE (tecte brut entre guillemets, sinon Range A.... blabla...End Sub





' A ACCEPTER TOUT DIGERE POUR LE MOMENT (sauf pour les pros)

Sub SetExternalDatas(DestFile As String, _
DestFeuille As String, _
DestCellAdr As String, _
DataToWrite As Variant)
Dim oConn 'As ADODB.Connection
Dim oCmd 'As ADODB.Command
Dim oRS 'As ADODB.Recordset
Dim RangeDest
'd'après Rob Bovey, mpep
' Open a connection to the Excel spreadsheet
Set oConn = CreateObject('ADODB.Connection') 'New ADODB.Connection
oConn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
'Data Source=' & DestFile & ';' & _
'Extended Properties=''Excel 8.0;HDR=No;'';'
' Create a command object and set its ActiveConnection
Set oCmd = CreateObject('ADODB.Command') 'New ADODB.Command
oCmd.ActiveConnection = oConn
' This SQL statement selects a cell range in the 'feuilleTest' worksheet.
'1 Sélection pour écrire dans une seule cellule
RangeDest = DestCellAdr & ':' & DestCellAdr
oCmd.CommandText = 'SELECT * from `' & DestFeuille & '$' & RangeDest & '`'
' Open a recordset containing the worksheet data.
Set oRS = CreateObject('ADODB.Recordset') 'New ADODB.Recordset
oRS.Open oCmd, , 1, 3 'adOpenKeyset, adLockOptimistic
' met a jour la dernière ligne
oRS(0).Value = DataToWrite
oRS.Update
'ferme la connection
oConn.Close
Set oConn = Nothing
Set oCmd = Nothing
Set oRS = Nothing
End Sub

Serviteur....
 

MichelXld

XLDnaute Barbatruc
bonjour Philippe , @+Thierry et Michel_M


Philippe , tu devrais suivre les conseils de Michel et activer la bibliothèque microsoft activeX data object 2.x library

dans l'editeur de macros
Outils
References
coches la ligne 'microsoft activeX data object 2.x library'
ensuite Cliques sur OK pour Valider

ce qui te permettrait d'écrire sans les apostrophes ...;o)...

Dim oConn As ADODB.Connection
Dim oCmd As ADODB.Command
Dim oRS As ADODB.Recordset

cela te simplifiera le travail pour l'utilisation de ce genre de procédures , et pourra aussi etre une aide précieuse grace à la saisie semi automatique d'Excel



bonne journée
MichelXld
 

Discussions similaires

Réponses
2
Affichages
236
Réponses
19
Affichages
721

Membres actuellement en ligne

Statistiques des forums

Discussions
313 020
Messages
2 094 433
Membres
106 024
dernier inscrit
Imado