Traitement error '3021'
Résolu
momouiz
Messages postés
30
Date d'inscription
Statut
Membre
Dernière intervention
-
momouiz Messages postés 30 Date d'inscription Statut Membre Dernière intervention -
momouiz Messages postés 30 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Traitement error '3021'
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Traitement de texte gratuit - Guide
- Ce traitement de texte gratuit et léger est parfait pour remplacer Word, même sur un vieux PC - Guide
- Traitement de texte gratuit open office - Télécharger - Suite bureautique
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
6 réponses
Re,
Pour ADODB, je mets ceci:
'Microsoft ActiveX Data Objects x.x Library
'Microsoft ActiveX Data Objects RecordSet x.x Library
Pour ADODB, je mets ceci:
'Microsoft ActiveX Data Objects x.x Library
'Microsoft ActiveX Data Objects RecordSet x.x Library
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+
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+
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 !
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 !
Re,
ce code, avec un fichier a moi, marche:
Adaptez a votre cas et essayez
A+
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+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question