Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2010, 10h33   #1
Membre à l'essai
 
Inscription : octobre 2010
Messages : 74
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 74
Points : 20
Points : 20
Par défaut Régler la taille d'une listbox en fonction du nombre d'éléments qu'elle contient

Bonjour,

je cherche à créer une fonction qui me permettrait de régler la taille de ma listbox en fonction du nombre d'éléments qu'elle contient.

Je pensais utiliser le raisonnement suivant :

- récupérer le nombre d'éléments de ma listbox
- récupérer la taille de la police des éléments de ma listbox
- redimensionner ma listbox : taille_listbox = nombre_éléments * taille_police

Je voulais savoir si ce raisonnement tenais la route ?

Merci d'avance,

Tifriis.
Tifriis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 09h50   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 605
Points : 30 947
Points : 30 947
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Ton raisonnement est tout à fait logique, par contre pour la taille de la police il faudra sûrement passer par des API.

Cependant, je ne vois pas l'intérêt de modifier la taille d'une listbox. En effet ce contrôle s'insère dans un formulaire à une place précise par rapport aux autres contrôles et à l'ergonomie de ton formulaire.

Si tu en modifies la taille dynamiquement, cela implique un redimensionnement des autres contrôles ou de de la taille du formulaire.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2010, 15h16   #3
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Comme tu parles de nombre d'éléments, je suppose que tu veux jouer sur la hauteur de la zone de liste.

Voila comment récupérer la hauteur d'un caractère dans la zone de liste lstZDL :
Code :
1
2
3
4
5
6
7
8
9
10
11
Dim lgX As Long, lgY As Long
' initialisation du WizHook
WizHook.Key = 51488399
 
If WizHook.TwipsFromFont( _
            Me.lstZDL.FontName, Me.lstZDL.FontSize, _
            Me.lstZDL.FontWeight, Me.lstZDL.FontItalic, _
            Me.lstZDL.FontUnderline, 1, "", 0, lgX, lgY) = True Then
   ' lgY contient la hauteur d'un caractère en twips
 
End If
Il reste une inconnue : quel est la hauteur de la marge entre deux lignes d'une zone de liste ?

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/12/2010, 16h03   #4
Membre actif
 
Inscription : janvier 2007
Messages : 218
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 218
Points : 166
Points : 166
Salut,
Peut être une idée, plutot que de chercher la hauteur de police + interligne, mesure (grace à la règle de côté) la hauteur entre plusieur lignes (déjà écrites) pour avoir + de précision, au moins 5 lignes et tu divise, cela te donnera la hauteur d'une ligne + interligne.
Mr T 94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 17h43   #5
Membre à l'essai
 
Inscription : octobre 2010
Messages : 74
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 74
Points : 20
Points : 20
Bonjour à tous,

Avec les fêtes je n'avais pas fais attention aux réponses de cette discussion, bien malheureusement pour moi !

@Philippe JOCHMANS:

Citation:
Cependant, je ne vois pas l'intérêt de modifier la taille d'une listbox. En effet ce contrôle s'insère dans un formulaire à une place précise par rapport aux autres contrôles et à l'ergonomie de ton formulaire.
En fait, je recherche à faire une fiche de synthèse dans le style de cette image :

http://www.hostingpics.net/viewer.ph...sedewoking.jpg

J'ai déjà créé une fiche de ce type avec des listbox, cependant, le contenu des listbox (en terme de ligne de texte) varie. Je voudrais pouvoir régler la taille de ces listbox en fonction de leur contenu (afin d'optimiser la place).

J'ai trouvé ce tutoriel qui semble correspondre à mes besoins (http://cafeine.developpez.com/access...utoextensible/)

J'ai cependant beaucoup de mal à l'adapter à mon cas de figure (j'ai utiliser la méthode suggérée par LedZeppII). En fait, je ne comprends pas trop quels sont les arguments dont à besoin la fonction pour marcher :

GetTextLength(pCtrl As Control, ByVal str As String, Optional ByVal Height As Boolean = False)

pCtrl = ma liste ?
ByVal = ?

Merci d'avance pour votre aide,

Tifriis
Tifriis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 18h49   #6
Futur Membre du Club
 
Inscription : juillet 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 57
Points : 19
Points : 19
Bonjour Tifriis

Dans la feuille de propriétés de ta listbox si tu fixais tout simplement la propriété "Lignes affichées" (voir dans l'Aide Access : ComboBox.ListRows, propriété) à un nombre X de lignes qui te convienne, cela ne serait-il pas suffisant pour répondre à ton besoin ?

Cordialement
oracle7556
oracle7556 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 19h43   #7
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

J'ai réalisé un exemple de zone de liste dont la hauteur s'ajuste au contenu : Fichier zip.
La hauteur ne peut pas excéder celle de la zone détail (je ne prend pas en compte la hauteur réelle du formulaire).

J'ai épuré le code au maximum pour ne laisser que ce qui est nécessaire.
J'ai mis en commentaires, comment TwipsFromFont s'utilise.

En espérant que ça te mette sur les rails.
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/01/2011, 14h27   #8
Membre à l'essai
 
Inscription : octobre 2010
Messages : 74
Détails du profil
Informations forums :
Inscription : octobre 2010
Messages : 74
Points : 20
Points : 20
Bonjour à tous !

Je vous remercie pour l'aide que vous m'avez accordé, notamment LedZeppII.
J'ai potassé le fichier joint, je suis encore en train de m'approprier le code, mais c'est tout à fait ce que je voulais faire !

Encore un grand merci pour ces "pas de géants" !

Tifriis
Tifriis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h29.


 
 
 
 
Partenaires

Hébergement Web