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 :

pbm label et liste déroulante en cascade


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1
    Par défaut pbm label et liste déroulante en cascade
    Bonjour,

    J'ai un petit souci pour récupérer des valeurs de cellulle dans un label suite à des filtres issus de listes déroulantes faites dans un Userform.

    Ci-joint le code qui me permet de filtrer avec des listes déroulantes. Je filtre sur les 7 premières colonnes de ma base de données et j'aimerais afficher dans 4 labels différents les valeurs des 4 colonnes suivantes. Soit une BD à 11 colonnes. J'ai mis un imprime écran de la BD en pièce jointe.

    Est ce que quelqu un peut m'aider?

    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
    Private Sub UserForm_Initialize()
      Set f = Sheets("BD")
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        mondico(c.Value) = c.Value
      Next c
      Me.ComboBox1.List = mondico.items
    End Sub
    Private Sub ComboBox1_Change()
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        If c = Me.ComboBox1 Then mondico(c.Offset(, 1).Value) = c.Offset(, 1).Value
      Next c
      Me.ComboBox2.List = mondico.items
      Me.ComboBox2.ListIndex = -1
      Me.ComboBox3.ListIndex = -1
    End Sub
     
    Private Sub ComboBox2_Change()
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 Then mondico(c.Offset(, 2).Value) = c.Offset(, 2).Value
       Next c
       Me.ComboBox3.List = mondico.items
       Me.ComboBox3.ListIndex = -1
    End Sub
     
    Private Sub ComboBox3_Change()
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2) = Me.ComboBox3 Then mondico(c.Offset(, 3).Value) = c.Offset(, 3).Value
       Next c
       Me.ComboBox4.List = mondico.items
       Me.ComboBox4.ListIndex = -1
    End Sub
    Private Sub ComboBox4_Change()
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2) = Me.ComboBox3 And c.Offset(, 3) = Me.ComboBox4 Then mondico(c.Offset(, 4).Value) = c.Offset(, 4).Value
       Next c
       Me.ComboBox5.List = mondico.items
       Me.ComboBox5.ListIndex = -1
    End Sub
    Private Sub ComboBox5_Change()
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2) = Me.ComboBox3 And c.Offset(, 3) = Me.ComboBox4 And c.Offset(, 4) = Me.ComboBox5 Then mondico(c.Offset(, 5).Value) = c.Offset(, 5).Value
       Next c
       Me.ComboBox6.List = mondico.items
       Me.ComboBox6.ListIndex = -1
    End Sub
    Private Sub ComboBox6_Change()
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2) = Me.ComboBox3 And c.Offset(, 3) = Me.ComboBox4 And c.Offset(, 4) = Me.ComboBox5 And c.Offset(, 5) = Me.ComboBox6 Then mondico(c.Offset(, 6).Value) = c.Offset(, 6).Value
       Next c
       Me.ComboBox7.List = mondico.items
       Me.ComboBox7.ListIndex = -1
    End Sub
    Private Sub ComboBox7_Change()
       Label9.Caption =  'Label dans lequel j'aimerais afficher la valeur de la colonne 8 après filtrage...à répéter 3 fois avec les 3 colonnes suivantes
     
    End Sub
    Private Sub CommandButton1_Click()
      ActiveCell = Me.ComboBox1
      ActiveCell.Offset(, 1) = Me.ComboBox2
      ActiveCell.Offset(, 2) = Me.ComboBox3
      ActiveCell.Offset(, 3) = Me.ComboBox4
      ActiveCell.Offset(, 4) = Me.ComboBox5
      ActiveCell.Offset(, 5) = Me.ComboBox6
      ActiveCell.Offset(, 6) = Me.ComboBox7
      ActiveCell.Offset(, 7) = Me.Label9
      Unload Me
    End Sub
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    En gardant le même esprit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Si on garde le même principe de code que pour le reste
        For Each c In Range(f.[A2], f.[A65000].End(xlUp))
            If c = Me.ComboBox1 And c.Offset(, 1) = Me.ComboBox2 And c.Offset(, 2) = Me.ComboBox3 And c.Offset(, 3) = Me.ComboBox4 And c.Offset(, 4) = Me.ComboBox5 And c.Offset(, 5) = Me.ComboBox6 And c.Offset(, 6) = Me.ComboBox7 Then
                'On place les valeur des colonne suivante dans les Label
                Label8.Caption = c.Offset(, 7)
                Label9.Caption = c.Offset(, 8)
                Label10.Caption = c.Offset(, 9)
                'Même si d'autre lignes correspondent on quitte
                Exit For
            End If
        Next c
    Mais il serait certainement préférable de travailler soit avec un tableau "interne", soit avec les filtres automatiques.
    D'ailleurs, je ne trouve pas particulièrement utile de faire un Userform de tri, en activant les filtres automatiques, tu aurais un résultat bien plus rapide et de meilleur lisibilité, sans passer par du VBA, mais bon je ne connais pas ton projet dans sa globalité.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. Relation plusieurs à plusieurs + listes déroulantes en cascade
    Par Myster Jo dans le forum Modélisation
    Réponses: 1
    Dernier message: 04/08/2008, 18h19
  2. Liste déroulante en cascade
    Par BRUNO71 dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/05/2008, 09h47
  3. Liste déroulante en cascade
    Par Flow56 dans le forum VBA Access
    Réponses: 16
    Dernier message: 18/03/2008, 16h20
  4. Réponses: 8
    Dernier message: 13/12/2007, 16h31
  5. [access] liste déroulante en cascade
    Par Niaouli02 dans le forum IHM
    Réponses: 3
    Dernier message: 08/11/2007, 01h25

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