Bonjour,
J'utilise la bibliothèque Microsoft DAO 3.x Object Library
Et pourtant j'ai une erreur de compilation :
Type défini par l'utilisateur non défini au niveau de la ligne :
Public cnx As ADODB.Connection
Merci de votre aide
Bonjour,
J'utilise la bibliothèque Microsoft DAO 3.x Object Library
Et pourtant j'ai une erreur de compilation :
Type défini par l'utilisateur non défini au niveau de la ligne :
Public cnx As ADODB.Connection
Merci de votre aide
slt,
ben tu mélanges là
pour les objets ADODOB c'est la libraire Microsoft ActiveX Data Objects
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL
Blog Office Mon Site DVP
Quelles références VB doivent être activées pour faire fonctionner la code suivant ?
---------------------------------------
Public cnx As ADODB.Connection
Sub auto_open()
' La sub auto_open possède la propriété d'être automatiquement
' exécutée à l'ouverture du classeur Excel
' à l'identique : auto_close est exécutée sur la fermeture
Dim strPath As String
' Seule contrainte une cellule nommée strPath
' doit être présente dans le classeur et
' renvoyer sur le chemin de l'appli
' en l'occurence Comptoir.mdb
Application.Goto Reference:="StrPath" ' ça bug ici
strPath = ActiveCell
' Nous testons si le fichier est accessible
If Len(Dir(strPath)) > 0 Then
' Déclaration de la variable de connexion
Set cnx = New ADODB.Connection
' Connexion à la base
ConnectDB cnx, strPath
Else
MsgBox "La base n'a pas pu être trouvée" & vbCrLf & _
strPath & vbCrLf & _
"n'est pas un chemin valide.", vbCritical + vbOKOnly
End If
End Sub
Sub ConnectDB(ByRef cnx As ADODB.Connection, ByVal strPath As String)
'Définition du pilote de connexion
cnx.Provider = "Microsoft.Jet.Oledb.4.0"
'Définition de la chaîne de connexion
cnx.ConnectionString = strPath
'Ouverture de la base de données
cnx.Open
End Sub
Public Function xRetrieve(Optional ByVal NomEmployé As String = vbNullString, _
Optional ByVal Mois As Date = 0, _
Optional ByVal Quarterly As Boolean = False)
' Chaine de caractère : nom de l'employé ou cellule qui contient cette information
' Date : date qui va indiquer le mois de la requête ou cellule qui contient cette information
' Booléen : Si vrai => informations trimestrielles, Si faux => informations mensuelles
Dim rec As New ADODB.Recordset
Dim strSQL As String
'Redaction du SQL
strSQL = "SELECT Sum([Prix unitaire] * [Quantité]) AS MONTANT " & _
"FROM [qryXLSlookup] WHERE 1=1"
' rappelons que les chaines de caractères en SQL sont à entourer de ''
' /!\ toute insertion de chaine dans un SQL comporte un danger pour les données
' nous pourrions fort bien ici contrôler le contenu pour neutraliser la
' la présence de mots clés placés involontairement ou par malveillance
If Len(NomEmployé) > 0 Then
strSQL = strSQL & " And ([Nom] = '" & NomEmployé & "')"
End If
' rappelons que les dates en SQL sont à mettre au format US
If Mois > 0 Then
strSQL = strSQL & " And ([Date Commande] Between #" & _
Format(MoisInf(Mois, Quarterly), "mm/dd/yyyy") & "# And #" & _
Format(MoisSup(Mois, Quarterly), "mm/dd/yyyy") & "#)"
End If
Dim rst As New ADODB.Recordset
rst.Open strSQL, cnx
On Error GoTo errH01
rst.MoveFirst
xRetrieve = CDbl(rst("MONTANT"))
rst.Close
Set rst = Nothing
Exit Function
errH01:
' Nous sommes dans un tableur excel,
' nous ne cherchons pas à analyser les éventuelles erreurs
' nous rendons la main au tableur.
Err.Clear
xRetrieve = 0
rst.Close
Set rst = Nothing
End Function
Function MoisInf(ByVal dat As Date, ByVal blnQter As Boolean) As Date
' Fonction qui permet d'obtenir la première date du mois / trimestre
If Not blnQter Then
MoisInf = CDate("01/" & Month(dat) & "/" & Year(dat))
Else
MoisInf = CDate("01/" & ((Month(dat) \ 4) * 3) + 1 & "/" & Year(dat))
End If
End Function
Function MoisSup(ByVal dat As Date, ByVal blnQter As Boolean) As Date
' Fonction qui permet d'obtenir la dernière date du mois / trimestre
If Not blnQter Then
MoisSup = DateAdd("m", 1, MoisInf(dat, blnQter)) - 1
Else
MoisSup = DateAdd("m", 3, MoisInf(dat, blnQter)) - 1
End If
End Function
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager