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 :

Comment modifier la largeur de la zone de déroulement d'une ComboBox ? [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut Comment modifier la largeur de la zone de déroulement d'une ComboBox ?
    Bonjour,

    Sauf erreur de ma part je ne trouve pas la solution sur le forum pour coder sous excel la modification de largeur de la zone de déroulement.

    J'ai bien trouvé ce lien
    http://vb.developpez.com/faq/?page=Controles#combo_larg
    mais il ne fonctionne pas et le code est censé être mis sur Form.load qui n'existe que pour access non? L'équivalent pourrait être Form.initialize mais ça ne fonctionne pas mieux

    Est-ce possible sous Excel ou non?

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 099
    Points : 9 898
    Points
    9 898
    Billets dans le blog
    5
    Par défaut
    bonjour,

    tu as eu les bon réflexes : FAQ + tentative qui était sur la bonne piste

    essaye ça

    j'ai crée un userform et mis un combobox
    j'ai volontairement réduit le combobox pour qu'il soit minuscule
    et j'ai ajouté ça dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub UserForm_Initialize()
     
    Me.ComboBox1.Width = 200
     
    End Sub

    Résultat : ma combobox toute petite quand je suis dans l'éditeur VBA, apparaît beaucoup plus grosse quand l'userform s'affiche

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    Merci joe.levrai pour ton aide,

    Par contre je me suis peut-être mal exprimé :

    je souhaite conserver la largeur du combobox sur le formulaire, mais modifier la largeur de la liste déroulante uniquement lors de la sélection. Le top serait d'adapter la largeur à l'item le plus grand

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 099
    Points : 9 898
    Points
    9 898
    Billets dans le blog
    5
    Par défaut
    Y'a pas de mal

    du coup, c'est pas la propriété Width à utiliser, mais la propriété ListRows

    par défaut, c'est 8, ce qui permet d'afficher 8 items quand tu déplies ton combobox

    pour passer à 10 par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub UserForm_Initialize()
     
    Me.ComboBox1.ListRows = 10
     
    End Sub

    Si tu veux adapter à l'item le plus grand, fais quand même attention à ne pas dépasser la capacité d'affichage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub UserForm_Initialize()
     
    With Me
        .ComboBox1.ListRows =  .ComboBox1.ListCount
    End With
     
    End Sub

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    En fait je crois que l'on se comprend pas

    Les infos que vous me transmettez correspondent au nombre de ligne de la zone de liste.

    Or il s'agit bien de la largeur que je souhaite modifier, mais pas celle du combo en lui-même sur l'userform, mais uniquement celle de la liste déroulante sur l’événement "Enter".
    Après sélection d'un item je souhaite qu'elle retrouve la taille initiale.

    Alors effectivement je peux envisager de modifier la taille sur "enter" du combobox, puis après sélection sur "exit". Dans ce cas le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ComboBox1.Width = 200
    pourra m'aider mais la question était peut-on conserver la largueur du contrôle et uniquement "agrandir la zone de déroulement le temps de sélectionner un item.

    Merci d'avance.

  6. #6
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 099
    Points : 9 898
    Points
    9 898
    Billets dans le blog
    5
    Par défaut
    on s'est pas compris en effet, mais là ça devrait être bon ?
    (au moins, on aura révisé les classiques !)

    Allez je tente !

    Donc, quand tu sélectionnes un item de ta combobox, tu veux que la taille de la combobox s'ajuste à la taille de l'item qu'on a sélectionné ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub ComboBox1_Change()
     
    With Me.ComboBox1
     
        .Width = Len(.Value) * 4 + 40
     
    End With
     
     
    End Sub
    J'ai pas optimisé le dimensionnement, je te laisse ajuster


    Ps : si au final c'est uniquement la "zone blanche" qui contient tes items que tu veux dimensionner, faut te tourner vers la propriété ListWidth à redimensionner
    Là je dois partir, désolé

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    Super merci beaucoup joe.levrai c'était bien ce que je voulais en voici le code pour la postérité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Combo1_Enter()
    Dim I As Integer
    Dim J As Integer
    J = Me.Combo1.Width/4 -10
    For I = 0 To Me.Combo1.ListCount - 1
        If Len(Me.Combo1.List(I)) > J Then
            J = Len(Me.Combo1.List(I))
            Me.Combo1.ListWidth = Len(Me.Combo1.List(I)) * 4 + 10
        End If
    Next I
    End Sub
    Merci encore et bon week-end!

  8. #8
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 099
    Points : 9 898
    Points
    9 898
    Billets dans le blog
    5
    Par défaut
    Ca y est, on a réussi

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 28
    Points : 15
    Points
    15
    Par défaut
    C'est clair ça fais trop plaisir de le résoudre
    va juste falloir que je m'améliore sur mes explications
    Bonne journée à toi

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

Discussions similaires

  1. [TBarSeries] Comment modifier la largeur de chaque barre ?
    Par Vodkha dans le forum Composants VCL
    Réponses: 3
    Dernier message: 24/11/2009, 15h40
  2. [TDbGrid] Comment modifier la largeur des colonnes ?
    Par colorid dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/11/2005, 18h47
  3. [INPUT TYPE=SUBMIT] Comment modifier la largeur d'1 bouton
    Par Kylen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 10/08/2005, 12h27

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