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 :

Mise à jour d'une listview [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bjr Le Forum,
    suite à mon sujet d'hier "comment remplir une listview", je suis à nouveau devant un problème.
    dans le formulaire que j'ai fait il y a 1 combobox, 1 listview,1 listbox. lorsque je sélectionne une entrée de la combo la listbox ce met à jour, lorsque je clique sur une ligne de la listbox, la listview affiche une donnée, jusque là tout va bien. Mais si je sélectionne une autre ligne de ma listbox la listview ne se met pas à jour l'ancienne donnée reste affichée... que faire?
    voici le code de la combo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ComboBox1_Change()
    Dim i As Long
     
    For i = 1 To 2
    If ComboBox1.Value = Sheets(i).Name Then
      ListBox1.RowSource = ("Noms" & i)
     
    End If
    Next i
     
    End Sub
    voici le code de la listbox:
    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
    Private Sub ListBox1_Click()
    With ListBox1
    For x = 1 To 2
    ' boucle sur tous les données de la listbox
    'Les index des Listbox commencent par zéro
        For i = 0 To .ListCount - 1
         Debug.Print .List(i)
         If .ListIndex = i Then
         ListView1.ListItems(1).ListSubItems.Add , , Sheets(x).Range("B" & (i + 2)).Value
         End If
         Next i
    Next x
    End With
     
    End Sub
    Pouvez-vous me dire si j'ai loupé quelques choses? merci

    Re,
    pour mieux comprendre voici un fichier d'exemple.
    A+

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut En bonne voie
    slt le forum,
    apparemment on est pas trop inspiré par les listview, lol.
    à force de persévérence et de beaucoup de lecture j'ai fait quelques modifications qui fonctionnent les voici (en rouge):
    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
    Private Sub ListBox1_Change()
    With ListBox1
           
    ListView1.ListItems(1).ListSubItems.Clear
    
    For x = 1 To 2
    ' boucle sur tous les données de la listbox
    'Les index des Listbox commencent par zéro
      
        For i = 0 To .ListCount - 1
         Debug.Print .List(i)
         If .ListIndex = i Then
         ListView1.ListItems(1).ListSubItems.Add , , Sheets(x).Range("B" & (i + 2)).Value
         End If
         Next i
    Next x
    End With
    End Sub
    d'abord j'ai changé le "_click" en "_change", ensuite je me suis rendu compte qu'il fallait effacer le contenu de la listview sinon il garde en mémoire la première entrée. Donc avec ce code si je choisis une autre ligne de ma listbox, la listview affiche bien la donnée correspondante.
    Toutefois si je choisis dans le combobox un autre choix ( ex le 2eme) ma listbox change mais comme je boucle sur l'index de ma listbox dans le premier passage sur la boucle, il m"afffiche dans la listview le résultat de la première listbox et comme je n'efface pas la listview au deuxieme passage le résultat ne change pas.
    Voyez-vous un moyen d'introduire la ligne ci dessous afin qu'elle puisse m'effacer la listview ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListView1.ListItems(1).ListSubItems.Clear
    ou peut-être avez-vous une autre solution? Merci pour votre aide

  3. #3
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut j'ai trouvé
    Re,
    j'ai eu un flash,
    A force de réfléchir et grâce à la touche F8 (je l'adore) j'y suis arrivé. j'ai fait quelques changement dans mon code tout d'abord ici en rouge:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ComboBox1_Change()
    Dim i As Long
    
    For i = 1 To 2
    If ComboBox1.Value = Sheets(i).Name Then
      ListBox1.RowSource = ("Noms" & i)
    Sheets(i).Activate
    End If
    Next i
    
    End Sub
    puisque je sélectionne ma feuille avant du coup je n'ai plus besoin de faire une boucle sur les feuilles donc j'ai supprimé une boucle dans listbox1_changevoici 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
    Private Sub ListBox1_Change()
    With ActiveSheet
     
    ListView1.ListItems(1).ListSubItems.Clear
     
    ' boucle sur tous les données de la listbox
    'Les index des Listbox commencent par zéro
     
        For i = 0 To ListBox1.ListCount - 1
         Debug.Print ListBox1.List(i)
         If ListBox1.ListIndex = i Then
         ListView1.ListItems(1).ListSubItems.Add , , Range("B" & (i + 2)).Value
         End If
         Next i
     
    End With
    End Sub
    tout fonctionne c le pied
    A+ le Forum

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

Discussions similaires

  1. Mise à jour d'une listView d'un fragment
    Par Bwg28 dans le forum Composants graphiques
    Réponses: 6
    Dernier message: 12/02/2014, 16h34
  2. Mise à jour d'une ListView via MySQL
    Par pouti dans le forum Composants graphiques
    Réponses: 15
    Dernier message: 14/12/2013, 21h14
  3. Mise à jours d'une ListView contenant un adapter custom
    Par ghostwan dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 19/09/2009, 18h20
  4. Mise à jour d'une table avec un fichier csv
    Par blackangel dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h46
  5. Mise à jour d'une bd mysql
    Par joquetino dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 11/01/2005, 14h05

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