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 :

Rafraichissement de Listview dans un Multipage


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Par défaut Rafraichissement de Listview dans un Multipage
    Bonjour à tous,

    Je sèche depuis un moment sur un problème de rafraichissement de composants Listview sur un Multipage, et j'aurais besoin de conseils avisés.

    Voici ce qui m'amène : j'ai créé un Userform contenant un objet Multipage de 4 pages, sur chacune des pages figure un Listview qui sont tous en mode lvwReport et initialisés dans la procédure Userform_Initialize.

    Mon problème est que lorsque le Userform apparait pour la première fois, je peux visualiser correctement le Listview sur la page immédiatement affichée, mais si je clique sur autre un onglet d'une autre page le nouveau Listview affiché apparait vide. Je suis obligé de faire un aller retour d'un onglet à l'autre pour que finalement tous mes Listview soit renseignés correctement.

    J'ai bien tenté de rafraichir les listview en cas de changement de page avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Multipage1_Change()
      Select Case Multipage1.SelectedItem.Index
        Case 0 
          Listview1.Refresh
        Case 1 
          Listview2.Refresh
        Case 2 
          Listview3.Refresh
        Case 3 
          Listview4.Refresh
      End Select
    End Sub
    Mais j'ai toujours le même problème.

    Bref, çà ressemble à un bug, çà fait laid et pas très sérieux d'autant plus que c'est destiné à d'autres utilisateurs.

    Si quelqu'un a une idée je suis preneur.

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 51
    Par défaut
    Bonjour,

    Pourquoi ne charges tu pas les Listview de chaque page lors de leur affichage plutôt que dans ta procédure Initialize ?

    Cordialement

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Par défaut
    Merci pour cette réponse, c'est ce que j'ai fait dans un premier temps.

    Le problème c'est que chaque ListView est rempli par des datas qui proviennent de requêtes sur un serveur distant auxquelles j'accède par ADO; et donc il y a une attente perceptible de quelques secondes en cliquant sur un onglet du Multipage -> c'est très désagréable pour l'utilisateur.

    En chargeant toutes les datas dans l'initialisation, je peux faire patienter l'utilisateur avec une ProgressBar et tout présenter en une seule fois.

    J'ai également pensé à utiliser des tableaux temporaires, qui permettraient de remplir les ListView plus rapidement à la demande, mais je ne l'ai pas encore codé, trop long à mon goût , et puis on ne devrait pas avoir à faire çà .

    Je commence à être très déçu de la programmation en VBA Excel.

    Ce que je ne comprends pas c'est pourquoi les Listview n'apparaissent pas correctement même après un Refresh.


  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    As tu essayé en rafraichissant l'UserForm


    bonne journée
    michel

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Par défaut
    Le UF.Repaint ne donne rien non plus avec les Listview sur des Multipage.

    J'ai trouvé une solution qui consiste à faire en VBA ce que je faisais "à la main", c'est à dire parcourir une fois au moins toutes les pages pour afficher les Listview .

    Pour ceux que çà intéresserait voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub UserForm_Activate()
    Dim i As Integer
      For i = 1 To Multipage1.Pages.Count
        Multipage1.Value = (Multipage1.Value + 1) Mod Multipage1.Pages.Count
      Next
    End Sub
    Voilà. Oui je sais il y a plus simple, mais j'aime bien cette méthode car elle permet de faire le "tour" du Multipage à tous les coups.

    A moins qu'un expert nous explique pourquoi les méthodes Refresh et Repaint ne fonctionnent pas dans la cas des Listview sur des Multipage, je considère le sujet comme résolu.

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

Discussions similaires

  1. Problème de positionnement de listview dans multipage
    Par Fouinard dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/03/2009, 11h08
  2. [VB.NET] Exporter une listView dans un txt
    Par hm1ch dans le forum Windows Forms
    Réponses: 4
    Dernier message: 10/07/2006, 19h17
  3. Réponses: 8
    Dernier message: 12/05/2006, 14h04
  4. [VBA-E] creer x Frames dans un Multipage
    Par clochardevobsy dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/04/2006, 11h14
  5. question sur le rafraichissement des données dans la base
    Par vbcasimir dans le forum Bases de données
    Réponses: 8
    Dernier message: 06/06/2005, 12h44

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