Traitement error '3021'

Résolu/Fermé
momouiz Messages postés 30 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 - 18 juil. 2013 à 12:20
momouiz Messages postés 30 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 - 19 juil. 2013 à 12:25
salut tout le monde alors voila dans l'idée je voudrais transposer des données de mon classeur actif dans un tableau qui est dans un classeur fermé pour cela j'utilise le code suivant :
fichier = "C:\Documents and Settings\mslimani060313\Desktop\Tests\Radar spider graph de risque.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 [Spider Graph $F43:F43]"

Set Rst = New ADODB.Recordset

Rst.Open Cd, , adOpenKeyset, adLockOptimistic
If Rst.EOF Then
Rst.MoveLast
Rst(0).Value = "avec bdd tout est possible"
Else
MsgBox "no matching data"
End If
Rst.Update
Cn.Close

Set Cn = Nothing
Set Cd = Nothing
Set Rst = Nothing


seulement d'aprés mon code il n'y a aucun enregistrement, comment puis-je résoudre ce probléme ? svp

6 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
19 juil. 2013 à 11:20
Re,

Pour ADODB, je mets ceci:

'Microsoft ActiveX Data Objects x.x Library
'Microsoft ActiveX Data Objects RecordSet x.x Library
1
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
19 juil. 2013 à 09:40
Bonjour,

ligne: .Provider = "Microsoft.Jet.OLEDB.4.0" ne sert a rien---->a enlever

ligne: .Movelast a enlever

Dans votre cas, vous ne pouvez pas tester eof, cela n'est pas tout a fait comme en access.
Vous devez tester le recordset, ici: Rst(0)<>"" a la place de Rst.EOF
La ligne: Rst.Update a mettre dessous la ligne Rst(0).Value = "avec bdd tout est possible"

A+
0
momouiz Messages postés 30 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 3
19 juil. 2013 à 10:46
bonjour f894009, et d'abord merci pour ta réponse, j'ai essayer ce que tu as dis en testant comme ceci : if Rst(0) <> "" then
Rst(0) .value = "blablablab"
Rst.update
end if
cela ne fonctionne pas même en mettant la condition aprés la ligne Rst(0).value ) "blablabalb"
En fait ce que j'essaye de faire c'est de copier un tableau d'un classeur ouvert vers un classeur fermé qui traitera les données et me sortira un graphe.

meric de ton aide !
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
19 juil. 2013 à 11:01
Re,

ce code, avec un fichier a moi, marche:

Sub test()
    Dim Cn As ADODB.Connection
    Dim Cd As ADODB.Command
    Dim Rst As ADODB.Recordset
    
    
    Fichier = "D:\_Docs_Prog_Excel\ADODB_excel\fichier_test.xlsx"
    
    Set Cn = New ADODB.Connection
    Set Cd = New ADODB.Command
    Set Rst = New ADODB.Recordset
    
    With Cn
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                            & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With

    Cd.ActiveConnection = Cn
    Cd.CommandText = " SELECT * FROM [Fichier1$A2:D43]"

    Rst.Open Cd, , adOpenKeyset, adLockOptimistic
    
    If Rst(0) <> "" Then
        Range("A2").CopyFromRecordset Rst
    Else
        MsgBox "no matching data"
    End If
    Cn.Close

    Set Cn = Nothing
    Set Cd = Nothing
    Set Rst = Nothing
End Sub


Adaptez a votre cas et essayez

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
momouiz Messages postés 30 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 3
19 juil. 2013 à 11:10
est ce qu'il faut un fichier special XL ?, car je vien d'adapter mon code mais Rst(0) me renvoi toujours "", je ne comprends pas pourquoi .
Je pense qu'il doit y avoir une ref que je n'ai pas encore activé
0
momouiz Messages postés 30 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 3
19 juil. 2013 à 12:25
Merci à toi f894009, je suis complétement idiot, j'utilise les recordset x.x Library, mais j'avais oublié au préalable d'activer la référence, ça marche en effet superbement bien.

Encore merci.
0