jahworks
Messages postés6Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 6 mars 2007
-
5 mars 2007 à 17:01
jahworks
Messages postés6Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 6 mars 2007
-
6 mars 2007 à 10:59
bonjour,
j'ai la fonction suivante
Function packing2(champs, letag, leprojet, litemeqpt As String)
Dim source As ADODB.Connection
Dim t_list As ADODB.Recordset
Dim chemin As String, texte_SQL As String
chemin = ActiveWorkbook.Path
' ouvre la base de données Access (microsoft jet)
Set source = New ADODB.Connection
source.Provider = "Microsoft.Jet.OLEDB.4.0;"
source.Open chemin & "\backoffice\packinglist.mdb"
Set t_list = New ADODB.Recordset
'requete SQL
texte_SQL = "SELECT [" & champs & "] FROM peclasse where tag='" & letag & "' and projet ='" & leprojet & "'"
Set t_list = source.Execute(texte_SQL)
'ferme la requête et packinglist.mdb
t_list.Close
source.Close
End Function
je l'utilises au moins 1000 fois dans mon fichier excel
et c'est tres lent en calcul
je cherche pour accelerer le tps de calcul
a ouvrir la connection a la base de donnée seulement a l'ouverture
comment puis je faire?
les autres idées sont bienvenue
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 5 mars 2007 à 17:12
Salut,
Tu peux déjà mettre ton objet connection comme objet connu de tout ton Classeur (Public source As ADODB.Connection
Dans un module)
Et l'initialiser à l'événement Open de l'objet
PrivateSub Workbook_Open()
Set Source = New ADODB.Connection
Source.Provider = "Microsoft.Jet.OLEDB.4.0;"
Source.Open chemin & "\backoffice\packinglist.mdb"
EndSub, ----
[code.aspx?ID=41455 By Renfield]
Ensuite il ne te reste qu'à ne faire appel qu'à la requête SQL avec la même fonction.
=> en pensant a bien détruire les objets à la fin
@+: Ju£i?n Pensez: Réponse acceptée
jahworks
Messages postés6Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 6 mars 2007 6 mars 2007 à 09:27
ca ne marche pas
voici mon code
Function packing2(champs, letag, leprojet, litemeqpt As String)
'Dim source As ADODB.Connection
Dim t_list As ADODB.Recordset
Dim chemin As String, texte_SQL As String
chemin = ActiveWorkbook.Path
' ouvre la base de données Access (microsoft jet)
'Set source = New ADODB.Connection
'source.Provider = "Microsoft.Jet.OLEDB.4.0;"
'source.Open chemin & "\backoffice\packinglist.mdb"
Set t_list = New ADODB.Recordset
'requete SQL
texte_SQL = "SELECT [" & champs & "] FROM peclasse where tag='" & letag & "' and projet ='" & leprojet & "'"
Set t_list = source.Execute(texte_SQL)
'ferme la requête et packinglist.mdb
t_list.Close
'source.Close
End Function
Private Sub Workbook_Open()
Set source = New ADODB.Connection
source.Provider = "Microsoft.Jet.OLEDB.4.0;"
source.Open chemin & "\backoffice\packinglist.mdb"
End Sub
jahworks
Messages postés6Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 6 mars 2007 6 mars 2007 à 10:08
si je mets
msgbox source la ou est declaré la connection ce la m'affiche la chaine de connection
mais msgbox source dans une autre fonction affiche "" (rien)
en fait il ne conserve pas la chaine de connection par la suite