Bonjour
Comment déterminer et figer la largeur des colonnes dans une feuille de données afin qu'elle ne puisse être modifié qu'en mode création?
Merci
Bonjour
Comment déterminer et figer la largeur des colonnes dans une feuille de données afin qu'elle ne puisse être modifié qu'en mode création?
Merci
Malheureusement je ne pense pas qu'on puisse.
Vérifie en sélectionnant toutes tes colonnes et en faisant 'Figer les colonnes'.
La seule solution que j'avais trouvée c'est d'enregistrer la largeur des colonnes dans un tableau à l'ouverture du formulaire puis en réassignant ces valeurs en fermant le formulaire.
Je ne me souviens plus du code que j'avais utilisé mais je pense qu'il doit être dans une de mes discussions du forum.
A+
Bonjour,
Suivant l'idée de Marot_r, sur ouverture du formulaire, tu enregistres la largeur de la colonne du contrôle TonControle dans la variable LargCol :
et après sur souris relâchée tu restitue cette largeur, comme cela la colonne reste avec la même largeur :
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Option Compare Database Dim largCol Private Sub Form_Open(Cancel As Integer) LargCol = Me.TonControle.ColumnWidth End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.TonControle.ColumnWidth = LargCol End Sub
Merci User, c'est ce genre de code auquel je pensais.
Je n'implanterai pas forcément ton code car il risque de faire faire une crise de nerf à plus d'un utilisateur :-).
Un truc qui serait "cool" ce serait de disposer de la fonction 'largeur automatique'. Celle d'Access qui détermine la taille des colonnes à afficher selon les données qu'elles contiennent comme lorsqu'on double-clique entre deux colonnes.
je n'ai jamais vu de code qui l'appelait, est-ce possible ?
C'est totalement pour le 'fun' je n'ai pas de demande client dans ce sens.
A+
Salut cher Marot_r
Désolé pour le retard...
Oui j'avoue que le code est assez tiré par les cheveux
Sinon, je regarde le code pour appliquer la "largeur automatique" mais ca me paraît pas simple (c'est marrant : tu as toujours des demandes assez originales). Je te tiens au courant si je trouve
![]()
ReSalut,
Pour ajuster la largeur des colonnes dans les feuilles de données il y a ce code de Lebans.
Bon test![]()
Bonjour,
Je rebondis sur le sujet : j'ai bien réussi à dimensionner mes colonnes en fonction des données, en utilisant le code de Lebans.
Mais j'aimerai que si l'entête de colonne est plus large que la largeur maxi des données, la taille de la colonne soit ajustée à l'entête.
Bref, il faudrait que je récupère la largeur de l'entête.
Quelqu'un aurait-il une idée de génie ?
Merci.
J'ai trouvé et voici le code :
La fonction fTextWidth provient du code de Lebans.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 Private Function SetColumnsWidth(pFrm As Form) As Integer Dim x As Long Dim lngMaxWidth As Long Dim varTemp As Variant Dim iRec_DAO As DAO.Recordset Dim iLng_Longueur() As Long Dim i As Integer Dim iCtl As Control Set iRec_DAO = pFrm.RecordsetClone iRec_DAO.MoveFirst ReDim iLng_Longueur(iRec_DAO.Fields.count - 1) For i = 0 To iRec_DAO.Fields.count - 1 For Each iCtl In pFrm If iCtl.ControlSource = iRec_DAO.Fields(i).Name Then iLng_Longueur(i) = fTextWidth(pFrm, iCtl.Name) End If Next Next Do While Not iRec_DAO.EOF For i = 0 To iRec_DAO.Fields.count - 1 varTemp = iRec_DAO.Fields(i).Value x = fTextWidth(pFrm, varTemp) If x > iLng_Longueur(i) Then iLng_Longueur(i) = x Next iRec_DAO.MoveNext Loop For i = 0 To iRec_DAO.Fields.count - 1 For Each iCtl In pFrm If iCtl.ControlSource = iRec_DAO.Fields(i).Name Then iCtl.ColumnWidth = iLng_Longueur(i) End If Next Next End Function
Prochaine étape :
- Positionner le formulaire en haut de l'écran et plus ou moins à gauche en fonction de la somme des largeurs des colonnes
- Dimensionner la largeur du formulaire en fonction de la somme des largeurs des colonnes.
Si certains se sont déjà penchés sur le problème, je suis preneur.
Merci.
Bonjour, Kloun
En jouant avec le Docmd.Movesize et un peu d'arithmétique,
tu devrais arriver à tes fins ...
![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager