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 :

Voir la ligne courante d'un TextBox [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut Voir la ligne courante d'un TextBox
    Bonjour le forum,

    J'ai mis au point une macro qui, lorsqu'elle s'exécute, affiche des informations dans un TextBox dont la hauteur équivaut à un demi classeur à peu près. Il faut imaginer un textbox qui s'enrichit d'environ une ligne par seconde.

    Le TextBox fait partie d'un USF non modal. Il est Multiligne, WordWrap est à True, ScrollBars = fmScrollBarsVertical, etc...

    Le problème est que quand je récupère les infos, dès que je dépasse la fin du TextBox, je ne vois pas les nouvelles lignes qui s'affichent (il faut pour cela cliquer sur la barre verticale). J'aimerais pouvoir voir à tout moment la nouvelle ligne qui vient de s'afficher.

    J'ai testé en enlevant la barre verticale, il faut que je clique sur le TextBox pour que la dernière ligne s'affiche, ce qui est mieux mais pas encore acceptable. J'ai aussi testé en ajoutant la commande "TextBox1.SetFocus", mais je ne vois pas de différence.

    Avez-vous une idée ?

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    salut

    regarde ce que fait par exemple ceci (avec scrollbar verticale et propriété Mutiline True) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub CommandButton1_Click()
      For i = 1 To 100
        TextBox1.SelText = "aaaaa" & i
        TextBox1.SetFocus
      Next
    End Sub

  3. #3
    Membre expérimenté
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 747
    Points : 1 332
    Points
    1 332
    Par défaut
    Bonjour yoyo,

    Je viens de faire un test et SetFocus fonctionne chez moi

    essaye peut-être comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        TextBox1.SetFocus
        TextBox1.SelStart = Len(TextBox1.Text)

  4. #4
    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 heu.!!
    bonjour

    je viens de faire un test vite fait dans une boucle et ça fonctionne très bien
    c'est bien la dernière ligne qui est affichée


    joinr le fichier

    au plaisir
    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

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Merci pour vos réponses rapides,

    J'ai essayé vos deux solutions babaothe et tototiti2008, mais malheureusement, toujours le même souci.

    En fait, je pense que le problème vient du fait que ma macro ouvre d'autres documents pour travailler dedans en parallèle. Le textbox se rafraîchit mais ne montre que les premières lignes. Comme je l'ai dit, mon USF est non modal. Je vois mon USF car les autres documents dans lesquels il travaille sont invisibles.

    J'ai testé ta solution patricktoulon et en effet, cela fonctionne même en rendant le USF non modal. Je pense que c'est lors de la création d'autres documents que cela devient plus difficile à gérer pour Excel et qu'il n'arrive plus à indiquer la dernière ligne.

    Je continue à prospecter et vous tient au courant. Si entre-temps quelqu'un a une idée... Je suis preneur.

    Merci encore.

    J'ai réussi à isoler mon problème de façon très simple sur le fichier joint, en partant de la base proposée par patricktoulon.

    Cet exemple montre clairement mon problème, un toto s'affiche par seconde, et je ne vois que les 7 premiers... (le test dure 15 secondes). Laissez-vous guider par le nom des boutons et dites moi ce que vous en pensez.

    Merci encore pour le temps que vous passez sur mon problème.
    Fichiers attachés Fichiers attachés

  6. #6
    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 rer
    essai de remplacer ton textbox par une listbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
       Private Sub UserForm_Click()
    For i = 0 To 20
     
    ListBox1.AddItem "toto" & i
    ListBox1.ListIndex = i 
     
    Application.Wait (Now + TimeValue("0:00:1"))
     
    Next
    des que la ligne est ajoutée elle est sélectionnée

    beaucoup plus simple


    au plaisir
    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

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    re salut

    même avec sa textbox, mais à condition, pardi, de ne pas mettre à True, comme il l'a fait, la propriété HideSelection !

    allez : on va la forcer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton2_Click()
        UserForm1.TextBox1.HideSelection = False
        For i = 1 To 15
          ligne = "toto" & i
          UserForm1.TextBox1.SetFocus
          UserForm1.TextBox1.SelText = ligne & Chr(13)
          Interaction.DoEvents
          Application.Wait (Now + TimeValue("00:00:01"))
        Next
        UserForm1.TextBox1.HideSelection = True ' si c'est vraiment ce que tu veux !
    End Sub

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    En ce qui concerne ta remarque babaothe, la propriété HideSelection était bien à True dans mon fichier. J'ai tout de même fait le test que tu proposes mais cela ne fonctionne pas mieux. Dommage.

    Merci patricktoulon pour ta proposition mais je préfère garder un Textbox pour le post-traitement que je vais effectuer. Désolé. Cependant, j'ai fait un petit test avec une listbox et je me suis rendu compté d'un phénomène étrange. Lorsque j'insère une ListBox, même sans la remplir, le fait de faire UserForm1.ListBox1.SetFocus sélectionne à nouveau le USF, et le TextBox se comporte convenablement


    En fait, pour réellement voir le problème, avant de cliquer sur le deuxième bouton, cliquez ailleurs dans la feuille afin d'être sûr de désélectionner le USF. Si celui-ci est sélectionné, alors le TextBox se comporte bien.

    Je m'oriente donc vers la selection du USF, mais :

    UserForm1.Select n'existe pas
    UserForm1.Repaint ne mène à rien
    UserForm1.SetFocus ne fonctionne pas...

    Avez-vous une autre idée ? Au pire, une bidouille serait d'insérer une ListBox minuscule et d'en faire un ListBox1.SetFocus mais ca me paraît pas très classe.

  9. #9
    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
    rebonjour

    a tu essayé avec une listbox a la place


    il y au rai peut être une autre solution mais je n'en suis pas sur

    ça serais de faire appel a la macro de l'userform plutôt que de la mettre dans le click du bouton de la sheets

    je cherche cet exemple dans le forum et je te la donne

    a plus

    au plaisir
    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

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Points : 617
    Points
    617
    Par défaut
    Citation Envoyé par Yoyo57 Voir le message
    En ce qui concerne ta remarque babaothe, la propriété HideSelection était bien à True dans mon fichier.
    Justement (relis-moi)
    C'est à False, qu'elle doit être et non à True !)
    Pour ton info ; je viens d'ouvrir ton fichier, tel qu'il est.
    J'y ai mis le code que je t'ai proposé ===>> tout fonctionne bien !

  11. #11
    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
    babaothe a raison

    en effet en mettant UserForm1.TextBox1.HideSelection = false

    ça fonctionne parfaitement bien


    nickel babaothe !!!!

    au plaisir

    si ça ne fonctionne pas chez lui c'est qu'il a un sérieux problème avec le dlls d'origine de son pack office hihihihi
    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

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Oh j'ai honte !

    En effet, je me suis focalisé sur la dernière ligne de ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserForm1.TextBox1.HideSelection = True
    Sans voir la première qui était bien plus importante !

    Ca marche à présent, je teste sur le fichier d'origine, et ca fonctionne c'est super ! Merci encore

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

Discussions similaires

  1. Numéro de ligne courante
    Par antigone dans le forum Langage
    Réponses: 3
    Dernier message: 03/04/2006, 22h05
  2. [displaytag] Utilisation des valeurs de la ligne courante
    Par ADIDASman dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 24/11/2005, 13h43
  3. [ACCESS SQL] génération d'une valeur / ligne courante ?
    Par kikidrome dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/11/2005, 13h20
  4. Réponses: 3
    Dernier message: 27/09/2005, 08h44
  5. Ligne courante
    Par Mephyston dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/10/2003, 11h12

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