PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → comment adapter la largeur d'une colonne dans une table
comment adapter la largeur d'une colonne dans une table
Débuté par Jeandu69, 11 aoû. 2025 12:40 - 4 réponses
Membre enregistré
285 messages
Posté le 11 août 2025 - 12:40
Bonjour,
Je dois modifier de façon dynamique la largeur d'une colonne dans une table (mémoire ou fichier, peu importe).
La propriété .Largeur le fait mais elle fonctionne en pixel. Les données qui sont dans cette colonne peuvent avoir un nombre de caractère différents et peuvent contenir des lettres, des chiffres, des caractère spéciaux, etc
Sachant qu'un I prend moins de place qu'un M je fais un calcul approximatif en mettant le nombre de caractères multipliés par un nombre de pixel. Mais c'est très approximatif vous en conviendrez. Existe-t-il un moyen de d'être plus juste (sauf à utiliser une police fixe qui n'est pas la solution idéale en mode graphique) ?
Si vous avez des pistes sur le sujet, je suis preneur.
merci d'avance
Membre enregistré
1 011 messages
Posté le 11 août 2025 - 13:11
Bonjour,
Allez voir ce lien, vous aurez vos pistes : ;)

https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/277467-mise-forme-xlsdocument-277485/read.awp?

Edit : sur ce lien, je donne des indications pour un champ tableur.
Voroltinquo vous donne les infos pour le calcul de largeur du texte à appliquer à une colonne. Pour votre cas, le champ provisoire est inutile, vous parcourez la colonne pour calculer la largeur de chaque cellule de la colonne puis, en fin de colonne, vous appliquez la largeur à la colonne.

Cdlt
Message modifié, 11 août 2025 - 13:28
Membre enregistré
285 messages
Posté le 11 août 2025 - 15:09
Cédric_34 a écrit :
Bonjour,
Allez voir ce lien, vous aurez vos pistes : ;)

https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/277467-mise-forme-xlsdocument-277485/read.awp?

Edit : sur ce lien, je donne des indications pour un champ tableur.
Voroltinquo vous donne les infos pour le calcul de largeur du texte à appliquer à une colonne. Pour votre cas, le champ provisoire est inutile, vous parcourez la colonne pour calculer la largeur de chaque cellule de la colonne puis, en fin de colonne, vous appliquez la largeur à la colonne.

Cdlt



J'ai essayé avec TexteLargeur mais la colonne n'a pas la bonne taille, il manque des caractères. Peut-être à cause de la police utilisée (Trebuchet MS) ?
Membre enregistré
1 011 messages
Posté le 11 août 2025 - 15:20
Pouvez-vous nous apporter des précisions sur ce que vous avez fait :

Avez-vous bien parcouru la colonne de haut en bas pour récupérer la largeur la plus importante.
Eventuellement, essayez avec la méthode de Voroltinquo (le champ provisoire) mais je ne pense pas que le souci vienne de là.
Il nous faudrait votre code pour vérifier.

Cdlt
Membre enregistré
4 318 messages
Posté le 11 août 2025 - 16:20
Bonjour,
Jeandu69 a écrit :
> J'ai essayé avec TexteLargeur mais la colonne n'a pas la bonne taille, il manque des caractères. Peut-être à cause de la police utilisée (Trebuchet MS) ?
Cela ne vient pas de la police mais du gabarit. TexteLargeur donne le résultat pour un champ sans gabarit. C'est la raison pour laquelle j'ai ajouté 20 au résultat. Cela a été expliqué dans mon pseudo code.

Note : Dans ton cas, il n'est pas nécessaire de boucler en fin de table. Tu peux récupérer la largeur max l'ors de l'affichage d'une ligne.
--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM
Message modifié, 11 août 2025 - 16:41