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 textbox objet


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Points : 87
    Points
    87
    Par défaut Userform textbox objet
    Bonjour à tous,

    Voilà je cherche à générer un objet "textbox" automatiquement après avoir cliqué sur un bouton,

    et cela doit se faire à l'infini sans limite.

    J'ai bien trouver un tuto sur ce site:

    http://silkyroad.developpez.com/VBA/VisualBasicEditor/

    mais il me fait passer par un module de classe,

    Alors que moi je souhaite que mon code soit contenu dans l'userform voir dans dans un module standard.

    Avez-vous une idée svp ?

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour

    Alors que moi je souhaite que mon code soit contenu dans l'userform voir dans dans un module standard
    Tu peux toujours ajouter dynamiquement un contrôle activex.
    En utiliser les évènements ne sera par contre pas possible comme tu l'entends (sans module de classe).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    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
    bonsoir
    ou alors ajouter ton textbox et écrire dynamiquement le code de son évènement mais c'est un truc de fou si ca doit se répéter indéfiniment donc module classe

    apres tu peut ecrire le code de ta classe en commentaire dans le code de ton userform et le réimplanter dans un module classe dynamiquement

    j'avais fait cela pour un demandeur il y a pas mal de temps mais on devrait pouvoir retrouver la discussions
    l'intérêt de cette méthode et d'avoir un module userform transportable
    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

  4. #4
    Membre régulier
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Points : 87
    Points
    87
    Par défaut Probable somution
    J'ai trouvé un petit bout de code sur ce lien:

    http://silkyroad.developpez.com/VBA/UserForm/#LIV-H

    Qu'en pensez-vous ?

    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 CommandButton1_Click()
        Dim Obj As Control
     
        Set Obj = Me.Controls.Add("forms.Textbox.1")
        With Obj
            .Name = "monTextBox"
            .Left = 140
            .Top = 30
            .Width = 50
            .Height = 20
        End With
     
        MsgBox Obj.Name & " ajouté dans l'UserForm."
    End Sub
    Cela ne résout pas tout le problème mais il permet d'avancer un peu non ?

    Problème, j'ai l'impression qu'il crée les textbox les uns sur les autres et non au dessous dans ma combobox,

    Donc à chaque fois qu'un textbox est crée, il cache le précedent.

    Avez-vous une piste pour remédier à ça ?

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Donc à chaque fois qu'un textbox est crée, il cache le précedent.
    Et tu t'en étonnes ? Vraiment ?
    Rien d'étonnant puisque tu donnes les mêmes propriétés de positionnement (140, 30, 50,20) à chacun d'eux ! Ils se trouvent tous au même endroit et avec les mêmes dimensions.

    Une piste pour y remédier ? --->> un compteur de positionnement, soit vertical, soit horizontal, selon ce que tu cherches à faire.
    Cela ne résout pas tout le problème mais il permet d'avancer un peu non ?
    Pas vraiment. Tu te retrouves avec des textboxes sans vraiment pouvoir les utiliser totalement.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Voici une piste avec un module de classe pour la gestion des évènements (ici, pour l'exemple, un seul, l'évènement "Change()" ).

    Le code ci-dessous est à mettre dans le module du formulaire et les variables doivent être en tête de module :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    Dim Txt() As New Classe1
    Dim Haut As Long
    Dim I As Long
     
    Private Sub CommandButton1_Click()
     
        Dim Obj As Control
        Dim MargeH As Integer
        Dim MargeG As Integer
        Dim H As Integer
        Dim L As Integer
        Dim Larg As Integer
     
        MargeH = 10 'espace entre contrôles
        MargeG = ComboBox1.Left 'idem ComboBox
     
        H = ComboBox1.Height 'idem ComboBox
        L = ComboBox1.Width 'idem ComboBox
     
        'si pas encore initialisé
        If Haut = 0 Then Haut = ComboBox1.Top
     
        'céation du contrôle ActiveX
        Set Obj = Me.Controls.Add("forms.Textbox.1")
     
        'calcul du top
        Haut = Haut + H + MargeH
     
        'positionnement
        With Obj
     
            .Left = MargeG
            .Top = Haut
            .Width = L
            .Height = H
     
        End With
     
        'ajout dans le tableau pour la gestion des évènements
        I = I + 1
        ReDim Preserve Txt(1 To I)
        Set Txt(I).GroupeTxt = Obj
     
        'ajout de la barre verticale sur la Form
        Me.ScrollBars = fmScrollBarsVertical
        Me.ScrollHeight = Haut
     
    End Sub
    et celui-ci est à mettre dans un module de classe nommé Classe1 (nom par défaut !) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public WithEvents GroupeTxt As MSForms.TextBox
     
    Private Sub GroupeTxt_Change()
     
        'ici, créer le code nécessaire pour ton utilisation...
     
        'pour le test...
        MsgBox "Le TextBox porte le nom '" & GroupeTxt.Name & "' et sa valeur est : " & GroupeTxt.Text
     
    End Sub
    Les TextBox que tu va créer dynamiquement vont se positionner les uns sous les autres et alignés à ton ComboBox nommé "ComboBox1" (adapter dans le code si différent !) et de même taille.
    Pour l'évènement "Change()" et pour le test, quand tu vas entrer une valeur dans un des TextBox, une boite de message va apparaître et te donner le nom du TextBox et le texte qu'il contient

  7. #7
    Membre régulier
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Points : 87
    Points
    87
    Par défaut
    Merci pour cette réponse mais je me rend compte que je ne peux pas utiliser de combobox,

    Je voulais tout faire à l'intérieur mais c'est assez compliqué et inaproprié.

    je voudrai créer 5 textbox de même taille les uns à coté des autre dans un frame

    et au click d'un CommandButton1 cinq nouveau textbox se crée juste en dessous avec les mêmes dimensions que ceux du dessus.

    Cela créerai plusierus étages de textbox à chaque click et je positionnerai le CommandButton1 au niveau de l'étage le plus bas.

    vous avez des pistes svp pour ce truc assez complexe je pense ?

  8. #8
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Re,

    Je regarde demain matin si j'ai le temps pour te pondre un squelette de ce que tu as besoin !

  9. #9
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Donc voici les TextBox dans un cadre nommé Frame1 (nom par défaut) avec cinq par ligne à chaque clic sur le bouton "CommandButton1" :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    Dim Txt() As New Classe1
    Dim Haut As Long
    Dim I As Long
     
    Private Sub CommandButton1_Click()
     
        Dim Obj As Control
        Dim MargeH As Integer
        Dim MargeG As Integer
        Dim Gauche As Integer
        Dim H As Integer
        Dim L As Integer
        Dim Larg As Integer
        Dim J As Integer
     
        MargeH = 10 'espace entre contrôles
        MargeG = MargeH
     
        H = 20
        L = 100
     
        'calcul du top
        If Haut = 0 Then Haut = MargeH Else Haut = Haut + H + MargeH
     
        For J = 1 To 5
     
            'céation du contrôle ActiveX
            Set Obj = Me.Frame1.Controls.Add("forms.Textbox.1")
     
            'si début de ligne
            If J = 1 Then Gauche = MargeG
     
            'positionnement
            With Obj
     
                .Left = MargeG
                .Top = Haut
                .Width = L
                .Height = H
     
            End With
     
            'pour le déplacement vers la droite
            MargeG = MargeG + L + MargeH
     
            'ajout dans le tableau pour la gestion des évènements
            I = I + 1
            ReDim Preserve Txt(1 To I)
            Set Txt(I).GroupeTxt = Obj
     
        Next J
     
        With Frame1
     
            .ScrollBars = 2
            .ScrollHeight = Haut + MargeH + H
     
        End With
     
    End Sub

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par manufer Voir le message

    Voilà je cherche à générer un objet "textbox" automatiquement après avoir cliqué sur un bouton,

    et cela doit se faire à l'infini sans limite.
    A un moment tu vas quand même être limité par la taille de ton UserForm, je ne vois pas l'intérêt de ta démarche.

    Philippe

  11. #11
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour Philippe,

    Avec la ScrollBar verticale il aura accès à tous les TextBox (testé sur 100 lignes donc 500 TextBox) mais selon le nombre la gestion va être super coton !!!

  12. #12
    Membre régulier
    Homme Profil pro
    gestion
    Inscrit en
    Mai 2017
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : gestion

    Informations forums :
    Inscription : Mai 2017
    Messages : 163
    Points : 87
    Points
    87
    Par défaut
    Salut Theze,

    J'essaie ça tout de suite Merci beaucoup.

    Salut Philippe,

    Je pense que je vais largement dépasser le millier et cela me permet de ne pas avoir de limite définit.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par manufer Voir le message

    Salut Philippe,

    Je pense que je vais largement dépasser le millier et cela me permet de ne pas avoir de limite définit.
    Je pense que tu devrais revoir ta stratégie et expliquer pourquoi tu veux faire cela, car avec ce nombre de contrôle et suivant ce que tu veux en faire cela risque de ramer sérieusement.

    Philippe

  14. #14
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    @Philippe JOCHMANS :
    Je pense que tu devrais revoir ta stratégie et expliquer pourquoi tu veux faire cela
    D'autant plus qu'avec 5 textbox et 5 listbox (par exemple), voir juste avec 5 combobox selon ce que l'on veux faire, tu fais largement le taf...
    Cordialement,
    Franck

  15. #15
    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
    Bonjour a tous
    salut Franck on a eu la même idée

    pourrais tu me dire comment et/ou si c'est possible de laisser un control (label/textbox) apparent sur une listbox jusqu'à présent j'ai toujours penser cela impossible
    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

  16. #16
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    voir juste avec 5 combobox selon ce que l'on veux faire, tu fais largement le taf...
    est ta réponse, Patrick.
    Une combobox n'est rien d'autre que l'association d'une zone d'édition et d'une listbox.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  17. #17
    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
    bonjour jacques
    ca repond pas vraioment a ma question
    j'ai tres bien compris le procédé de Franck

    je veux seulement savoir si c'est possible d'une manière ou d'une autre

    d'ailleurs perso pour m'amuser j'en ai fait un avec seulement 1 !!! listbox dans la quelle je peux écrire/modifier dans une colonne ou l'autre sur n'importe quelle ligne (touche enter/bouton )pour ajouter une ligne
    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

  18. #18
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une combobox n'est rien d'autre que l'association d'une zone d'édition et d'une listbox.
    Tout à fait et pour afficher le bouton sur la TextBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TextBox1.ShowDropButtonWhen = 2
    puis il suffit d'utiliser l'évènement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub TextBox1_DropButtonClick()
    '...
    End Sub

  19. #19
    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
    j'ai encore simplifié mon delire avec ma listbox

    voila ce que ca donne

    1. touche ENTER > ajoute une ligne
    2. touche tab(9) et flèche droit(39) et flèche gauche(37) déplace la sélection de colonne
    3. la touche back(8) supprime le dernier caractères
    4. le mouse move et down vous indique avec( le guide rougelabel) la colonne ou vous vous trouvez


    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Option Explicit
    Dim plusHligne
    Const widthcolonne = "50 pt;100 pt;120 pt;60 pt;80 pt"
    ' donc pour les left colonnes c'est  0,50,150,250,310
    Dim colwidth
    Dim actiVcoL
    Dim colleft()
    Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
       Dim Mot$
        With ListBox1
            Select Case KeyCode
            Case 8
                KeyCode = 0
                Mot = .List(.ListIndex, actiVcoL): .List(.ListIndex, actiVcoL) = Mid(Mot, 1, Len(Mot) - 1)
            Case 9, 39
                KeyCode = 0
                If actiVcoL = 4 Then Exit Sub
                actiVcoL = actiVcoL + 1: repere.Left = .Left + colleft(actiVcoL): repere.Width = colwidth(actiVcoL)
     
            Case 37
     
             KeyCode = 0
                If actiVcoL = 0 Then Exit Sub
                actiVcoL = actiVcoL - 1
                repere.Left = .Left + colleft(actiVcoL): repere.Width = colwidth(actiVcoL)
     
            Case 13
                KeyCode = 0: .AddItem: .Height = IIf(.ListCount * (.Font.Size * 1.25) > 205, 205, .Height + plusHligne)
                .ListIndex = .ListCount - 1
            End Select
        End With
    End Sub
    Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
        With ListBox1
            .List(.ListIndex, actiVcoL) = .List(.ListIndex, actiVcoL) & Chr(KeyAscii)
        End With
    End Sub
    Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
      Dim i#
        For i = 0 To UBound(colleft)
            If X > colleft(i) Then repere.Left = ListBox1.Left + colleft(i): repere.Width = colwidth(i): actiVcoL = i
        Next
        repere.Caption = "Colonne " & actiVcoL
     End Sub
    Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
     Dim i#
        For i = 0 To UBound(colleft)
            If X > colleft(i) Then repere.Left = ListBox1.Left + colleft(i): repere.Width = colwidth(i): actiVcoL = i
        Next
        repere.Caption = "Colonne " & actiVcoL
    End Sub
    Private Sub UserForm_Activate()
        Dim i#, X#
        colwidth = Split(Replace(widthcolonne, " pt", ""), ";")    ' tableau des largeur des colonnes de la listbox
        ReDim colleft(UBound(colwidth)): colleft(0) = 0
        For i = 1 To UBound(colwidth): X = X + Val(colwidth(i - 1)): colleft(i) = X: Next    ' memorisation des left colonnes pour le guide rouge
        With ListBox1: .ColumnCount = 5: .AddItem: .ColumnWidths = widthcolonne: plusHligne = .Font.Size * 1.25: End With
    End Sub
    vous pouvez a tout momment revenir sur une ligne et la modifier
    la ou se trouve le guide rouge c'est la colonne ou vous vous trouvez et vous taper le texte

    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

  20. #20
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,
    Pour te répondre honnêtement, Patrick, tout ceci est possible juste avec une listbox et un textbox et quelques autres controles simples (scrollbar et frame).
    Jacques et moi l'avons réalisé par le passé, seulement ce procédé ne peut pas être dévoilé au grand public car il comporte un composant secret de chez Microsoft.
    Cependant, ce que je propose ici c'est d'aligner 5 textbox en ligne avec dessous une listbox comportant 5 colonnes, alimentée au fur et à mesure des saisies des textbox.
    Quelque chose de très simple au final...
    Cordialement,
    Franck

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. UserForm, TextBox & Controle de saisie
    Par wipMan dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 26/06/2013, 11h35
  2. [XL-2010] userform multipage objet
    Par pilounet54 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/08/2012, 08h21
  3. [XL-2010] blocage du userform textbox
    Par tompom3108 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/04/2012, 15h56
  4. userform --> textbox valeur par défaut changeante
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/03/2008, 09h21
  5. [VBA-E] userform TextBox
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/03/2006, 09h18

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