Largeur liste déroulante sous Excel

[Fermé]
Signaler
Messages postés
774
Date d'inscription
dimanche 28 septembre 2008
Statut
Membre
Dernière intervention
3 mars 2021
-
Messages postés
3
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
5 mars 2015
-
Bonjour,

Le question est déjà passée sur le forum mais je la repose avec quelques détails sur mon problème :
- j'ai une colonne de largeur réduite dans laquelle les utilisateurs iront sélectionner via liste déroulante un code de un caractère ; jusque là tout va bien.
- en haut de cette colonne, je veux que les utilisateurs puissent choisir un titre, via une autre liste déroulante. Ce titre a une largeur bien supérieure à un caractère, aussi l'affichage est il paramétré en vertical.
> problème : lorsque l'utilisateur veut choisir son titre dans la liste, celle-ci fait la largeur de la colonne et cette largeur réduite ne lui permet pas de visualiser les titres proposés. A un moment, un collègue a trouvé un paramètre d'affichage pour avoir une largeur plus importante mais nous avons perdu cette option et impossible de retrouver où elle se trouverait.
Rem : en fait j'ai de nombreuses colonnes juxtaposées avec ce même usage, aussi augmenter la largeur de colonne est la dernière solution envisagée

Merci d'avance de vos réponses.

11 réponses

Messages postés
17537
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
17 septembre 2021
4 725
Salut,

Il est dommage de relancer cette discussion ancienne, question pertinente de nombreuse fois évoquée.
Il existe une solution pour créer des listes de validation avec une largeur supérieure à la largeur colonne

Il faut impérativement créer la liste de validation la plus large en premier

1) la liste de validation prend la largeur de la cellule lors de sa création c'est à ce moment qu'il faut augmenter la largeur colonne ce qui conditionnera la largeur de la liste déroulante.

IL EST IMPORTANT D'ENREGISTRER LE FICHIER A CE STADE

2) si on augmente la largeur de la colonne la liste de validation suit

3) par contre si on réduit la largeur de la colonne la largeur de la liste de validation aura pour limite la largeur de la création

Cette technique découverte par hasard en 2008, fonctionne sur les versions 2000, 2003 sous 2007 et 2010 enregistrer le fichier sous l'ancienne extension .xls (classeur Excel 97-2003(*.xls)

Si tu veux un exemple fais signe
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
8
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
3
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
5 mars 2015

Merci Mike-31, la technique fonctionne très bien.

Je tiens seulement à souligner deux points sur lesquels j'ai accroché après la lecture de ton post :
-Cette technique fonctionne "feuille par feuille". Alors pour chacune des feuilles avec liste déroulante, il faut s'assurer de créer la liste avec la plus grande largeur de choix en premier.
-Il faut bien comprendre que cette technique ne fonctionne que sous le format *.XLS. Ainsi, je suggère fortement à l'utilisateur de créer le classeur dès le départ en *.XLS, cela évitera des frustrations...
Messages postés
24178
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2021
6 884
Bonjour,

un collègue a trouvé un paramètre d'affichage pour avoir une largeur plus importante
Jamais vu ça... Pour moi la largeur est celle de la cellule.

Mais tu peux utiliser un autre type de liste déroulante.
- 'Affichage / barre d'outils' cocher 'boite à outils contrôles'
- sélectionner 'liste déroulante' et la dessiner sur la feuille
- celle-ci étant sélectionnée clic-droit dessus et choisir 'propriétés'
- LinkedCell : référence de la cellule recevant la sélection, par exemple B2
- ListFillRange : référence de la plage ayant la liste, par exemple G2:G9
- désactiver le mode création en cliquant sur l'icone 'equerre-regle-crayon'. Le réactiver si tu veux modifier l'emplacement ou la taille de la liste.

eric
Bonjour,

j'avais la même question et cette réponse est un premier élément.

cependant, comment paramétrer le contrôle activex pour qu'il ne prenne sa largeur totale que quand on le sélectionne. le reste du temps je souhaiterais qu'il reste de la taille de la colonne


en espérant être clair
merci
Je viens de regarder ton fichier. Il me faudrait exactement ce que tu as en feuille F1. une liste qui reste de largeur constante supérieure à celle de la colonne.
Messages postés
26182
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 septembre 2021
6 052
Oui c'est bien ce que j'avais compris, mais je suis incapable de déceler pourquoi ça marche en F1 et pas en F2
il n' y a que sur F1que ça fonctionne, et le formatage est le même?????
Désolé, je continu à chercher :-)(
Messages postés
24178
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2021
6 884
Salut vaucluse,

Très interessant ton fichier :-)
Tu as fais des manip spéciales sur F1 ?
Et arrives-tu à reproduire ce 'défaut' ? ;-)
eric
Messages postés
26182
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 septembre 2021
6 052
je ne sais pas ce que j'ai fait comme manip sur F1, je me sers de ce fichier à la base pour valider ce que je propose sur CCM, un peu dans tous les sens et tous les formats
Il n'y a que sur cette feuille que ça marche, et de plus le menu garde la même largeur quelque soit la colonne de référence ou celle d'édition.
Si tu trouves, ne manque pas de nous prévenir!!!
bien amicalement
Messages postés
24178
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2021
6 884
Si tu trouves, ne manque pas de nous prévenir!!!
C'est fait à 18:15 en bas ;-)
Messages postés
24178
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2021
6 884
Re,

Tu pourrais faire comme ça :
Private Sub ComboBox1_DropButtonClick()
    ComboBox1.Width = 120
End Sub
Private Sub ComboBox1_LostFocus()
        ComboBox1.Width = 60
End Sub


eric
Messages postés
3
Date d'inscription
dimanche 5 juin 2011
Statut
Membre
Dernière intervention
2 juillet 2011
8
Merci Mike-31,

Et désolé pour ce réveil de post. La procédure que tu expliques fonctionne bien, mais est instable dans mon programme. La liste reprend la largeur de la colonne constamment sans que mes utilisateurs puissent dire ce qu'ils ont fait exactement pour que cela arrive. Je passe mon temps à rétablir la situation avec cette procédure, c'est un peu pénible.

Promis si je ne trouve pas la solution, j'ouvre un nouveau post pour appeler à l'aide.
Merci
Bien cordialement
Kostrovit
Messages postés
3
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
5 mars 2015

J'avais le même problème, jusqu'à temps que je lise correctement le post de Mike-31 sur le fait que le format doit être .XLS
Messages postés
3
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
5 mars 2015
>
Messages postés
3
Date d'inscription
jeudi 5 mars 2015
Statut
Membre
Dernière intervention
5 mars 2015

En effet, j'abonde dans ton sens Kostrovit, la solution n'est pas stable lorsque le fichier passe dans les mains de d'autres utilisateurs...
Bonjour,

j'avais la même question et cette réponse est un premier élément.

En revanche comment paramétrer le contrôle activex pour qu'il ne prenne sa largeur totale que quand on le sélectionne. le reste du temps je souhaiterais qu'il reste de la taille de la colonne


en espérant être clair
merci
Re,

je te remercie pour ta réponse.

Comme j'ai 100 liste à faire j'espèrais trouver quelque chose de plus propre; je bosse actuellement sur la propriété "HideSelection" mais je ne vois aucune différence que je choisisse la valeur "true" ou "False"

Une idée?

Merci d'avance
Messages postés
24178
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2021
6 884
Re,

Je crois que j'ai trouvé ta manip vaucluse
Il suffit d'élargir la colonne recevant les listes déroulantes avant d'y appliquer la validation et excel garde cette précédente largeur comme largeur mini...
eric
Messages postés
26182
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 septembre 2021
6 052
Malheureusement, ça je l'ai testé car f'est à cela que j'avais d'abord pensé, mais je n'arrive pas à le faire fonctionner sur F2
Messages postés
24178
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2021
6 884
Je pense que c'est la 1ère validation qui compte.
Supprime ta validation pour la refaire ou utilises une ligne sans validation (que tu peux supprimer ensuite)

Edit: pb sur F2 aussi finalement, mais sur un classeur neuf ça marche...
Messages postés
26182
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 septembre 2021
6 052
effectivement,le menu semble garder en minimum la largeur de la 1° validation appliquée dans la colonne d'édition.Et ceci pour tous les types différents de validation que l'on doit placer sur la même feuille.(une initialisation de mémoire pour la feuille, en fait)

espérons que cela servira à notre ami Bolos, mais il risque de devoir refaire son fichier pour utiliser le truc.

C'est de toutes façons bon à savoir pour l'avenir, il suffit à priori d'initialiser un menu à la largeur voulue pour calibrer le minima de tous les menus de la feuille.
Bonne chance à Bolos, merci Eric pour la précision, je pense qu'elle va servir!
bien amicalement
Messages postés
24178
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2021
6 884
Ca vaudrait le coup de rédiger une astuce je pense.
Je te laisse le faire si tu veux bien
eric
Messages postés
26182
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 septembre 2021
6 052
désolé, mais je n'ai pas la technique là, pour placer une astuce
rectificatif
Edit le 8/7: c'est fait
Salut,

merci pour votre réponse. la technique marche effectivement.

Par contre si dans la même colonne, en dessous des cellules concernées par le menu déroulant je fais un copier/collé depuis une autre feuille, alors le problème reviens. A ce moment là, même si je quitte sans enregistrer le problème reste à la réouverture du fichier...

crdlmt
N'y aurait-il pas un moyen ou une commande, une propriété... (notons la "cmd") qui nous permette ceci :

Selectionner toute la feuille.
Dans données validations, choisis "tout" pour l'ensemble de la feuille.
Ouvrir VBA, dans l'onglet propriétée ou dans la ligne de code réinitialiser les largeurs de cellules par defaut?
Messages postés
24178
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2021
6 884
Apparemment non, ce n'est pas une propriété accessible.
On va continuer à y réfléchir...

@vaucluse: ben tu es plus fort que moi. J'ai tenté hier soir mais jamais trouvé le bouton valider :-s ;-)
Messages postés
26182
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
16 septembre 2021
6 052
Bonjour Eric

@vaucluse: ben tu es plus fort que moi.....etc.....

ben je ne crois pas Eric! il m'a fallu quelques 6 ou 7 essais pour arriver à la caser et sans trop savoir comment j'ai réussi.
je pense qu'il faut charger une image, mettre le texte et prévisualiser.
Je crois que c'est à ce stade qu'apparait en haut à droite un bouton enregistrer mais... je ne suis plus sur de rien.
Messages postés
24178
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2021
6 884
Bonsoir,

Une macro qui élargit les colonnes si une validation par liste est sélectionnée.
Rétablit la largeur d'origine ensuite.
Largeur validation par liste.xls
eric
Messages postés
3
Date d'inscription
dimanche 5 juin 2011
Statut
Membre
Dernière intervention
2 juillet 2011
8
Bonjour,
Je réveille ce vieux post tout d'abord pour remercier eriiic. J'ai mis à profit sa solution pour élargir une colonne lors de la sélection d'une liste déroulante. Je préviens tout de suite que je suis un amateur. Mes rudiments de basic me laissent pantois devant les codes modernes, mais à partir d'un exemple j'arrive à interpréter et à faire une synthèse de différentes solutions.

C'est ainsi que j'ai réalisé le projet "Créneaux Internet.xls" pour une médiathèque, en réutilisant la solution d'Eric combinée avec d'autres fonctionnalités.

Une curiosité que je mets aussi dans le dossier (voir lien ci-dessous). En travaillant sur "Créneaux Internet", je suis arrivé à une étape où, miracle, je suis parvenu à ce que je voulais au départ. Avoir une colonne de largeur 10 et quand je clique sur la liste, celle-ci s'ouvre avec une largeur de 30 sans affecter la colonne. C'est donc possible. Le problème est que mon autre fonctionnalité ne fonctionnait plus justement : n'inscrire dans la cellule que la première occurence de l'item (la liste regroupant 3 colonnes d'une autre feuille). Dans ce cas l'ensemble de la ligne se retrouvait dans la cellule.

http://www.box.net/shared/62m6ksat0x

En analysant les bugs pas à pas, j'ai vu qu'il y avait des problèmes de boucles If End If. Quand le les ai corrigées, j'ai obtenu ce qu'eriiic proposait, l'élargissement ponctuel de la colonne. Un miracle cela ne dure jamais longtemps. Mais si cela intéresse un pro de regarder pour comprendre ce qui s'est passé, cela m'intéressse, car le fait de ne modifier que la largeur de la liste est une solution plus élégante.

En attendant, merci encore de m'avoir éclairé sur mon chemin

Bien cordialement

Kostrovit