yapson2011
Messages postés4Date d'inscriptionlundi 12 septembre 2011StatutMembreDernière intervention25 septembre 2011
-
25 sept. 2011 à 19:53
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
26 sept. 2011 à 00:56
Bonsoir,
Je voudrais modifier le contenu d'un classeur fermé partagé excel 2007 via une connexion adodb. Mais tous les codes que j'ai pu avoir sur le net sont mal exécutés. Je suis nul.
Code:
Sub EcrireDansCelluleClasseurFerme()
'
Dim cn As ADODB.Connection
Dim Cd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim Fichier As String
Fichier = "e:\ClasseurFermé.xlsx"
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
Set Cd = New ADODB.Command
Cd.ActiveConnection = cn
Cd.CommandText = "SELECT * FROM [Liste$H10:H10]" 'ecrit toujours dans la même cellule
Set Rst = New ADODB.Recordset
Rst.Open Cd, , adOpenKeyset, adLockOptimistic
Rst(0).Value = "TAMARIN"
Rst.Update
cn.Close
Set cn = Nothing
Set Cd = Nothing
Set Rst = Nothing
End Sub
Ce code ne marche pas. Quel est le role de Rst et de Rst(0)?
Merci de m'aider
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 26 sept. 2011 à 00:56
Salut
"Ce code ne marche pas"
C'est un peu court comme explication de ton problème.
Rst est un ... RecordSet
Il faut regarder dans l'aide. Être nul n'est pas n'est pas une fatalité.
Un RecordSet est un objet qui contient la liste de tous les champs demandés lors de la requète. Les champs composent les colonnes du RecordSet alors que chaque ligne correspond à chaque série de données (si plusieurs champs)
Avant de vouloir modifier un des champs avec la valeur "TAMARIN", il faut sélectionner quelle ligne doit être modifiée. Voir les méthodes .MoveFirst, .MoveNext ...
Rst(0) voudrait dire que tu as un tableau de RecordSet, ce qui n'est pas vrai, à la ve de la déclaration.
La vraie syntaxe serait
Rst.Fields(0).Value
ou encore
Rst.Fields("NomDuChamp").Value
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)