IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Acces à la base de donnée à partir d'excel en VBA


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 33
    Points
    33
    Par défaut Acces à la base de donnée à partir d'excel en VBA
    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

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    slt,

    ben tu mélanges là

    pour les objets ADODOB c'est la libraire Microsoft ActiveX Data Objects

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 47
    Points : 33
    Points
    33
    Par défaut références VB
    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

Discussions similaires

  1. [C#] Accés à une base de données AS400
    Par Green Hornet dans le forum Accès aux données
    Réponses: 8
    Dernier message: 14/11/2011, 11h26
  2. Créer une base de données à partir d'un questionnaire Excel
    Par Pierre Jean-Pierre dans le forum Excel
    Réponses: 1
    Dernier message: 20/06/2008, 15h16
  3. Filtre de valeurs dans la base de données à partir d'excel
    Par xtian_Québec dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/12/2007, 03h31
  4. Réponses: 2
    Dernier message: 01/10/2004, 15h13
  5. Réponses: 8
    Dernier message: 04/09/2003, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo