Pb ADODEMO

F

Francis

Guest
Bonjour le forum,

J'ai récupérer le code de l'écriture d'une valeur ds un classeur fermé, mais j'ai une erreur dans la 1ère déclaration des variables:

Dim source As ADODB.Connection
Dim externe As ADODB.Recordset
Dim valeur As Variant
Dim fichier As String, nom_plage As String, texte_SQL As String
.

Type défini par l'utilisateur non défini.

Pourquoi?

merci de m'éclairer.

Francis
 

MichelXld

XLDnaute Barbatruc
bonjour Francis

quand tu créées ton nouveau classeur , il faut aussi activer la reference

Microsoft ActiveX Data Objects x.x Library
xx.x depend de ta version installée

dans l'editeur de macros
Menu Outils
References
coches la ligne Microsoft ActiveX Data Objects x.x Library
cliques sur OK pour valider


bonne soiree
MichelXld
 
F

Francis

Guest
Bonjour MichelXld, le forum,

Cela m'a décoincé quelque lignes, mais maintenant c'est ici que ça coince:

fichier = 'C:\\A&R\\' & 'cible.xls'
Set source = New ADODB.Connection
source.Open 'Provider = Microsoft.Jet.OLEDB.4.0;' & _
'data source=' & fichier & ';' & _
'extended properties=''Excel 8.0;'''

nom_plage = 'ecrit'
' requete SQL de la cellule de destination; 'nom_plage' est une 'vraie-fausse base _
de données': une étiquette,une ligne
texte_SQL = 'SELECT * FROM [' & nom_plage & '];'
Set externe = New Recordset
externe.Open texte_SQL, source, adOpenKeyset, adLockOptimistic
'externe.MoveFirst
externe.Fields(0) = valeur
externe.Update

il me met Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a curent record. ie???

merci pour ton aide Michel.

Francis
 

michel_m

XLDnaute Accro
Bonjour Michel, Francis

La macro fonctionne avec ma démo que tu as récupéré .

Dans le classeur cible que tu as créé ( sur la démo, son nom est ferme_ado), 'ecrit' est une zone NOMMEE d'une colonne, 2 lignes, la première ligne portant une étiquette.

Pour mémoire:

Option Explicit
' Etudié d'après exemples tirés des forums mpep et mpfe trouvés sur le site de Frédéric Sigonneau: www.perso.wanadoo.fr/frederic.sigonneau
' réalisé sous Office 2000
' Michel_M, modifié en septembre 04

Function FichOuvert(F As String) As Boolean
'Auteur: Didier_mdf sur forum www.Excel-downloads.com (merci)
Dim Wk As Workbook
On Error Resume Next
Set Wk = Workbooks(F) '(Merci à Ti pour cette astuce)
On Error GoTo 0
FichOuvert = Not Wk Is Nothing
End Function



Sub ecrire_cellule_dans_fermé()
'écrit la valeur de 'G2' dans classeur fermé

Dim source As ADODB.Connection
Dim externe As ADODB.Recordset
Dim valeur As Variant
Dim fichier As String, nom_plage As String, texte_SQL As String

'teste si le classeur source est fermé
If FichOuvert('fermé_ado.xls') = True Then
MsgBox 'Pour que l'opération demandée soit effectuée,' & vbCr & _
'Le classeur ''fermé_ado.xls'' doit être fermé. ', vbCritical
Exit Sub
End If

' affecte la valeur à écrire dans fermé.xls
valeur = Range('G2').Value

' ouvre la database 'source' dans le classeur excel fermé
fichier = ActiveWorkbook.Path & '\\fermé_ado.xls'
Set source = New ADODB.Connection
source.Open 'Provider = Microsoft.Jet.OLEDB.4.0;' & _
'data source=' & fichier & ';' & _
'extended properties=''Excel 8.0;'''

nom_plage = 'ecrit'
' requete SQL de la cellule de destination; 'nom_plage' est une 'vraie-fausse base _
de données': une étiquette,une ligne
texte_SQL = 'SELECT * FROM [' & nom_plage & '];'
Set externe = New Recordset
externe.Open texte_SQL, source, adOpenKeyset, adLockOptimistic
'externe.MoveFirst
externe.Fields(0) = valeur
externe.Update


externe.Close
source.Close

MsgBox 'opération terminée'
End Sub

A+
Michel
 
F

Francis

Guest
Bonjour michel_m,le forum,

Effectivement ferme_ado fonctionne bien, peut etre que mon pb vient du fait que dans mon classeur, \\'ecrit'\\ est une zone NOMMEE d'une colonne, 1 ligne, donc pas d'etiquette. Comment changer cete définition?
Merci michel et bonne fin de journée.

Francis
 
F

Francis

Guest
Bonjour michel, le forum,

Désolé mais je ne suis pas très féru avec ADO et je ne comprend pas trop ce que tu as voulu me dire,pourais tu m'expliquer un peu plus.
Merci pour ton interet à mon pb.
Francis
 
F

Francis

Guest
Re bonjour michel, le forum,

Je n'étais pas bien réveillé tout à l'heure et je n'avais pas vu que :
'extended properties=''Excel 8.0;HDR=No;'';'
était une ligne de code existante mais incomplète.
Merci encore pour l'info et bonne journée
Francis
 

Discussions similaires

Réponses
16
Affichages
1 K

Statistiques des forums

Discussions
312 334
Messages
2 087 381
Membres
103 530
dernier inscrit
dieubrice