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 :

[VBA]BDD et Excel


Sujet :

Macros et VBA Excel

  1. #21
    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
    Est-ce que quelqu'un peut tester le code suivant et vérifier que la ligne MsgBox MonRecordset.RecordCount fonctionne correctement

    la BDD que j'ai créée s'appele "c:\echange\bd1.mdb"
    Elle est constituée d'une table qui se nomme "Essai" et de trois champs "Reference" (clef primaire) , "Valeur","Designation" de type string

    j'ai remplie ma table avec 5 lignes de 3 elements :
    "Réf1" "Val1" "Dés1"
    "Réf2" "Val2" "Dés2"
    "Réf3" "Val3" "Dés3"
    "Réf4" "Val4" "Dés4"
    "Réf7" "Val5" "Dés7"

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    Option Explicit
     
    Public Type TypeElementTableStr
        BDD As String
        Table As String
        Colonne As String
        Element As String
    End Type
     
    Function RechercheUnElementString(ByRef MonElementStr As TypeElementTableStr) As Collection
    'recherche un element dans la BDD et renvoie la première ligne associée
    'tous les elements de la BDD doivent être de type string
     
    'Elements entrant :
    'BDD = location de la BDD (ex : c:\toto.mdb")
    'Table = nom de la table dans laquel on veut faire la recherche
    'Colonne = Nom de la colonne dans laquel on veut faire la recherche
    'Element = chaine de caractère à rechercher
     
        Dim MaRequete As String
     
        Dim MonRecordset As ADODB.Recordset
        Dim MaConnexion As New ADODB.Connection
     
        Dim i As Integer
     
        Dim MonMessageErreur As String
     
        MaRequete = "SELECT * FROM " & MonElementStr.Table & " WHERE " & MonElementStr.Colonne & "='" & MonElementStr.Element & "'"
     
        Set MonRecordset = New ADODB.Recordset
        Set MaConnexion = New ADODB.Connection
     
        On Error GoTo RechercheUnElementFin
     
        Set RechercheUnElementString = New Collection
     
        'Définition du pilote de connexion (fournisseur)
        MaConnexion.Provider = "Microsoft.Jet.Oledb.4.0"
     
        'Définition de la chaîne de connexion : chemin complet du .mdb
        MaConnexion.ConnectionString = MonElementStr.BDD
     
        'Ouverture de la base de données
        MaConnexion.Open "Data Source=" & MonElementStr.BDD
     
        MonRecordset.Open MaRequete, MaConnexion
     
        If MonRecordset.EOF And MonRecordset.EOF Then
            MsgBox "Element introuvable !"
        Else
            'affiche l'element recherché
            For i = 0 To MonRecordset.Fields.Count - 1
                RechercheUnElementString.Add MonRecordset(i).Value
            Next i
     
            MsgBox MonRecordset.RecordCount
        End If
     
        MonRecordset.Close
        Set MonRecordset = Nothing
     
        MaConnexion.Close
        Set MaConnexion = Nothing
     
        On Error GoTo 0
     
        Exit Function
     
    RechercheUnElementFin:
     
        MonMessageErreur = "BDD : " & MonElementStr.BDD & vbCr & _
                           "Table : " & MonElementStr.Table & vbCr & _
                           "Colonne : " & MonElementStr.Colonne & vbCr & _
                           "Element recherché : " & MonElementStr.Element & vbCr
     
        MonMessageErreur = MonMessageErreur & vbCr & Err.Description
     
        On Error GoTo 0
     
        MsgBox MonMessageErreur
     
    End Function
     
    Sub main()
     
        Dim MonElementStr As TypeElementTableStr
        Dim MaCollection As New Collection
        Dim MaChaine As String
        Dim Element As Variant
     
        MonElementStr.Element = "Réf2"
        MonElementStr.BDD = "c:\echange\bd1.mdb"
        MonElementStr.Table = "Essai"
        MonElementStr.Colonne = "Reference"
     
        Set MaCollection = RechercheUnElementString(MonElementStr)
     
        If Not (MaCollection.Count = 0) Then
            For Each Element In MaCollection
                MaChaine = MaChaine & Element & vbCr
            Next Element
     
            MsgBox (MaChaine)
        End If
     
    End Sub

  2. #22
    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
    c'eszt bon j'ai trouver : il faut remplacer
    MonRecordset.Open MaRequete, MaConnexion
    par
    MonRecordset.Open MaRequete, MaConnexion, adOpenStatic, adLockOptimistic

    le fait d'ajouter ces attribut ralenti l'execution mais permet d'avoit plus de possibilité sur la BDD.

  3. #23
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Désolé de ne pas t'avoir répondu hier, mais je n'ai vraiment pas eu le temps...
    D'un autre côté, je n'avais pas la réponse, et je prend bonne note de tes résultats!
    Donc : MERCI !!!!


  4. #24
    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
    ...de rien

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [VBA]ajout liste excell
    Par Cibou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/01/2006, 17h23
  2. Gestion en vba des fichiers excel en mode multiutilisateurs
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/12/2005, 16h06
  3. [Vba] Lire BDD avec Excel
    Par Emcy dans le forum Access
    Réponses: 12
    Dernier message: 09/11/2005, 11h09
  4. [Vba] BDD : Excel + Access + Vba
    Par Emcy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/11/2005, 10h23
  5. VBA et application Excel
    Par BonyR dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/09/2005, 09h31

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