écrire dans un classeur fermé

  • Initiateur de la discussion Initiateur de la discussion rico99
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

rico99

Guest
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 ? 🙄
 
Dernière modification par un modérateur:
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😀ocuments 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
 
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😀ocuments 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 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
255
  • Question Question
Microsoft 365 Remplissage auto
Réponses
14
Affichages
374
Réponses
4
Affichages
320
Retour