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 :

[VBA-E] pb positionnement en avant-plan d'une textbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut [VBA-E] pb positionnement en avant-plan d'une textbox
    Bonjour,
    J'utilise une flexgrid dont je souhaite changer les valeurs des cellules. pour cela je souhaite afficher une textbox sur la cellule que je veux modifier.
    Malgré l'utilisation de Zorder, ma textbox reste en arriere-plan ( donc non visibles sous la flexgrid).
    Quelqu'un a t'il une idée?
    Pour info voici mon 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
     
    Private Sub MSFlexGrid1_DblClick()
        With TextBox1
                    .Left = (MSFlexGrid1.CellLeft / 20 + MSFlexGrid1.Left)
                    .Height = (MSFlexGrid1.CellHeight / 20 + 5)
                    .Width = (MSFlexGrid1.CellWidth / 20)
                    .Top = (MSFlexGrid1.CellTop / 20 + MSFlexGrid1.Top - 20)
                    .Text = MSFlexGrid1.Text
        End With
     
        MSFlexGrid1.Text = TextBox1.Text
        TextBox1.Visible = True
        TextBox1.ZOrder 0
    End Sub

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    A moins que VBA n'ait des problèmes (ignorés de VB), je ne comprends pas !
    Tous mes essais, y compris les plus vicieux, provoquent avec VB l'apparition de la TextBox au 1er plan dès qu'un exécute Text1.zorder !...

    Une autre fois : avec VB
    Si VBA réagit comme VB , les explications possibles sont peu nombreuses :

    - un autre événement concommitent (mouseUp, Click, MouseMove) de la Flexgrid annule la propriété True de la TextBox ou son Zorder
    - (mais peu probable) un simple click est fait au lieu d'un double-click !

    Attendons donc qu'un possesseur de VBA teste et nous dise ce qu'il constate de son côté !

  3. #3
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je viens enfin de parvenir à provoquer cette erreur, ainsi :
    en mettant la textbox dans un autre container (Frame ou PictureBox) distinct de celui qui contient la Llexgrid !
    Si tu as fait cela, Bandit, le Zorder de la textbox se limitera au 1er plan de son container (et si celui-ci n'est pas, lui-même, au 1er plan sur la Form, il est normal que la Textbox ne puisse venir au 1er plan de la Form).

    Je parie à 1 contre 100 que c'est là ton erreur !
    Dis-nous ...et ne triches pas, hein ?

  4. #4
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    meme pas!!! C'est promis!!

    Par contre cela m'a donné une idée !! . Du coup j'ai mis ma text box dans une frame et j'ai appelé ma frame et la : miracle ca marche!!.
    Me frame se place bien devant ma flexgrid, je peux donc taper montexte et ensuite le recopier dans la cellule concernée.

    Ainsi ta provocation d'erreur, m'a donné la solution étonnant, non ?
    Pour ceux que cela interresse voila le petit bout de code concerné :
    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
     
     
    Private Sub MSFlexGrid1_DblClick()
        With Frame1
                    .Left = (MSFlexGrid1.CellLeft / 20 + MSFlexGrid1.Left)
                    .Height = (MSFlexGrid1.CellHeight / 20 + 15)
                    .Width = (MSFlexGrid1.CellWidth / 10)
                    .Top = (MSFlexGrid1.CellTop / 20 + MSFlexGrid1.Top)
                    .Caption = "modifier :"
        End With
        Frame1.TextBox1.Text = MSFlexGrid1.Text
        Frame1.Visible = True
    End Sub
     
    Private Sub TextBox1_Change()
        MSFlexGrid1.Text = Frame1.TextBox1.Text
    End Sub
     
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        If KeyCode = 13 Then Frame1.Visible = False 'appui sur entrée
    End Sub
    et voila
    a+

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

Discussions similaires

  1. Affichage en premier plan d'une TextBox
    Par molo2003 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 20/10/2007, 13h28
  2. [VBA-Excel]Tester le format du contenu d'une textbox
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/11/2006, 15h47
  3. Réponses: 6
    Dernier message: 07/06/2006, 12h41
  4. Comment faire pour qu'une Form reste en avant-plan?
    Par Bodom-Child dans le forum C++Builder
    Réponses: 3
    Dernier message: 25/08/2005, 10h28
  5. Mettre en avant plan une autre application...
    Par loupdeau dans le forum MFC
    Réponses: 13
    Dernier message: 19/05/2005, 13h26

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