none
Excel en tant que base de donnée RRS feed

  • Question

  •  

    Bonjour,

     

    Je suis en train d'ecrir une application en VBA sous excel dans laquelle les utilisateurs saisissent des données via des formulaires.

    Dans un soucis de limiter les ressources externes, j'aimerais enregistrer mes données dans une feuille secondaire (ma feuille principale  est deja utilisé comme interface utilisateur, avec des formulaire popup si besoin) à la maniere d'une base de donnée.

    D'apres ce que j'ai compris, il faut d'abord que je considere chaque feuille comme une table. Donc j'ai crée une feuille (appelée MEDECIN) avec les colonnes suivantes:

    Code Snippet

    ID     TITRE     NOM     PRENOM

    1      Dr        DUPONT  jean

    2      Pr        DURANT  marcel

     

     

     

    Maintenant mes questions:

    - Puis-je executer des requetes de style SQL sur cette feuille depuis VBA ? et comment ? (Par exemple obtenir NOM et PRENOM)

     j'ai pas mal recherché sur les web, sans grand succes.

     

    - Puis-je ensuite utiliser ces données pour alimenter une liste deroulante ?

     

    Merci pour vos reponses / suggestions.

     

    - Deedolith

    lundi 14 juillet 2008 12:30

Réponses

  • Bonjour,

     

    Bravo pour votre code...

    Coté liste déroulante, oui, vous pouvez.

    Tout dépend de quel type de liste il s'agit... Si elle est située dans un UserForm, la méthode AddItem peut-être utilisée durant le parcours du Recordset rs que vous avez dans votre code (par exemple)...

    Il existe 3 types par défaut de liste déroulante dans Excel (à partir de la version 97).

     

     

     

     

    mercredi 23 juillet 2008 12:54
    Modérateur

Toutes les réponses

  • 1er question, resolue:

       

    Code Snippet

        Dim ConnectionString as String

        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset

        Set cn = New ADODB.Connection
        Set rs = New ADODB.Recordset

     

        ConnectionString = "Driver={Microsoft Excel Driver (*.xls)}; "
        ConnectionString = ConnectionString +  "Dbq=" + Application.ActiveWorkbook.FullName + "; "
        ConnectionString = ConnectionString + "ReadOnly=False;"


        cn.Provider = "MSDASQL"
        cn.ConnectionString = ConnectionString
        cn.Open
        rs.CursorLocation = adUseClient
        rs.Open "SELECT * FROM [MEDECIN$]", cn, adOpenDynamic, adLockOptimistic

        |

        |

        [code perso]

        |

        |

        rs.Close

        cn.Close
        Set rs = Nothing
        Set cn = Nothing

     

     

    mardi 15 juillet 2008 13:46
  • Bonjour,

     

    Bravo pour votre code...

    Coté liste déroulante, oui, vous pouvez.

    Tout dépend de quel type de liste il s'agit... Si elle est située dans un UserForm, la méthode AddItem peut-être utilisée durant le parcours du Recordset rs que vous avez dans votre code (par exemple)...

    Il existe 3 types par défaut de liste déroulante dans Excel (à partir de la version 97).

     

     

     

     

    mercredi 23 juillet 2008 12:54
    Modérateur
  • 2e question resolue:

     

    Code Snippet

    If ((rs.BOF = False) And (rs.EOF = False)) Then
        rs.MoveFirst
        ThisWorkbook.Sheets("PATIENT").DropDowns("cmb_Medecin").RemoveAllItems
        Do While Not (rs.EOF)
            ThisWorkbook.Sheets("PATIENT").DropDowns("cmb_Medecin").AddItem (rs.Fields("TITRE") & " " & rs.Fields("NOM") & " " & rs.Fields("PRENOM"))
            rs.MoveNext
        Loop
    End If

     

     

    jeudi 24 juillet 2008 11:31