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

Macros et VBA Excel Discussion :

Requete access dans excel en vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 78
    Points : 63
    Points
    63
    Par défaut Requete access dans excel en vba
    Bonjour,

    J'essaye d'utiliser le tuto de cafeine sur l'utilisation du ADO pour utiliser une requete Access dans Excel mais je n'y arrive pas

    J'ai une base de donnée avec une table INDISPOCHARGESAFFAIRES avec 3 champs chargeaffaire , mois, heures

    Je cherche dans un fichier excel à afficher pour différents mois ur une ligne le nombre d'heures pour un chargé d'affaires

    J'ai essayer d'adapter le code à mon probléme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    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"
    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 Chargeaffaires As String = vbNullString, _
    Optional ByVal Mois As Date = 0)
     
    ' 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([Heures]) AS HEURES" & _
    "FROM [INDISPOCHARGESAFFAIRES] 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(Chargeaffaires) > 0 Then
    strSQL = strSQL & " And ([Chargeaffaires] = '" & Chargeaffaires & "')"
    End If
    ' rappelons que les dates en SQL sont à mettre au format US
    If Mois > 0 Then
    strSQL = strSQL & " And ([Mois] '" & Mois & "')"
     
    End If
    Dim rst As New ADODB.Recordset
    rst.Open strSQL, cnx
    On Error GoTo errH01
    rst.MoveFirst
    xRetrieve = CDbl(rst("HEURES"))
    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
    Mais quand j'applique la formule xretrieve dans mon fichier excel il me renvois un beau #VALEUR!

    Si quelqu'un peut m'aider


  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Re contrôle ta requête SQL

    Il manque un espace avant le FROM.
    C'est quoi 1=1 ?

    Philippe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Envoi du contenu requete Access dans excel
    Par ob38@neuf.fr dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/07/2010, 11h21
  2. Affichage dynamique d'une requete Access dans Excel
    Par alex830001 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/06/2008, 17h54
  3. Requete Access dans Excel
    Par spud96 dans le forum Excel
    Réponses: 1
    Dernier message: 03/11/2007, 13h26
  4. Import Requete Access dans Excel
    Par shadockgreg dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/09/2006, 18h03
  5. Réponses: 4
    Dernier message: 23/01/2006, 19h49

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