tapageur99
Messages postés19Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention24 février 2009
-
21 févr. 2009 à 16:43
tapageur99
Messages postés19Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention24 février 2009
-
21 févr. 2009 à 21:46
C'est peut être trop simple
En VB6, relié à un classeur Excel. J'extrais des données, je les
modifie, tout va bien.Dans une autre Form, je veux voir apparaître
les résultats. Avec Text1.Text = Rst.GetString, ça va pour les cellules
qui contiennent des données simples. Mais pour
une cellule qui contient le résultat d'une formule, ça ne fonctionne
pas. Text1.Text = Rst(0).Value
ne fonctionne pas non plus.
Il doit sûrement y avoir un moyen, mais comment?
Voici ce que je fais:
Dim Source As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim ADOCommand As ADODB.Command
Dim Fichier As String, Cellule As String, feuille As String
Dim Seul
'Chemin complet du classeur fermé
Fichier = "C:\DossierClient" & FmChoix.NomClient & ".xls"
Set Source = New ADODB.Connection
Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
Cellule = "A84:A84"
feuille = "Décl_C$"
Set ADOCommand = New ADODB.Command
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & feuille & Cellule & "]"
End With
Set Rst = New ADODB.Recordset
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
Set Rst = Source.Execute("[" & feuille & Cellule & "]")
Text1.Text = Rst.GetString
Rst.Close
Set Rst = Nothing
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 21 févr. 2009 à 20:02
Salut
Un RecordSet ne s'utilise pas comme cela.
Après ceci :
Set Rst = New ADODB.Recordset
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
il faut parcourrir le Recordset.
Un RecordSet est une sorte de tableau contenant plusieurs lignes et plusieurs colonnes
With Rst
If .RecordCount > 1 Then
.MoveFirst
Do While Not .EOF
MsgBox .Fields(0).Value ' (*)
.MoveNext
Loop
End If
End With
(*) Pas sûr que les colonnes, Fields, soient numérotées de 0 --> 1 ?
Ta syntaxe Set Rst = Source.Execute doit écraser le précédent Open --> Ligne à virer
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
tapageur99
Messages postés19Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention24 février 2009 21 févr. 2009 à 21:46
Merci beaucoup Jack,
Mais ça ne réussi pas mieux. Dans les deux cas, ça n'affiche que les cellules qui contiennent des nombres insérés directement alors que rien ne s'affiche pour les cellules où les nombres proviennent d'une formule. Même si j'ai ajouté Application.Calculate dans mon code.
Je commence à désespérer, j'ai essayé toutes sortes de méthodes et rien à faire.
Au secours!