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

VBA Access Discussion :

ruban personnalisé : liste deroulante et bouton recherche [AC-2007]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut ruban personnalisé : liste deroulante et bouton recherche
    bonjour,

    J’ai une base de données Access 2007 qui gère le personnel d’une entreprise.

    J’ai suivi ce tuto : http://warin.developpez.com/access/ruban/

    J’ai créé un ruban qui contient :
    - 2 listes déroulantes : l’une contient la liste des employés ; l’autre contient la liste des départements
    - 1 bouton recherche

    Ce que je souhaite faire est le suivant :

    - quand on sélectionne un employé et qu’on clique sur le bouton recherche le formulaire ‘details_employe’ s’affiche avec les détails de l’employé sélectionné

    - quand on sélectionne un département et qu’on clique sur le bouton recherche l’état qui contient la liste des employés du département sélectionné s’affiche

    - quand on sélectionne un employé et qu’après on sélectionne un département la liste déroulante qui contient la liste des employé se réinitialise c-a-d qu’aucun employé ne soit sélectionné pour faciliter la recherche

    le code de mon module adminRibbon
    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
     
    Option Compare Database
     
    Private oMonruban As IRibbonUI
     
    Private oRst As DAO.Recordset
     
    Sub getNbrEmploye(control As IRibbonControl, ByRef count)
        Set oRst = CurrentDb.OpenRecordset("SELECT nom_prenom FROM employe ORDER BY nom_prenom")
        'Récupère le nombre d'enregistrements
    With oRst
            .MoveLast
            count = .RecordCount
            .MoveFirst
        End With
    End Sub
     
    Sub getNomEmploye(control As IRibbonControl, index As Integer, ByRef label)
    On Error GoTo err
        With oRst
            label = .Fields("nom_prenom")
            .MoveNext
        End With
    Exit Sub
    err:
    MsgBox err.Description
    End Sub
     
    Sub getNbrDept(control As IRibbonControl, ByRef count)
        Set oRst = CurrentDb.OpenRecordset("SELECT libelle_dept FROM departement ORDER BY libelle_dept")
        'Récupère le nombre d'enregistrements
    With oRst
            .MoveLast
            count = .RecordCount
            .MoveFirst
        End With
    End Sub
     
    Sub getNomDept(control As IRibbonControl, index As Integer, ByRef label)
    On Error GoTo err
        With oRst
            label = .Fields("libelle_dept")
            .MoveNext
        End With
    Exit Sub
    err:
    MsgBox err.Description
    End Sub
     
     
     
    Public Function LoadRibbon()
     
    Dim strXML As String
    Dim oFso As New FileSystemObject
    Dim oFtxt As TextStream
    'Charge le fichier XML en mémoire
    Set oFtxt = oFso.OpenTextFile(CurrentProject.Path & _
          "\admin_ribbon.XML", ForReading)
    'Récupère le contenu
    strXML = oFtxt.ReadAll
    'Charge le rubban personnalisé correspondant
    Application.LoadCustomUI "rubanadmin", strXML
     
    End Function
    mon fichier admin_ribbon.XML
    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
     
    <?xml version="1.0" encoding="iso-8859-1"?>
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="getMonRuban"> 
       <ribbon startFromScratch="true">
          <tabs>
             <tab id="tabEvenement" label="Gestion du personnel de l'AMI" visible="true">
             <group id="grpEmploye" label="Employés">
                 <button id="btnNouveau" label="Nouveau" size="normal"/>
    			</group>
             <group id="grpRecherche" label="Recherche">
      			<comboBox id="cmbEmploye" label="Nom :" getItemCount="getNbrEmploye" getItemLabel="getNomEmploye" onChange="cmbNom_change" sizeString="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/>
      			<comboBox id="cmbDept" label="Département :" getItemCount="getNbrDept" getItemLabel="getNomDept" sizeString="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" />
    			<separator id="sepRecherche"/>
    			<button id="btnRechercher" label="Rechercher" imageMso="FindDialog" size="large"/>
    		</group>
             </tab>
          </tabs>
       </ribbon>
    </customUI>

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Il manque la fonction de rappel getMonRuban dans ton code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' Au chargment du ruban
    Sub getMonRuban(ribbon As IRibbonUI)
    Set oMonruban = ribbon
    End Sub
    Concernant les contrôles du ruban, on ne sait pas les manipuler par code VBA.
    C'est embêtant parce qu'on ne pas lire leurs propriétés, et donc pas lire leur valeur.
    Il faut par conséquent mémoriser, dans des variables globales, les valeurs des listes comboBox.
    Cela se fait en gérant l'événement lié à un changement de valeur, par l'intermédiaire d'une fonction de rappel.

    Dans ton module de code il faudra ajouter deux variables globales:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private sValcmbEmploye As String
    Private sValcmbDept As String
    Vu que tu n'a qu'un seul bouton, on va ajouter une troisième variable pour mémoriser le nom de la dernière liste qui a été modifiée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private sDerniereCombo As String
    Il faut aussi ajouter les procédures pour les fonctions de rappel de l'événement onChange, lequel se produit lors d'un changement de sélection dans une liste comboBox.
    Si je suis ta logique de nommage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' comboBox cmbEmploye : changement de sélection
    Sub cmbNom_change(control As IRibbonControl, text As String)
    sValcmbEmploye = text
    sDerniereCombo = "cmbEmploye"
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' comboBox cmbDept : changement de sélection
    Sub cmbDept_change(control As IRibbonControl, text As String)
    sValcmbDept = text
    sDerniereCombo = "cmbDept"
    End Sub
    Enfin, on va ajouter une fonction de rappel pour le clic sur le bouton btnRechercher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ' button btnRechercher : Action
    Sub btnRechercher_Action(control As IRibbonControl)
    Select Case sDerniereCombo
        Case "cmbEmploye"
             MsgBox sValcmbEmploye
     
        Case "cmbDept"
             MsgBox sValcmbDept
    End Select
    End Sub
    Maintenant, il faut modifier le xml de ton ruban, pour ajouter l'attribut onChange à cmbDept et onAction à btnRechercher.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
             <group id="grpRecherche" label="Recherche">
                <comboBox id="cmbEmploye" label="Nom :" getItemCount="getNbrEmploye" getItemLabel="getNomEmploye"
                          onChange="cmbNom_change"
                          sizeString="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"/>
                <comboBox id="cmbDept" label="Département :" getItemCount="getNbrDept" getItemLabel="getNomDept"
                          onChange="cmbDept_change"
                          sizeString="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" />
                <separator id="sepRecherche"/>
                <button id="btnRechercher" label="Rechercher" imageMso="FindDialog" size="large"
                        onAction="btnRechercher_Action" />
             </group>

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci bcp LedZeppII tu m'as vraiment aidé

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

Discussions similaires

  1. [AC-2010] Liste déroulante et Bouton recherche
    Par Aimé63 dans le forum IHM
    Réponses: 3
    Dernier message: 03/03/2011, 08h44
  2. Zone de liste deroulante et bouton radio
    Par lilp1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2009, 11h12
  3. [Javascript] liste deroulante sans bouton
    Par hi_vivie dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 14/06/2006, 18h53
  4. liste deroulante pour effectuer une recherche
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/04/2006, 10h27
  5. Recherche selon liste deroulante
    Par martonpylon12 dans le forum IHM
    Réponses: 6
    Dernier message: 21/12/2005, 21h00

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