PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e 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, dez., 02 2021 1:04 PM - 5 respostas
Publicado em dezembro, 02 2021 - 1:04 PM
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
Membro registado
3.878 mensagems
Popularité : +227 (347 votes)
Publicado em dezembro, 02 2021 - 3:22 PM
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
Membro registado
3.878 mensagems
Popularité : +227 (347 votes)
Publicado em dezembro, 02 2021 - 8:39 PM
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
Membro registado
3.878 mensagems
Popularité : +227 (347 votes)
Publicado em dezembro, 02 2021 - 8:40 PM
Au lieu de
TBLR_Test[saNomCellule]..Largeur= nLargeurMax

lire
chMonTableur[saNomCellule]..Largeur= nLargeurMax


--
Il y a peut être plus simple, mais, ça tourne
Membro registado
948 mensagems
Popularité : +30 (92 votes)
Publicado em dezembro, 02 2021 - 10:43 PM
//On est maintenant sur de la taille du nom de la cellule

s^r
Publicado em dezembro, 03 2021 - 11:35 PM
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).