IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Archampi

Petit truc pour adapter les colonnes visibles d'un "Spreadsheet" (OWC) à la largeur du contrôle lui-même.

Note : 2 votes pour une moyenne de 3,00.
par , 28/02/2015 à 20h34 (544 Affichages)
Dans un UserForm, il est possible d'utiliser un contrôle "Office Web Component" pour insérer une feuille Excel; appelée ici Spreadsheet pour y afficher tout genre de données sous forme de tableau (lignes / colonnes).

Or il arrive que ce même Spreadsheet puisse contenir différentes données comportant un nombre différent de colonnes et celles-ci peuvent évidemment être de différentes largeurs. Si l'on connaît le nombre de colonnes, nous pouvons limiter la visibilité de celles-ci en utilisant la propriété ViewableRange du contrôle. Ceci a pour effet de griser l'arrière-plan de la feuille au-delà des colonnes que l'on désire afficher. Si la largeur totale des colonnes excède la largeur du contrôle Spreadsheet, on peut utiliser la barre de défilement horizontale pour afficher les colonnes qui sont hors de portée. Cependant, si la largeur totale des colonnes est inférieure à celle du contrôle Spreadsheet, nous aurons une bande grisée pour combler l'espace resté vide.

C'est ici que mon petit truc devient utile. Il faut d'abord connaître le ratio suivant:

La largeur du contrôle versus la somme de la largeur de toutes les colonnes lorsque celles-ci remplissent complètement le contrôle sans en excéder sa largeur. Faites des essais jusqu'à l'obtention du résultat voulu.

Par exemple, la largeur du contrôle (Spreadsheet1.Width) divisé par la somme des largeurs des colonnes (Dans une boucle i: Spreadsheet1.Columns(i).ColumnWidth) pourrait donner un ratio de 5. Cela s'explique par le fait que les unités de mesure utilisées ne sont pas les mêmes pour les colonnes que pour le contrôle lui-même. Ce ratio devient donc la constante qui servira dans le calcul de la largeur à affecter à chacune des colonnes pour que celles-ci arrivent le plus près possible de la largeur du contrôle Spreadsheet.

Puis, après avoir calculé le rapport entre la largeur totale du contrôle et celle de la somme des largeurs de chacune des colonnes, (si toutes ces colonnes ne remplissent pas le contrôle au complet), dans une boucle, il suffit d'appliquer ce rapport à chacune des largeurs de chacune des colonnes.

Par exemple: Le rapport (Largeur du contrôle / ratio: 5) / largeur des colonnes pourrait être de 1,32. Dans ce cas, à l'intérieur de la boucle, on applique ce facteur à la largeur de chaque colonne. En principe, l'opération devrait permettre d'élargir chaque colonne de sorte qu'elles occupent tout l'espace visible. En principe... Mais, il y a un "mais".

En effet, le contrôle Spreadsheet réagit de façon erratique et n'applique pas parfaitement les dimensions demandées car il semble arrondir les valeurs de largeur. Ceci a pour effet de fausser légèrement notre calcul. Toutefois, dans l'ensemble, il ne restera que très peu d'espace grisé entre la dernière colonne et la fin du contrôle.

Voilà. Si quelqu'un connaît une autre astuce pour corriger ce comportement, qu'il me le fasse savoir; je serais très heureux de la partager avec vous.

Envoyer le billet « Petit truc pour adapter les colonnes visibles d'un "Spreadsheet" (OWC) à la largeur du contrôle lui-même. » dans le blog Viadeo Envoyer le billet « Petit truc pour adapter les colonnes visibles d'un "Spreadsheet" (OWC) à la largeur du contrôle lui-même. » dans le blog Twitter Envoyer le billet « Petit truc pour adapter les colonnes visibles d'un "Spreadsheet" (OWC) à la largeur du contrôle lui-même. » dans le blog Google Envoyer le billet « Petit truc pour adapter les colonnes visibles d'un "Spreadsheet" (OWC) à la largeur du contrôle lui-même. » dans le blog Facebook Envoyer le billet « Petit truc pour adapter les colonnes visibles d'un "Spreadsheet" (OWC) à la largeur du contrôle lui-même. » dans le blog Digg Envoyer le billet « Petit truc pour adapter les colonnes visibles d'un "Spreadsheet" (OWC) à la largeur du contrôle lui-même. » dans le blog Delicious Envoyer le billet « Petit truc pour adapter les colonnes visibles d'un "Spreadsheet" (OWC) à la largeur du contrôle lui-même. » dans le blog MySpace Envoyer le billet « Petit truc pour adapter les colonnes visibles d'un "Spreadsheet" (OWC) à la largeur du contrôle lui-même. » dans le blog Yahoo

Commentaires