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 :

Combobox haut en couleur juste et encore pour le fun


Sujet :

Macros et VBA Excel

  1. #1
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut Combobox haut en couleur juste et encore pour le fun
    Bonjour a tous
    Une demande a été faite récemment quand au fait de mettre en évidence par la couleur (back/font)le lignes ou colonne ou items d'un controls listbox
    la réponse est non bien évidement sauf utilisation des apis Windows et GDI un vrai carcans a décoder le code pour le non avertis
    d'autant plus que c'est pas toujours fonctionnels selon le PC (librairies inhibées et autres)

    Alors dans le même esprit que ma contribution sur le "un calendrier pour tous" je vous ai fait une combobox
    a savoir uniquement l'utilisation de controls basiques disponibles dans tout PCs ayant une installation d'office digne de ce nom
    le tout bien entendu comme le calendrier; dans une classe dynamique
    la particularité de cette pseudo combobox c'est qu'elle transmet l'index de selection(ligne/colonne) a l'évènement combobox original
    vous pouvez ainsi garder votre code initial des évènements dans l'userform moyennant de vider le tag en fin d'évènements comme dans la démo qui suit

    a lors voila nous y somme
    j'ai mis des commentaires partout ou il y en avait besoins pour ceux qui souhaiteraient décortiquer le code en essayant de l'aérer au plus possible

    code module classe nommé"combofake"
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    Option Explicit
    Public WithEvents framm As MSForms.Frame
    Public WithEvents formm As UserForm
    Public WithEvents dropp As MSForms.Image
    Public WithEvents selecté As MSForms.TextBox
    Public WithEvents labLt As MSForms.Label
    Public WithEvents combo As MSForms.ComboBox
    Private usf(100) As New combofake
    Function combocolor(comb, bicolorbyrow, Optional GriDline As Boolean = False, Optional GrildLineColor As Variant = vbBlack, Optional overcolor As Variant = vbCyan)
        Dim cW, ecW#, ecL#, Fram, Ssel, Drop, i#, col#, cc#, ccol#, cel, mabarre, bouton
        comb.Parent.Tag = overcolor    'memorisation de la couleur OVER dans tag du userform
        cW = Split(Replace(comb.ColumnWidths, " pt", ""), ";")    'columnwidths  de la combobobox originale vers un array
        'ajout de la frame
        Set Fram = comb.Parent.Controls.Add("Forms.Frame.1", "fond", True): Fram.Width = 100: Fram.Visible = False
        'ajout du textbox (combobox
        Set Ssel = comb.Parent.Controls.Add("Forms.textbox.1", "selectio", True)
        'ajout du bouton dropdown
        Set Drop = comb.Parent.Controls.Add("Forms.image.1", "drop", True)
        Drop.SpecialEffect = 1    'juste pour avoir le meme effet de bordure que l'original
        'placement des controls de base
        Ssel.Move comb.Left, comb.Top, comb.Width, comb.Height
        Drop.Move comb.Left + comb.Width - comb.Height, comb.Top + 1, comb.Height - 2, comb.Height - 2
        Fram.Move comb.Left, comb.Top + comb.Height, comb.Width, comb.Width
        'boucle sur la liste (ligne/colonnes)
        For i = 0 To comb.ListCount - 1
            ecL = IIf(GriDline, IIf(i > 0, 1 * i, 0), 0)    'on enleve 1*i pour que les borduretop et bottom se croisent (effet BORDERCOLLAPSE)
            ccol = 0
            For col = 0 To comb.ColumnCount - 1
                cc = cc + 1    'DECOMPTE pour alimenter les sousclasses(usf(1 a X)
                'ajout item(ligne/colonne)
                Set cel = Fram.Controls.Add("Forms.label.1", "Lig" & i & "Ligcol" & col, True)
                With cel
                    ecW = IIf(GriDline, IIf(col > 0, 1 * col, 0), 0)    'on enleve 1*i pour que les bordureright et left se croisent (effet BORDERCOLLAPSE)
                    .Caption = comb.List(i, col): .AutoSize = True: .Font.Size = comb.Font.Size:    'alimentation des propriétés
                    .BorderStyle = IIf(GriDline, 1, 0)    'bordure(gridline)
                    .BorderColor = IIf(GriDline, GrildLineColor, 0)    'couleur du gridline
                    .WordWrap = False: .Top = (.Height * i) - ecL:
                    'maintenant que l'on a le height on enleve le autosize et met le widh a la dimention des columnswidths
                    .Left = ccol - ecW: .AutoSize = False: .Width = cW(col):
                    .BackColor = IIf(i Mod 2 = 0, bicolorbyrow(1), bicolorbyrow(0)): .Tag = .BackColor    'memorisation du backcolor du label pour le rollOVER
                    'enregistrement des parties dans les sousclasses pour la gestion des evenements (click,move)
                    Set usf(cc).formm = comb.Parent: Set usf(cc).framm = Fram: Set usf(cc).combo = comb
                    Set usf(cc).dropp = Drop: Set usf(cc).labLt = cel: Set usf(cc).selecté = Ssel
                End With
                ccol = ccol + Val(cW(col))
            Next
        Next
        'dimentionnement (equivalent a listrows pour l'original)
        With Fram
            .Height = .Controls(1).Height * comb.ListRows + IIf(GriDline, 5, 15): .ScrollBars = 3:
        End With
        'du tunning encore du tunning l'icone du bouton dropdown
        '82,36,73
        On Error Resume Next
        CommandBars("temp").Delete
        With ActiveSheet.Shapes.AddShape(36, 10, 10, 10, 15): .Line.Visible = False: .Fill.ForeColor.RGB = (vbBlue): .Fill.Visible = True: .Copy: .Delete: End With
        Set mabarre = CommandBars.Add("temp", msoBarPopup, False, True): Set bouton = mabarre.Controls.Add(Type:=msoControlButton):
        bouton.PasteFace
        Drop.Picture = bouton.Picture
        On Error Resume Next
        CommandBars("temp").Delete
        comb.Visible = False
     
    End Function
    Private Sub dropp_Click()
        Dim the_next
        framm.Visible = True
        Set the_next = framm.Controls("Lig" & combo.ListCount - 1 & "Ligcol" & combo.ColumnCount - 1)
        'reglage des scrolls a l'identique  de l'originale
        framm.ScrollWidth = the_next.Left + the_next.Width
        framm.ScrollHeight = the_next.Top + the_next.Height
    End Sub
    Private Sub labLt_Click()
        formm.Controls(combo.Name).Tag = Split(labLt.Name, "col")(1)    'memorisation de l'index colonne dans le tag de la combobox originale
        formm.Controls(combo.Name).ListIndex = Split(labLt.Name, "Lig")(1)    'modification de la propriété listindex de la combobox originale
        selecté.Value = labLt.Caption    'le textbox de substitution du haut de la combobox prent la valeur de l'item cliqué(ligne/colonne)
        framm.Visible = False    'fermeture frame(imite le comportement de l'originale
    End Sub
     
    'effet mose OVER
    'vous trouverez ce principe dans quasi toutes mes contributions sur les userforms et ses controls
    'application de la couleur
    Private Sub labLt_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        If framm.Tag <> "" Then
            If framm.Tag <> labLt.Name Then
                framm.Controls(framm.Tag).BackColor = framm.Controls(framm.Tag).Tag
            End If
        End If
        framm.Tag = labLt.Name
        labLt.BackColor = formm.Controls(1).Parent.Tag
    End Sub
    'remise de la couleur initiale sur l'evenement frame et userform
    Private Sub framm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        If framm.Tag <> "" Then framm.Controls(framm.Tag).BackColor = framm.Controls(framm.Tag).Tag
    End Sub
    Private Sub formm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        If framm.Tag <> "" Then framm.Controls(framm.Tag).BackColor = framm.Controls(framm.Tag).Tag
    End Sub
    Private Sub formm_Click()
        framm.Visible = False 'fermeture de la fram(imite le comportement de l'originale)
    End Sub
    et voila un exemple d'utilisation
    dans le userform une combobox et un bouton
    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
     
    dim Cl as new combofake
    Private Sub ComboBox1_Change()
    t = "combobox1.listindex = " & ComboBox1.ListIndex & vbCrLf
    If ComboBox1.Tag <> "" Then t = t & "combobox1.columnIndex = " & ComboBox1.Tag
    MsgBox t
    ComboBox1.Tag = "" 'remise a zero(IMPORTANT!!!!!)
    End Sub
    Private Sub CommandButton1_Click()
    ' apel a la fonction de la creation de la pseudocombobox
    cL.combocolor ComboBox1, Array(&HC0FFFF, &HC0C0FF), True, vbGreen, vbRed
    End Sub
     
    Private Sub UserForm_Activate()
    Set plage = Range("A1:c20")
    ComboBox1.Font.Size = plage.Cells(1).Font.Size
    ComboBox1.ColumnCount = plage.Columns.Count
    ComboBox1.List = plage.Value
    For i = 1 To plage.Columns.Count
    cW = cW & plage.Columns(i).Width & IIf(i < plage.Columns.Count, " pt;", "")
    Next
    ComboBox1.ColumnWidths = cW
    End Sub
    une petite démo pour changer
    Nom : demo.gif
Affichages : 820
Taille : 1,10 Mo

    un petit bémol cependant
    la limite de lignes étant fixée par le maximum d'un height de la frame soit pour
    un font size de 12 =199 lignes soit un height de 10.8 points X 199 soit environ 2550 points
    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
      0  3

  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
    Mets toi à la place d'un utilisateur qui :
    créerait un userform avec ce que tu as écrit
    créerait un module de classe avec ce que tu as écrit
    Et lancerait --->> plantage assuré.

    Fais-le toi-même et tu constateras.

    Tu vois pourquoi, non ?
    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.
      0  1

  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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    heu non je vois pas je viens de le faire
    j'ai ouverts un nouveau classeur; copier tel quel les deux codes dans les modules adéquats(userform et classe )
    nommé le module classe "combofake"
    et lancer c'est nickel
    Nom : demo.gif
Affichages : 838
Taille : 648,6 Ko
    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
      0  2

  4. #4
    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
    heu non je vois pas je viens de le faire
    et lancer c'est nickel
    Ah bon ...
    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.
      1  1

  5. #5
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    je viens de me rendre compte que j'ai eu une méprise
    la limite n'est pas en terme de taille mais de nombre de controls: 597 chez moi 199 lignes sur 3 colonnes
    j'ai testé avec un font de 18 et 8 c'est pareil toujours 199 lignes
    il faudra donc imposer une limite
    il nous faut donc 601 sousclasse pour les cellules et les 54 control + userform inclus dans la classe
    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
      0  1

  6. #6
    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 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Bonjour tout le monde,

    Citation Envoyé par unparia Voir le message
    Mets toi à la place d'un utilisateur qui :
    créerait un userform avec ce que tu as écrit
    créerait un module de classe avec ce que tu as écrit
    Et lancerait --->> plantage assuré.
    En effet, je confirme.
    L'Option Explicit dans l'UserForm serait un bon début, et puis ou déclarer l'instance de Classe cL? Module? UserForm?

    Ensuite, pourquoi créer autant de labels que de lignes et colonnes?
    Limite l'affichage à 8 ou 10 lignes (comme dans une vraie combobox) et ne créées qu'autant de Labels.
    Il te faudra, pour cela, à minima un contrôle supplémentaire, natif également, tu vois sans nul doute lequel .
    Cordialement,
    Franck
      1  1

  7. #7
    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 Franck
    Comme patricktoulon a assuré sans sourciller ceci :
    heu non je vois pas je viens de le faire
    j'ai ouverts un nouveau classeur; copier tel quel les deux codes dans les modules adéquats(userform et classe )
    nommé le module classe "combofake"
    et lancer c'est nickel
    j'ai préféré attendre qu'il le fasse réellement (ce qu'il n'avait bien évidemment pas fait contrairement à ce qu'il affirmait) ... et me suis donc tu en ce qui concerne l'utilisation de son Cl.
    Il est surprenant que d'autres visiteurs ne se soient pas encore manifestés.
    On va attendre que patricktoulon se réveille et complète comme il se doit ...
    Amitiés
    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.
      0  1

  8. #8
    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 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Bonjour Jacques,

    Citation Envoyé par unparia Voir le message
    On va attendre que patricktoulon se réveille et complète comme il se doit ...
    Et il y a encore du travail...
    Ne serait ce que pour cet horrible barre de défilement horizontale !
    Cordialement,
    Franck
      0  1

  9. #9
    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
    Et il y a encore du travail...
    Bien évidemment (et je le lui avais annoncé dans une autre discussion)
    Ne serait ce que pour cet horrible barre de défilement horizontale
    Et du sport, en ce qui concerne cet aspect
    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.
      0  1

  10. #10
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    j'ai préféré attendre qu'il le fasse réellement (ce qu'il n'avait bien évidemment pas fait contrairement à ce qu'il affirmait)
    et la capture livrée avec ca prouve pas que je l'ai fait
    si il y a une chose que l'on ne peut dire sur moi c'est que je soit un menteur
    si je te dis que je l'ai fait je l'ai fait
    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
      0  2

  11. #11
    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
    si je te dis que je l'ai fait je l'ai fait
    Que nenni. Tu n'as pas fait cela :
    Mets toi à la place d'un utilisateur qui :
    créerait un userform avec ce que tu as écrit
    créerait un module de classe avec ce que tu as écrit
    Fais-le ! ET AINSI ! (Comme le ferait donc tout visiteur)

    PS : ce n'est pas moi, qui t'ai mis un pouce rouge... (un visiteur qui s'est "cassé les dents" , très probablement )
    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.
      0  1

  12. #12
    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 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Bonjour Patrick,
    Citation Envoyé par patricktoulon Voir le message
    si je te dis que je l'ai fait je l'ai fait
    Moi aussi, et cela ne fonctionne pas.
    Il manque apparemment une variable...

    Bref, pas de polémique inutile.
    Il y a toutefois quelques manquements (une fois l'erreur réparée).
    La barre de défilement horizontale n'en est qu'une parmi tout le reste.
    Cependant, avant de te pencher sur ces aspects, il convient d'étudier ma remarque de 10h27 sur le nombre de Labels et donc la suppression de la limite que tu te fixes : 199 lignes.
    Tu peux faire en sorte de ne plus avoir de limite, aucune!
    Ca me semble le premier pas à faire.

    EDIT :
    Citation Envoyé par unparia
    PS : ce n'est pas moi, qui t'ai mis un pouce rouge...
    Euh non non... C'est moi.
    Cordialement,
    Franck
      0  1

  13. #13
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    la barre horizontal??????
    si vous parlez de la scrolls H mettez 2 a la place de 3 et elle y sera plus

    dans cette capture j'ai fait en sorte que l'on vois bien l'original et le fake
    Nom : demo.gif
Affichages : 848
Taille : 639,8 Ko
    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
      0  2

  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 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    la barre horizontal??????
    si vous parlez de la scrolls H mettez 2 a la place de 3 et elle y sera plus
    Se serait bien que cette barre soit dynamique, qu'elle ne s'affiche que si elle est utile.
    Mais laissons cet aspect pour plus tard.

    J'ai essayé ton code avec une combobox de 4000 et quelques lignes.
    Cela se produit souvent, voire d'en avoir même de plus importante.

    Evidemment, ton code ne peux pas prendre en charge un nombre de lignes aussi important.

    Pourrait-on faire en sorte que cela devienne possible avant de gérer les 4-5 petits défauts?
    Cordialement,
    Franck
      0  1

  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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    Cependant, avant de te pencher sur ces aspects, il convient d'étudier ma remarque de 10h27 sur le nombre de Labels et donc la suppression de la limite que tu te fixes : 199 lignes.
    h

    euh......
    dans ma démarche entendons nous bien je veux bien chaque colonnes séparées 3 colonne = 3 cellules
    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
      0  1

  16. #16
    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 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Euh...
    Je ne t'ai pas parlé de colonnes, mais bien de lignes.

    Comment pourrait-on faire en sorte d'obtenir, par exemple, une combobox "colorée" de 2500 lignes et 5 colonnes ?
    Simplement :
    1. En choisissant arbitrairement un nombre de lignes à afficher (8 ou 10)
    2. en ne plaçant, dans le Frame, que et uniquement que le nombre de Labels nécessaires à l'affichage de ces 8-10 lignes
    3. changer le caption de ces Label à chaque clic de scroll pour afficher les valeurs suivantes/précédentes
    4. éventuellement (esthétique) changer la couleur des labels à chaque clic de scroll
    Cordialement,
    Franck
      0  1

  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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    je vais regarder pour la scroll dynamique la combo original n'ayant pas cette propriété il va falloir ajouter un calcul de la somme du columnwidths j'y avais déjà pensé

    pour le nombre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private usf(601) As New combofake
    tu peux en mettre plus mais il ne seront pas affiché j'ai testé il y a vraiment une limite avec la frame
    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
      0  1

  18. #18
    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 948
    Points
    2 948
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    tu peux en mettre plus mais il ne seront pas affiché j'ai testé il y a vraiment une limite avec la frame
    C'est possible en révisant la conception.

    Simplement :
    1. En choisissant arbitrairement un nombre de lignes à afficher (8 ou 10)
    2. en ne plaçant, dans le Frame, que et uniquement que le nombre de Labels nécessaires à l'affichage de ces 8-10 lignes
    3. changer le caption de ces Label à chaque clic de scroll pour afficher les valeurs suivantes/précédentes
    4. éventuellement (esthétique) changer la couleur des labels à chaque clic de scroll
    Cordialement,
    Franck
      0  1

  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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    oui c'est une idée je vais creuser la question bien que le seul clik me gène, je préfèrerais aussi avoir le curseur de scroll mais sous cette forme ca me parait difficile

    en attendant pour la scroll H tout simplement
    dans le with fram
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Fram
            .Height = .Controls(1).Height * comb.ListRows + IIf(GriDline, 5, 15): .ScrollBars = IIf(ccol > comb.Width - 10, 3, 2)
        End With
    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
      0  1

  20. #20
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    bon j'ai vite fait une petite maquette en fonction de ton idéee
    je n'en suis qu'au debut et on a déjà un soucis avec le scroll de la frame il va falloir ajouter un control scrollbar que je puisse paramétrer la longueur et le pas avec la scroll de la frame cela n'étant pas possible
    mais je vais aller jusqu'au bout de ton idéee
    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
      0  1

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/01/2012, 17h31
  2. [swing] contenu d'un combobox en différentes couleurs
    Par d_token dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 27/07/2006, 12h54
  3. Besoin d'aide encore pour debugger mon programme
    Par jfjava2002 dans le forum C
    Réponses: 9
    Dernier message: 27/12/2005, 13h13
  4. Réponses: 1
    Dernier message: 07/12/2005, 16h21
  5. MS DOS en à t-il encore pour longtemps ?
    Par Furius dans le forum Windows
    Réponses: 16
    Dernier message: 12/09/2005, 17h22

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