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 :

listview n'afficher que certain valeur d'un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 2
    Points
    2
    Par défaut listview n'afficher que certain valeur d'un tableau
    Bonjour à tous.
    Je débute en vba et j’éprouve donc quelque souci à exprimer mes idées en version codé.
    Pour faire simple je récupère une valeur depuis un combobox et j'aimerais me servir de cette valeur pour alimenter une listview ou une listbox (je test avec les deux).
    Mais voila je n'y arrive pas.
    En version appliqué ça donne:
    Je récupère dans ma combobox1 la colonne A de ma feuille nom
    a la sélection d'un nom dans ma combobox, j'alimente ma listbox/listview avec les prénoms associé (c'est la ou ça coince).

    Auriez-vous une idée?
    Merci d'avance.
    Je joins mon essai.
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour
    tu a penser a un simple filtre?

    voila coment je rempli la listbox pour la listview tu sais faire a ce que je vois et bien tu fait la meme chose a la place de la listbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CB_Nom_Change()
        LB_prenom.Clear
        With  Sheets("nom").Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
            .AutoFilter Field:=1, Criteria1:=CB_Nom.Value
            For Each cel In .SpecialCells(xlVisible).Cells
                LB_prenom.AddItem cel.Offset(0, 1)
            Next
            .AutoFilter
        End With
    End Sub
    tout simplement
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,


    Pour les noms des variables, évites les noms trop longs et qui se ressembles c'est assez pénible à lire dans le code !
    Une piste :
    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
     
    Private Sub CB_Nom_Change()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Tbl() As String
        Dim Adr As String
        Dim I As Long
     
        Label_prenom.Caption = "Vous avez choisi le nom :          " & CB_Nom.Value
     
    '----------- Alimente la Listbox LB_prenom------------------
     
        ReDim TB_LB_prenom(2)
     
        Me.LB_prenom.Clear
     
        With Worksheets("nom"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 2).End(xlUp)): End With
     
        Set Cel = Plage.Find(CB_Nom.Value, , xlValues, xlWhole)
     
        If Not Cel Is Nothing Then
     
            Adr = Cel.Address
     
            Do
     
                I = I + 1: ReDim Preserve Tbl(1 To 2, 1 To I)
                Tbl(1, I) = Cel.Value
                Tbl(2, I) = Cel.Offset(, 1).Value
     
                Set Cel = Plage.FindNext(Cel)
     
            Loop While Cel.Address <> Adr
     
        End If
     
        With Me.LB_prenom
     
            .ColumnCount = 2
            .ColumnWidths = "50;50"
            .List = Application.Transpose(Tbl)
     
        End With
     
    '----------- Alimente la ListView LV_prenom------------------
     
        With Me.LV_prenom
     
            With .ColumnHeaders
     
                .Clear
                .Add , , "Nom", 80
                .Add , , "Prénom", 80
     
            End With
     
            For I = 1 To UBound(Tbl, 2)
     
                .ListItems.Add , , Tbl(1, I)
                .ListItems(I).ListSubItems.Add , , Tbl(2, I)
     
            Next I
     
            .Gridlines = True
            .View = lvwReport
     
        End With
     
    End Sub

  4. #4
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Déjà merci d'avoir pris de votre temps de réfléchi à mon problème.
    @patricktoulon.
    Oui j'y ai pensé mais mon fichier réel gère plus de 5000 Lignes. donc pour optimiser je préfère passer par des tableaux. à un moment j'ai eu des erreur image trop grande,...

    @these
    C'est un peu ça sauf que dans la listview/listbox je ne souhaite afficher que la colonne des prénoms.

    Le but après est d'afficher avec un click sur le prénom de la listview/listbox une autre userform avec les détail de la feuille "age". mais bon chaque chose en son temps ^^

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    a bon??!!!
    Oui j'y ai pensé mais mon fichier réel gère plus de 5000 Lignes. donc pour optimiser je préfère passer par des tableaux
    ma fois mois je filtre 5000 lignes et boucle que sur les correspondantes a la combobox

    toi tu boucle sur une variable tableaux de 5000

    ou est l'optimisation????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    je vais donc aussi tester à ta manière. j'ai plein de place sur mon disque et je suis curieux ^^.

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re


    prend un saladier et une passoire de meme diamettre

    la passoire ayant des trou sufisament petit et grand pour ne faire passer que les grain sec

    met 300 grain dans chaque

    dans le saladier tu va trier dabors les petits qui doivent sortir du lot pour pouvoir conter les bon

    dans la passoire tu ne compte que les bons
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Ok je comprend l'analogie ^^

  9. #9
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bonjour
    tu a penser a un simple filtre?

    voila coment je rempli la listbox pour la listview tu sais faire a ce que je vois et bien tu fait la meme chose a la place de la listbox

    tout simplement
    Tu t'avance un peu ^^

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    pourquoi tiens tu a faire avec une litview sachant que ce controls n'est pas dispo pour toutes les versions d'office

    sachant apres tout que c'est pour une seule colonne
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je ne sais pas trop quelle list est la plus "facile" à manipuler. c'est pour ça que je test avec les deux.
    Au finale je vais quand même traiter 5000 Ligne pour 10-20 colonne, donc des listview/listbox avec 5-10 colonne.
    Par la suite même j'aimerais rajouter des inpoutbox pour ajouter et supprimer des lignes dans le fichier.
    Au passage tu ne serais pas comment supprimer la ligne prénom qui apparait dans la istbox?

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    c'est pourtant simple tu supprime prenom en filtrant qu'a partir de la ligne 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CB_Nom_Change()
       dim cel as range  
        LB_prenom.Clear
        With Sheets("nom").Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
            .AutoFilter Field:=1, Criteria1:=CB_Nom.Value
     
             For Each cel In .SpecialCells(xlVisible).Cells
                LB_prenom.AddItem cel.Offset(0, 1)
            Next
            .AutoFilter
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Ouaip j'avais essayé. le pb du coup chez moi c'est emma qui apparait tout le temps ^^.
    Je me suis aperçu aussi que si je lance la useform alors que je ne suis pas sous la feuille nom j'ai une erreur (Erreur définie par l'application ou par l'objet) au moment ou je clic sur ma combobox


    Edit: pour l'erreur je me suis débrouillé en rajoutant un Sheets("nom").Select avant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        With Sheets("nom").Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
            .AutoFilter Field:=1, Criteria1:=CB_Nom.Value
            For Each cel In .SpecialCells(xlVisible).Cells
                LB_prenom.AddItem cel.Offset(0, 1)
            Next
            .AutoFilter
        End With

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re bonjour
    oui d'ailleur je l'ai corriger dans ma derniere proposition c'est sheets("nom") et non activesheet

    pas besoins de select

    alors c'est pas plus rapide ?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Re
    Certes ^^.
    Par contre même avec le sheets("nom") j'ai toujours la même erreur, je ne comprend pas pourquoi.
    De même pour l'affichage de la 1er ligne, j'ai soit prénom, ou si je met 2 emma. :'(.

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    c'est un xlsm ton fichier?
    il est fort possible qu'il soit corrompu ca m'est deja arrivé il ne reconnais plus les noms de sheets
    au pire essaie avec l'index du sheets "sheets(X).range...." x a remplacer par l'index tu l'aura compris
    si ca fonctionne avec index c'est bien ton fichier qui est corrompu et la il n'y a rien a faire a part tout recopier dans un fichier vierge

    a moins aussi que tu est une majuscule quelque part dans le nom du sheets
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #17
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    OK c'est bon pour l'erreur de feuille.
    Je cherche toujours pour l'histoire du prénom qui s'affiche tout le temps.

    encore merci pour le temps que tu passe

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

Discussions similaires

  1. [Débutant] conserver que certaines valeurs
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 2
    Dernier message: 01/07/2010, 23h43
  2. [VB6]N'afficher que certain type de fichier dans une FileListBox
    Par Misha dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 03/11/2008, 18h34
  3. JTextField n'acceptant que certaines valeurs
    Par paul62 dans le forum Composants
    Réponses: 2
    Dernier message: 06/11/2007, 08h53
  4. Réponses: 12
    Dernier message: 08/06/2007, 10h11
  5. N'afficher que certains fichiers
    Par azorol dans le forum Langage
    Réponses: 5
    Dernier message: 03/04/2006, 15h22

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