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

Excel Discussion :

Alimenter une listbox suivant la valeur d une cellule [Toutes versions]


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Alimenter une listbox suivant la valeur d une cellule
    bonjour a tous,

    depuis plusieurs jours j essaye de résoudre un casse tête (pour moi), je voulais savoir comment afficher des données dans une listbox suivant la valeur d'une cellule,
    c'est a dire par exemple : si j ai "oui" dans la cellule I9 ,a l ouverture de l'USF cela m affiche les données de la ligne 9 .

    j'ai réussi avec des textbox (non sans mal..),mais une listbox c est une autre histoire....

    pouvais vous m aidez s il vous plait , merci.

    je vous joint un "morceau" de mon fichier
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La méthode AddItem après une structure décisionnelle comme If ou Select Case permet d'alimenter une liste dans un contrôle ListBox ou ComboBox suivant conditions.

    Voir un cas similaire dans cette réponse. Il y a tout l'explication ainsi qu'un classeur de démonstration à télécharger.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    merci de votre attention

    j avais déjà vu ce post ,mais je n arrive pas a l adapter pour mon fichier.....

    je ne sais pas comment faire ....

    merci

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    j avais déjà vu ce post ,mais je n arrive pas a l adapter pour mon fichier.....
    je ne sais pas comment faire ....
    Quel est le problème ?
    L'utilisation de la méthode AddItem du contrôle ListBox ?
    Je te conseille la lecture du chapitre II-G. ListBox du tutoriel Utiliser les contrôles dans un UserForm, en VBA Excel

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    voici ce que j essaye de faire mais rien ne s affiche dans la listbox

    pouvez vous m aider sil vous plait?



    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
    Option Explicit
     
    Dim rng As Range
    Private Sub UserForm1_Initialize()
     'Set rng = ActiveSheet.Range("A1").CurrentRegion
     ' Redimensionnement de la plage des données pour ne pas prendre en compte la première ligne
     With rng:  Set rng = .Offset(1).Resize(.Rows.Count - 1): End With
     
     ' Initialisation des contrôles
     
     InitlstWithAddItem "oui" ' Initialisation lstWithAddItem avec filtre sur les donées du groupe oui
    End Sub
     
    Sub InitlstWithAddItem(Filtre As String)
     ' Initialisation de la liste des données de ListBox dépendant de l'argument Filtre
     Dim r As Long, c As Integer
     With lstWithAddItem
     .ColumnCount = 6: .ColumnWidths = "20;50;60;13;13;15"
      For r = 1 To rng.Rows.Count
       If rng.Cells(r, 7) = Filtre Then
          .AddItem r ' 1er élément de la liste = N° de igne de la liste des données
          For c = 2 To rng.Columns.Count
          .List(.ListCount - 1, c - 1) = rng.Cells(r, c)
          Next c
       End If
      Next r
     End With
    End Sub
    merci de votre aide

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai adapté la procédure que j'avais écrite pour le test.
    C'est maintenant une fonction qui renvoie False si LabelName n'est pas trouvé. Idéalement il faudrait contrôler d'autres choses dans la fonction mais c'est une procédure de test
    Ce qui est en rouge dans le code doit être vérifié et éventuellement corrigé (le nom du contrôle ici ListBox1 et les valeurs de la propriété ColumnWidths du même contrôle.
    La variable objet rng, présente dans cette procédure est une variable objet qui doit être déclarée en tête de module du UserForm
    Procédure Function : Elle a deux arguments à lui passer. Filtre (dans l'exemple "oui") et LableName qui est le nom de l'étiquette de colonnes (dans l'exemple Affichage)
    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
    Private Function InitlstWithAddItem(Filtre As String, LabelName As String) As Boolean
     ' Arguments
     ' Filtre : la chaîne critère
     ' LabelName : Nom de l'étiquette de colonne à filtrer
     ' Initialisation de la liste des données de ListBox dépendant de l'argument Filtre
     ' La fonction renvoie une valeur Booléenne si False il y a un problème
     InitlstWithAddItem = True
     Dim r As Long, c As Integer, NumCol As Integer
     With rng
      On Error Resume Next
      NumCol = Application.Match(LabelName, .Rows(1).Cells, 0)
      If Err.Number Then InitlstWithAddItem = False: Exit Function
      On Error GoTo 0
     End With
     With Me.ListBox1 ' Nom du contrôle ListBox
     .ColumnCount = rng.Columns.Count: .ColumnWidths = "20;50;60;13;13;15"
      For r = 1 To rng.Rows.Count
       If rng.Cells(r, NumCol) = Filtre Then
          .AddItem r ' 1er élément de la liste = N° de ligne de la liste des données
          For c = 2 To rng.Columns.Count
          .List(.ListCount - 1, c - 1) = rng.Cells(r, c)
          Next c
       End If
      Next r
     End With
    End Function
    Code de la procédure appelante (ce qui est en rouge doit être éventuellement modifié : Le nom de la feuille (ici Feuil1), l'adresse de la première cellule de la liste (ici A1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
     Set rng = ThisWorkbook.Worksheets("Feuil1").Range("A1").CurrentRegion
     If InitlstWithAddItem("oui", "affichage") = False Then
      MsgBox "Problème d'alimentation ListBox"
      Set rng = Nothing:  Exit Sub
     End If
     Set rng = Nothing
    End Sub

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    merci de votre aide

    j ai donc fait quelque ajustement pour convenir a mes besoins, mais j ai un petit souci je n'arrive pas a avoir le nom de mes étiquettes (je sais qu' il faut utiliser ".ColumnHeads = True " mais ou le placer? et comment?)

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut




    Bonjour,

    impossible avec la technique employée, uniquement en alimentant la ListBox via sa propriété RowSource




    __________________________________________________________________________________________________
    Tous unis, tous Charlie

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    j ai donc fait quelque ajustement pour convenir a mes besoins, mais j ai un petit souci je n'arrive pas a avoir le nom de mes étiquettes (je sais qu' il faut utiliser ".ColumnHeads = True " mais ou le placer? et comment?)
    Comme l'a précisé Marc que je salue au passage, la propriété ColumnHeads des contrôles ListBox et ComboBox n'est active qu'en combinaison avec la propriété RowSource ce qui dans ton cas n'est pas possible puisqu'en souhaitant n'afficher que certaines lignes de la liste des données on est obligé d'utiliser la méthode AddItem.
    Cela est illustré d'ailleurs dans le classeur exemple qui se trouve dans le lien que je t'ai donné dans ma première réponse.

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    merci de votre aide

    j ai trouvé une autre solution

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    merci de votre aide
    j ai trouvé une autre solution
    Un forum est en principe un endroit où l'on partage. Je suis convaincu que la solution que tu as trouvée pourrait en intéresser plus d'un

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    bonjour
    oui tu as raison et j'en suis désolée

    en fait pour palier a mon problème d'en-tête, j'ai tout simplement mis des labels avec le nom des colonnes.

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

Discussions similaires

  1. Coloré une ligne suivant la valeur de la cellule A
    Par bentor22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/04/2013, 00h42
  2. [XL-2007] Filtrer une ListBox selon la valeur d'une ComboBox
    Par Jeromeric dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/11/2011, 23h38
  3. [XL-2007] Modidifer une ligne suivant la valeur d'une cellule
    Par jimmy1120112 dans le forum Excel
    Réponses: 3
    Dernier message: 16/11/2010, 17h05
  4. [Toutes versions] Extraire une valeur d'une ListBox pour l'afficher dans une cellule
    Par stid59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/04/2009, 22h05
  5. Réponses: 2
    Dernier message: 03/01/2008, 16h15

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