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 :

[Debutant] VBA EXCEL form comboliste imbriquée


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut [Debutant] VBA EXCEL form comboliste imbriquée
    bonjour,

    en fait je souhaiterai faire 3 combobox imbriquée c 'est à dire :

    par ex :

    1ere combobox = marque voiture(peugeot citroen...stocké dans une base access)

    2eme combobox=modele voiture (pour la marque selectionne peugeot 206,106.. dans une table access)

    3eme combobox=type voiture (pour le modele selectionnee essence diesel dans une base access)


    mon prog ne parle pas de voiture mais c la mem idee , le pb c que y a que la premiere combo de rempli


    voici mon code peut etre j ai fais une betise ou l idee est mauvaise je ne sais pas merci pour votre aide



    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
     
     
    Private Sub UserForm_Initialize()
     
    'creer une instance de classdao
    Set cnxDAO = New ClassDAO
     
    'connexion dao
    cnxDAO.ConnectDAO
     
    'declaration des recordset ou seront stocké les enregistrements des tables
    Dim rslot As Recordset
    Dim rsprinter As Recordset
    Dim rsnomav As Recordset
     
    'ouverture du recordset et recupération des enregistrements de la table avenant
    Set rslot = cnxDAO.CurrentDB.OpenRecordset("select distinct av_lot_nom from avenant ", dbOpenDynaset, dbFailOnError)
     
        'parcours du recordset et ajoute dans la combo
        With rslot
     
            While Not .EOF
     
            av_lot_nom = !av_lot_nom
            Cbolot.AddItem av_lot_nom
     
            .MoveNext
     
            Wend
     
        End With
     
     
     
    Set rsprinter = cnxDAO.CurrentDB.OpenRecordset("select distinct av_printer_nom from avenant where av_lot_nom='" & Cbolot.Value & "'", dbOpenDynaset, dbFailOnError)
     
        With rsprinter
     
            While Not .EOF
     
            av_printer_nom = !av_printer_nom
            Cboprinter.AddItem av_printer_nom
            .MoveNext
     
            Wend
     
        End With
     
     
    Set rsnomav = cnxDAO.CurrentDB.OpenRecordset("select distinct av_nom_av_nom from avenant where av_printer_nom='" & Cboprinter.Value & "'", dbOpenDynaset, dbFailOnError)
     
        With rsnomav
     
          While Not .EOF
     
            av_nom_av_nom = !av_nom_av_nom
            Cbonomav.AddItem av_nom_av_nom
            .MoveNext
     
            Wend
     
     
        End With
     
     
    End Sub
     
     
    Private Sub Btncontrol_Click()
     MsgBox (Cbolot.Value & Cboprinter.Value & Cbonomav.Value)
     
     
    End Sub

    merci pour votre aide

  2. #2
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 116
    Points : 105
    Points
    105
    Par défaut
    salut,
    Dans ce cas là, personnellement, je fais des procédures "combo_AfterUpdate()" qui s'enchaînent, dans chacune d'elles, le recordset récupere les valeur correspondant à la valeur sélectionnée dans le combo.
    Par exemple, pour les voitures tu as un combo marque, comme tu disais et puis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private sub comboMarque_AfterUpdate()
    ...
    requete ="select type_voiture from type where marque ='" & comboMarque.value & "'"
    ...
    end sub
    etc, etc...
    en esperant que ça t'aide,
    a+
    b.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    sur quel evenement tu fais cette fonction

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 344
    Points : 158
    Points
    158
    Par défaut
    ok merci en fait je ne faisais pas au bon endroit mes requetes voici le codes qui fonctionnent pour 3 combo imbrique +requete->vers access

    connectDAO est une class qui ce connecte a la base access

    voici le code :

    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
     
     
    'declare un nom d'objet de la classdao
    Private cnxDAO As ClassDAO
     
     
     
    Private Sub UserForm_Initialize()
     
    'creer une instance de classdao
    Set cnxDAO = New ClassDAO
     
    'connexion dao
    cnxDAO.ConnectDAO
     
    'declaration des recordset ou seront stocké les enregistrements des tables
    Dim rslot As Recordset
     
     
     
    'ouverture du recordset et recupération des enregistrements de la table avenant
    Set rslot = cnxDAO.CurrentDB.OpenRecordset("select distinct av_lot_nom from avenant ", dbOpenDynaset, dbFailOnError)
     
        'parcours du recordset et ajoute dans la combo
        With rslot
     
            While Not .EOF
     
            av_lot_nom = !av_lot_nom
            Cbolot.AddItem av_lot_nom
     
            .MoveNext
     
            Wend
     
        End With
     
    End Sub
     
    Private Sub Cbolot_Change()
     
    Dim rsprinter As Recordset
     
    Set rsprinter = cnxDAO.CurrentDB.OpenRecordset("select distinct av_printer_nom from avenant where av_lot_nom='" & Cbolot.Value & "'", dbOpenDynaset, dbFailOnError)
     
        With rsprinter
     
            While Not .EOF
     
            av_printer_nom = !av_printer_nom
            Cboprinter.AddItem av_printer_nom
            .MoveNext
     
            Wend
     
        End With
     
     
    End Sub
     
    Private Sub Cboprinter_Change()
     
    Dim rsnomav As Recordset
     
    Set rsnomav = cnxDAO.CurrentDB.OpenRecordset("select distinct av_nom_av_nom from avenant where av_printer_nom='" & Cboprinter.Value & "'", dbOpenDynaset, dbFailOnError)
     
        With rsnomav
     
          While Not .EOF
     
            av_nom_av_nom = !av_nom_av_nom
            Cbonomav.AddItem av_nom_av_nom
            .MoveNext
     
            Wend
     
     
        End With
     
     
    End Sub
     
    Private Sub Btncontrol_Click()
     MsgBox (Cbolot.Value & "" & Cboprinter.Value & "" & Cbonomav.Value)
     
     
    End Sub
     
    Private Sub Btncancel_Click()
     
    Cbolot.Clear
     
    Cboprinter.Clear
    Lblprinter.Visible = False
    Cboprinter.Visible = False
     
    Cbonomav.Clear
    Lblnomav.Visible = False
    Cbonomav.Visible = False
     
    UserForm_Initialize
     
    End Sub

  5. #5
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 116
    Points : 105
    Points
    105
    Par défaut
    si c'est bon, n'oublie pas le tag resolu...
    a+
    b.

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

Discussions similaires

  1. Code VBA excel form et modules
    Par Cptnikita dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2007, 10h15
  2. [VBA-Excel] Mise en forme d'un classeur
    Par snooopy007 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/07/2006, 18h37
  3. Réponses: 1
    Dernier message: 22/03/2006, 12h03
  4. [VBA][Excel][debutant] question procedure
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/01/2006, 15h42
  5. [VBA][Excel] mise en forme conditionnelle
    Par titflocon dans le forum Access
    Réponses: 9
    Dernier message: 19/12/2005, 10h13

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