Bonjour à tout le forum.
J'ai récupéré sur le forum il y a quelques temps un code permettant d'écrire dans un fichier Excel fermé à partir d'un autre fichier excel. Son auteur voudra bien m'excuser, mais je ne me souviens plus de son nom (Lien supprimé. Le code est le suivant (adapté à mes besoins) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library
Dim a As Integer
a = Selection.Row
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Fichier As String, Cible As String, Feuille As String
Dim i As Byte
Fichier = ThisWorkbook.Path & "\tex.xls"
Feuille = "Sheet1$" 'attention a ne pas oublier le "$"
Set Cn = New ADODB.Connection
Cn.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
"data source=" & Fichier & ";" & _
"extended properties=""Excel 8.0;"""
Cible = "SELECT * FROM [" & Feuille & "];"
Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic
With Rs
'.AddNew
.Fields(15) = 1
.Update
End With
Rs.Close
Cn.Close
'For iCols = 0 To Rs.Fields.Count - 1
' ws.Cells(1, iCols + 1).Value = Rs.Fields(iCols).Name
'Next
'ws.Range(ws.Cells(1, 1), _
'ws.Cells(1, Rs.Fields.Count)).Font.Bold = True
'ws.Range("A2").CopyFromRecordset Rs
'For i = 1 To 5
'Me.Controls("TextBox" & i) = ""
'Next i
End Sub
Mais j'ai un problème de compréhension du code (je pense d'ailleurs que la réponse à ma question se trouve dans le code mais bon...). Dans la boucle 'With RS ....' j'ai inhibé le champ .AddNew car je voudrais pouvoir positionner la valeur que j'envoi dans le fichier fermé (en l'occurrence 1) dans une cellule de mon choix de ce fichier fermé. En agissant sur le champ .Field(15) je peux envoyer ma valeur dans la colonne de mon choix. Par contre, je n'arrive pas à trouver la syntaxe pour agir sur le numéro de la ligne. J'ai essayé .Row , .Rowfield mais cela ne fonctionne pas. En résumé, mon but est de pouvoir écrire dans une cellule de mon choix d'un fichier Excel fermé.
Si quelqu'un à une suggestion, merci d'avance.
J'ai récupéré sur le forum il y a quelques temps un code permettant d'écrire dans un fichier Excel fermé à partir d'un autre fichier excel. Son auteur voudra bien m'excuser, mais je ne me souviens plus de son nom (Lien supprimé. Le code est le suivant (adapté à mes besoins) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library
Dim a As Integer
a = Selection.Row
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Fichier As String, Cible As String, Feuille As String
Dim i As Byte
Fichier = ThisWorkbook.Path & "\tex.xls"
Feuille = "Sheet1$" 'attention a ne pas oublier le "$"
Set Cn = New ADODB.Connection
Cn.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
"data source=" & Fichier & ";" & _
"extended properties=""Excel 8.0;"""
Cible = "SELECT * FROM [" & Feuille & "];"
Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic
With Rs
'.AddNew
.Fields(15) = 1
.Update
End With
Rs.Close
Cn.Close
'For iCols = 0 To Rs.Fields.Count - 1
' ws.Cells(1, iCols + 1).Value = Rs.Fields(iCols).Name
'Next
'ws.Range(ws.Cells(1, 1), _
'ws.Cells(1, Rs.Fields.Count)).Font.Bold = True
'ws.Range("A2").CopyFromRecordset Rs
'For i = 1 To 5
'Me.Controls("TextBox" & i) = ""
'Next i
End Sub
Mais j'ai un problème de compréhension du code (je pense d'ailleurs que la réponse à ma question se trouve dans le code mais bon...). Dans la boucle 'With RS ....' j'ai inhibé le champ .AddNew car je voudrais pouvoir positionner la valeur que j'envoi dans le fichier fermé (en l'occurrence 1) dans une cellule de mon choix de ce fichier fermé. En agissant sur le champ .Field(15) je peux envoyer ma valeur dans la colonne de mon choix. Par contre, je n'arrive pas à trouver la syntaxe pour agir sur le numéro de la ligne. J'ai essayé .Row , .Rowfield mais cela ne fonctionne pas. En résumé, mon but est de pouvoir écrire dans une cellule de mon choix d'un fichier Excel fermé.
Si quelqu'un à une suggestion, merci d'avance.