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 :

Userform non modale vide ! [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 43
    Points
    43
    Par défaut Userform non modale vide !
    Bonjour

    J'ai crée une boite userform non modale contenant un simple textbox pour tenir informer l'utilisateur du déroulement. Dans ma boucle, la boite s'affiche mais il n'y a que le tour ! ! ! l'intérieur est blanc, même pas gris.

    Comme j'avais déjà utilisé ce principe dans une autre fonction de mon prog, je suis retourné voir si elle fonctionnait comme avant. Verdict : même problème.

    Si je fais un ctrl+arret au milieu de ma boucle, l'affichage se remet comme il devrait.

    J'ai du faire un truc qui empêche la maj de l'affichage mais je n'ai pas la moindre idée de quoi ?

    Si vous avez une petite idée, je suis preneur ..

    Merci d'avance à tous.

  2. #2
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Gloubi99,

    execute le code en mode pas à pas, tu pourras suivre de déroulement et vérifier chaque ligne du code.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Bonjour Isabelle

    Merci pour ton aide

    Le code fonctionne Nickel en pas à pas.

    Toutes les informations s'affichent dans ma boite même si je reste appuyer sur F8 mais en exécution normal : boite vide !

  4. #4
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    un code s'execute très rapidement, si tu n'as pas mits de pause dans la boucle et si la derniere valeur renseigner est une chaine vide, c'est normal,

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Ma chaine n'est pas vide

    même en mettant une pause de 1 seconde avant et après, il affiche toujours rien !

    En plus ma première Userform fonctionnait très bien sans pause et aujourd'hui alors que je n'ai rien modifié dans cette fonction, ça ne fonctionne plus !

    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
    Private Sub CommandButton1_Click()
     
    UserForm1.Label1.Caption = "O"
    UserForm1.Show 0
     
    For i = 1 To 10
     
    newHour = Hour(Now())
    newMinute = Minute(Now())
    newSecond = Second(Now()) + 1
    waitTime = TimeSerial(newHour, newMinute, newSecond)
    Application.Wait waitTime
     
    UserForm1.Label1.Caption = UserForm1.Label1.Caption + "O"
     
    newHour = Hour(Now())
    newMinute = Minute(Now())
    newSecond = Second(Now()) + 1
    waitTime = TimeSerial(newHour, newMinute, newSecond)
    Application.Wait waitTime
     
    Next i
     
    UserForm1.Hide
    End Sub
    affiche OO et c'est tout !

  6. #6
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    je ne comprend pas, ce bouton il est sur une feuille ou sur un userform ?
    ou bien il y a 2 userform le bouton sert à appelez le 2 ème ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Le bouton est sur une feuille et appelle la boite non modale sensée faire défiler des infos matérialisées par les "O"

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 128
    Points : 55 940
    Points
    55 940
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UserForm1.Label1.Caption = UserForm1.Label1.Caption + "O"
    userform1.Repaint
    devrait résoudre le problème

  9. #9
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Gloubi99,

    en y ajoutant DoEvents j'arrive à le voir correctement,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
    UserForm1.Label1.Caption = "O"
    UserForm1.Show 0
    For i = 1 To 10
    DoEvents
    Application.Wait (Now + TimeValue("0:00:01"))
    UserForm1.Label1.Caption = UserForm1.Label1.Caption + "O"
    Next i
    UserForm1.Hide
    End Sub

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 65
    Points : 43
    Points
    43
    Par défaut


    Merci à tous les deux

    le Repaint résout mon problème.

    Reste le mystère pourquoi ma première routine fonctionnait sans repaint avant et plus maintenant ... mais c'est une autre histoire

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

Discussions similaires

  1. [XL-2007] Userform non-modal & Accès au modèle objet du projet VBA
    Par JackIsJack dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/06/2010, 11h23
  2. Pb référence / userform non-modal
    Par DARKALANE dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 01/09/2009, 22h03
  3. [Toutes versions] Userform non modal = plantage d'excel
    Par youn1096 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/05/2009, 17h39
  4. [E-02] Comment garder un Userform non Modal affiché ?
    Par Frutchy dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 23/12/2008, 03h36
  5. UserForm non modal mais arrêtant la macro
    Par oohcalme dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2008, 12h11

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