écrire dans un classeur fermé

rico99

XLDnaute Nouveau
Bonjour,

Je cherche un moyen d'écrire dans un classeur fermé (et sans l'ouvrir) via une macro, et sans utilisé ADO, ou ODBC, est-ce possible ? :rolleyes:
 
Dernière édition:

noviceAG

XLDnaute Impliqué
Re : écrire dans un classeur fermé

Bonjour rico, le Forum,
Voici ce que j'ai dans des notes (déjà ancienne)

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é, 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 alors, c'est pas simple, mais je propose du "prédigéré" à ceux qui feront une recherche sur ce thème.
' PRODEDURE D'ECRITURE DANS UN CLASSEUR FERME
Sub classeur_ferme()
Dim fichier$, cell As Range
fichier = "C:Documents and SettingsFILTEPMes documentsTOTO.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
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

Bon courage
 

rico99

XLDnaute Nouveau
Re : écrire dans un classeur fermé

Bonjour rico, le Forum,
Voici ce que j'ai dans des notes (déjà ancienne)

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é, 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 alors, c'est pas simple, mais je propose du "prédigéré" à ceux qui feront une recherche sur ce thème.
' PRODEDURE D'ECRITURE DANS UN CLASSEUR FERME
Sub classeur_ferme()
Dim fichier$, cell As Range
fichier = "C:Documents and SettingsFILTEPMes documentsTOTO.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
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

Bon courage

pas trop possible, je veux également protéger et partager le classeur, et puis l'ajout de référence basé sur la version d'office n'est pas possible. mais merci pour ce prompt retour :)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom