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

Access Discussion :

[Vba] Lire BDD avec Excel


Sujet :

Access

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut [Vba] Lire BDD avec Excel
    Bonjours,

    pourquoi j'ai une erreur sur le execute ?

    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
    77
    78
    79
    80
    81
    82
    83
    Option Explicit
     
    Public MaBDD As String
    Public MaTable As String
     
    Public MaConnexion As DAO.Database
     
    Public MaRequete As String
     
    Sub Main()
     
        MaBDD = "c:\echange\bd1.mdb"
        MaTable = "Essai"
     
        On Error Resume Next
        MaConnexion.Close
     
        Call OuvrirConnection
     
        '-------- recherche element ------------
        Call RequeteRecherche("Val1", "Valeur")
        Call ExecuteRequete
     
    End Sub
     
    Sub OuvrirConnection(Optional MonMotDePasse As String = "")
    'Se connecte à la BDD
    'MaBDD = Chemin d'acces à la BDD
     
        Dim MonMessageErreur As String
     
        On Error GoTo ErreurOuvrirConnection
     
        ' Ouverture de la base de données
        Set MaConnexion = DBEngine.OpenDatabase(MaBDD)
     
        Exit Sub
     
    ErreurOuvrirConnection:
        MonMessageErreur = "BDD : " & MaBDD & vbCr & Err.Description
        MsgBox MonMessageErreur
        End
    End Sub
     
    Sub ExecuteRequete(Optional a As Boolean = False)
     
        Dim MonMessageErreur As String
     
        On Error GoTo ErreurExecuteRequete
        MaConnexion.Execute MaRequete
     
        Exit Sub
     
    ErreurExecuteRequete:
        MonMessageErreur = "BDD : " & MaBDD & vbCr & _
                           "Table : " & MaTable & vbCr & _
                           "Requete : " & MaRequete & vbCr _
     
        MonMessageErreur = MonMessageErreur & vbCr & Err.Description
     
        MsgBox MonMessageErreur
        End
    End Sub
     
    Sub RequeteRecherche(MonElement As String, Optional MaColonne As String, Optional NbreElement As Integer = 0, Optional NomTable As String = "")
    'recherche d'un ou plusieurs elements
     
        'active la table par defaut
        If NomTable = "" Then
            NomTable = MaTable
        End If
     
        If NbreElement > 0 Then 'renvoie n elements
            MaRequete = "SELECT TOP " & NbreElement & " * FROM " & NomTable
        Else 'renvoie tous les elements
            MaRequete = "SELECT * FROM " & NomTable
        End If
     
        If MonElement <> "*" Then ' n'affiche pas tous les elements
            MaRequete = MaRequete & " WHERE " & MaColonne & "='" & MonElement & "'"
        End If
     
    End Sub

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Tu pourrais dire sur quelle ligne se produit la première erreur, ça aiderait...

    Je suppose que tu as bien un champ "Valeur" dans une table "Essai" dans une base bd1 dans le répertoire "echange" du volume C...

    j'imagine que l'erreur se produit sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaConnexion.Execute MaRequete
    Je doute un peu que la commande soit valide, MaRequête n'étant pas une requête action. Tu pourrais essayer une ouverture, pour voir.

    Par ailleurs, mais cela n'a rien à voir, il me semble que le message d'erreur d'exécution de la requête utilise la variable MaTable, ce qui n'est pas approprié si une autre table a été utilisée pour construire la requête.

    En espérant que cela t'aide,

    pgz

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    merci tu viens de mettre le doigt sur mon erreur :

    j'executais toutes mes requetes de la même façon que ça soit pour lire ou pour écrire.

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    Par contre j'ai un autre problème :
    lorsque j'ecris dans ma base alors que l'element existe déja (clef primaire), l'écriture n'est pas prise en compte (normale) mais je n'ai pas de message d'erreur (pas normale).

    d'où vient le problème ?
    j'utilise le même principe que precedcemment.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub RequeteAjout(TableauValeur As Collection)
        Dim Valeur As String
        Dim i As Integer
     
        Valeur = "'" & TableauValeur(1) & "'"
        For i = 2 To TableauValeur.Count
            Valeur = Valeur & ", '" & TableauValeur(i) & "'"
        Next i
     
        MaRequete = "INSERT INTO " & MaTable & " VALUES (" & Valeur & ")"
    End Sub

  5. #5
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Si j'ai bien compris, dans l'instruction tu passes aussi la valeur de la clé primaire. Si l'enregistrement existe déjà, de 2 choses l'une( mais je ne sais pas laquelle)
    - soit il doit y avoir une erreur,
    - soit le INSERT fonctionne comme un UPDATE.

    Cela devrait être facile à vérifier en passant la même clé avec des valeurs modifiées... Non?


    A+

    pgz

  6. #6
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    Dans ma fonction j'ajoute une série d'element qui sont dans ma collection TableauValeur (le premier element étant la clef primaire)
    => INSERT INTO MaTable VALUES ('valeur1','valeur2',...)

    si le premier element (clef primaire) existe déja dans la BDD, normlement je devrais avoir un message d'erreur : mais ce n'est pas le cas, pourquoi (rien ne se passe : aucuns elements n'est ajoutés/modifié) ?
    par contre si l'element de la clef primaire n'existe pas, alors tout fonctionne normalement mes elements sont ajoutés.

  7. #7
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    j'avais bien compris, et je renouvelle ma suggestion de message précédent.

    A+

    pgz

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    ???? ... pardon mais c'est quoi ta suggestion (je dois être stupide mais je ne vois pas de suggestion dans ton message ) ?

  9. #9
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    La suggestion c'est d'eesayer de fair un Insert Into dans un enregistrement existant ( Valeur clé déjà existante) mais avec des valeurs de champ différentes de celles déjà enregistrées.

    C'est pour voir si le INSERT INTO se comporte ou pas dans ce cas là comme un UPDATE.

    C'est plus clair?

    A+
    pgz

  10. #10
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Hello

    Ton code est illisible, les arguments des procédures ne veulent rien dire et l'utilisation de variables publiques semble innapropriée.

    Essaye de réordonner tout ça, ça sera plus simple pour nous t'aider et pour toi aussi

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    La suggestion c'est d'eesayer de fair un Insert Into dans un enregistrement existant ( Valeur clé déjà existante) mais avec des valeurs de champ différentes de celles déjà enregistrées.
    => j'ai deja repondu à cette question :
    si le premier element (clef primaire) existe déja dans la BDD, normalement je devrais avoir un message d'erreur : mais ce n'est pas le cas, pourquoi (rien ne se passe : aucuns elements n'est ajoutés/modifié) ?
    => le INSERT ne se comporte pas comme un UPDATE

    Ton code est illisible, les arguments des procédures ne veulent rien dire et l'utilisation de variables publiques semble innapropriée.
    => pourtant mon code me semble visible . c'est quoi pour toi un code visible ?

  12. #12
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Un code lisible est un code compréhensible, avec des noms de variables choisis, correctement indenté, avec un minimum de Goto, etc

    Un code respectant en outre les conventions VB

    http://argyronet.developpez.com/office/vba/convention/


  13. #13
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Points : 314
    Points
    314
    Par défaut
    bon je vais essayer de m'y mettre

    => maintenenat peut-on me reponde a ma question ?

Discussions similaires

  1. Lier un BDD avec Excel
    Par ahmedbj dans le forum Excel
    Réponses: 1
    Dernier message: 27/12/2009, 10h37
  2. [Excel] Comment lire des fichiers excel avec php?
    Par dear_rihab dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 02/11/2007, 12h38
  3. [VBA-E] lire fichier son avec excel
    Par potili2 dans le forum Excel
    Réponses: 5
    Dernier message: 02/04/2007, 20h26
  4. [VBA] supression element Acces avec Excel
    Par Emcy dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 07/11/2005, 17h30
  5. [VBA]BDD et Excel
    Par Emcy dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 04/11/2005, 12h53

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