PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Champ tableur - largeur automatique des colonnes du contenu des cellules
Champ tableur - largeur automatique des colonnes du contenu des cellules
Iniciado por Jean-Christophe, 02,dic. 2021 13:04 - 5 respuestas
Publicado el 02,diciembre 2021 - 13:04
Bonjour à tous,

Dans le champ tableur si on positionne la souris entre deux entêtes de colonne et qu'on double-clique, la largeur de la colonne (à gauche du point cliqué) adapte automatiquement sa largeur en fonction du contenu de ses cellules.

En revanche, je n'ai pas trouvé si on faire lancer la même action par programmation ?

Merci d'avance,

Jean-Christophe
Miembro registrado
3.844 mensajes
Popularité : +227 (347 votes)
Publicado el 02,diciembre 2021 - 15:22
Bonjour,
A priori, pas directement style(TableurAjusteColonne).
Toutefois, une solution de contournement consisisterait à
1 parcourir la colonne en question (e.g "B") pour rechercher le contenu le plus long
2 Récupérer la largeur en pixel de cette cellule via TexteLargeur(TBLR_MonTableur["B"],saContenuLePlusLong)
3-Affecter le résultat à la largeur de la colonne via la propriété Largeur

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
3.844 mensajes
Popularité : +227 (347 votes)
Publicado el 02,diciembre 2021 - 20:39
le code suivant fait le boulot :
tabSelection est tableau de chaîne
saNomColonne est chaîne

tabSelection=TableurRécupèreSélection(TBLR_Test)
SI tabSelection..Occurrence=0 ALORS
RETOUR
FIN

saNomColonne=TableurRécupèreColonne(tabSelection[1])
TableurAjusteColonne(TBLR_Test,saNomColonne)


// Remarques : Le nom de la cellule peut être ABC123, on ne peut pas déduire immédiatement le nom de la colonne
FONCTION TableurRécupèreColonne(saNomCellule est chaîne) :chaîne
nNoColonne est un entier
saNomColonne est une chaîne


nNoColonne=xlsNomVersCoordonnées(saNomCellule,xlsNumColonne)
saNomColonne=xlsCoordonnéesVersNom(nNoColonne,1) //On est maintenant sur de la taille du nom de la cellule

RENVOYER Gauche(saNomColonne,Taille(saNomColonne)-1)


Procedure TableurAjusteColonne(chMonTableur est Champ, saNomColonne est chaîne)
saNomCellule est une chaîne
nTailleMax est entier
nLargeurMax est entier
nLigneEnCours est entier

//On cherche la colonne la plus large
POUR nLigneEnCours=1 _À_ chMonTableur..NombreLigne
saNomCellule=ChaîneConstruit("%1%2",saNomColonne,nLigneEnCours)
SI nTailleMax<Taille(chMonTableur[saNomCellule]) ALORS
nTailleMax=Taille(chMonTableur[saNomCellule])
FIN
FIN

nLargeurMax= TexteLargeur(TBLR_Test["A1"],Complete("",nTailleMax,"A")) //Une autre cellule que A1 aurait pu faire l'affaire
TBLR_Test[saNomCellule]..Largeur= nLargeurMax


--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
3.844 mensajes
Popularité : +227 (347 votes)
Publicado el 02,diciembre 2021 - 20:40
Au lieu de
TBLR_Test[saNomCellule]..Largeur= nLargeurMax

lire
chMonTableur[saNomCellule]..Largeur= nLargeurMax


--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
948 mensajes
Popularité : +30 (92 votes)
Publicado el 02,diciembre 2021 - 22:43
//On est maintenant sur de la taille du nom de la cellule

s^r
Publicado el 03,diciembre 2021 - 23:35
Merci Voroltinquo ça marche nickel.

J'ai juste ajusté le choix de la cellule "A1" pour choisir une cellule de la colonne qui à le format le plus contraignant (taille de police en particulier).