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 :

Problème d'affichage avec un Userform


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Problème d'affichage avec un Userform
    Bonjour

    Je m'excuse d'avance si la question a déjà été posée mais je n'ai à priori rien trouvé sur le forum.
    Voici mon problème.
    1) J'ai une feuille qui est alimentée à intervalles réguliers par des données externes récupérées grâce à une fonction Timer. ici pas de soucis, tout se passe bien
    2) J'ai créé un userform modless dans lequel sont affichées des données triées dans une userlist.
    3) Lorsque j'initialise mon userform, la liste est alimentée sans pb. Un bouton intégré dans le userform permet de rafraîchir manuellement la liste.
    4) J'ai créé une procédure public d'abord intégrée au userform déclenchée par le timer qui devrait rafraîchir la liste mais là ça ne fonctionne pas alors que à la mano pas de pb.
    5) le Userform accède sans pb à la feuille (appels "manuels" fc correctement)
    J'ai essayé les manips suivantes toutes négatives :
    - intégrer les appels timer directement dans le Userform avec la procédure toutes déclarées public
    - j'ai sorti les fc timer dans un module indépendant en laissant la procédure dans le userform
    - j'ai tout sorti en essayant de rafraîchir via un appel style userform.userlist : cette procédure fonctionne manuellement (je ne savais pas que les objets incorporés à un userform étaient public !)
    mais rien n'y fait.
    J'ajoute que lorsque je fais tourner "à la mano" c'est à dire hors timer, là ça fonctionne.
    Le timer appelle bien mes procédures donc là aussi pas de pb.
    Alors je n'y comprends rien.

    Je ne sais pas si j'ai été très clair dans mon exposé mais si vous aviez une idée ou une amorce de solution, vous m'en verrez ravi.

    Cordialement

  2. #2
    Candidat au Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Petite précision
    Les procédures tournent sans message d'erreur simplement rien ne se passe.
    Voilà

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Quand tu parles de timer je suppose que tu veux dire OnTime ....
    Essaies :
    1) Ajoutes une méthode (i.e. une procédure publique) "rafraichir" à ton usf.
    2) Exécutes cette méthode (LeUserform.rafraichir) en fin de la procédure de mise à jour lancée par le OnTime ?
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  4. #4
    Candidat au Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je te remercie pour ta réponse.
    Il s'agit en effet de Application.OnTime
    Je vais vérifier ce soir mais il me semble que j'ai déjà tenté cette solution avec la procédure timer dans un module externe avec un résultat infructueux.
    Je te tiens au courant
    CDT

  5. #5
    Candidat au Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Nouveaux tests et nouvel échec
    Bonjour

    Comme suggéré plus haut j'ai donc mis mon sub déclaré en public directement dans le userform -> audcune amélioration. J'ai aussi vérifié que le sub est bien appelé par le timer ce qui est le cas.
    J'ai aussi mis userform.repaint. Au début ça semblait marcher mais au bout de 10mn plus rien.
    Voici mon sub :
    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
    Public Sub essais_ecrit()
    Me.TextBox1.Text = "test" 'uniquement pour forcer le rafraichissement du CTL
    Me.ListBox2 = ""
    'Me.TxtBox_Num_dev.Value = ""
    Me.ComboBox1.Value = "TOUS"
    Me.TextBox1.Text = ""
    Call cherche("", "TOUS", "")
    'Call Me.essais_ecrit
    Formulaire_Saisie.Repaint
    'MsgBox "procedure essais_ecrit appelée" 'pour test appel
    End Sub
    A noter que le ME est juste là pour la lisibilité du code. Si on le supprime ou que l'on mette userform.<nom_ctl>, ça ne change strictement rien.
    Voici maintenant le contenu du bouton RAZ qui fonctionne à tous les coups !
    Private Sub BTN_RAZ_Click()
    Me.TextBox1.Text = ""
    Me.ListBox2 = ""
    Me.ComboBox1.Value = "TOUS"
    Call cherche("", "TOUS", "")
    End Sub
    Bon bref je m'arrache les cheveux et ne trouve rien alors si par hasard ne serait-ce que l'amorce d'une idée ou une piste à explorer ,je suis preneur.

    Bien cordialement

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Tout d'abord, merci de modifier ton post avec les balises de code # :
    https://www.developpez.net/forums/d3...-balises-code/
    http://club.developpez.com/aidenouve...es/Balises.gif

    Il faudrait que tu publies la totalité du code :
    - celui du formulaire
    - celui du module standard qui met à jour tes données.
    C'est dans ce dernier qu'il faut mettre le rafraichissement du formulaire.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Candidat au Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse. Je suis en train de tester une nouvelle solution qui semble fonctionner via userform.activate.
    Je vais vérifier
    En ce qui concerne le code ça va être un peu compliqué car la procédure d'appel est assez longue.
    JE te tiens au courant de mes tests.

    CDT

  8. #8
    Candidat au Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    Je me suis résolu à créer un truc tout simple (userform + simple fc externe d'affichage) et j'ai fini par mettre le doigt sur ce qui coince. Voici le code du sub appelé qui pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Option Explicit
     
    Sub Gere(Formulaire As String)
    Application.WindowState = xlMinimized
    VBA.UserForms.Add(Formulaire).Show vbModeless
    'Application.WindowState = xlMaximized
    End Sub
    En utilisant simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Formulaire_Saisie.Show
    ça fonctionne parfaitement
    Par contre j'aimerais comprendre ce qui clochait dans mon premier code.

    Cordialement

  9. #9
    Candidat au Club
    Homme Profil pro
    Webplanneur
    Inscrit en
    Novembre 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2020
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Quelqu’un aurait-il la réponse ?

    Merci

Discussions similaires

  1. [XL-2003] Problème d'affichage avec un UserForm d'attente pendant une macro ?
    Par [ZiP] dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2010, 11h28
  2. Réponses: 6
    Dernier message: 19/05/2005, 11h06
  3. problème d'affichage avec printf
    Par sorari dans le forum C++
    Réponses: 12
    Dernier message: 08/03/2005, 18h30
  4. Réponses: 6
    Dernier message: 19/10/2004, 13h46
  5. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59

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