REDIMENSIONNEMENT DU CONTROLE MSFLEXGRID ( PAS LE TABLEAU, MAIS LE CONTOUR )

Signaler
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012
-
Messages postés
60
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
25 avril 2005
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/20159-redimensionnement-du-controle-msflexgrid-pas-le-tableau-mais-le-contour

Messages postés
60
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
25 avril 2005

Mmmmh, j'avais oublié un tout petit détail... dsl.

With MSF_Resultat
'Config
myRows& = .Rows - 1
myCols& = .Cols - 1
heightLimit& = 2700
widthLimit& = 6615

'Set initial position
.Move .Left, .Top, 300, 300

'Redim Columns
For vI& = 0 To myCols
If .Width < widthLimit Then
.Width = .Width + (.ColWidth(vI) + 10)
Else
.Width = widthLimit
vI = .Cols
End If
Next vI

'Redim Rows
For vE = 0 To myRows
If .Height < 2700 Then ' limite = 2700
.Height = .Height + (.RowHeight(vE) + 10)
Else
.Height = heightLimit
vE = .Rows
End If
Next
End With


MadLucas
Messages postés
60
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
25 avril 2005

Voici ce que je te suggère:

With MSF_Resultat
'Config
myRows& = .Rows - 1
myCols& = .Cols - 1
heightLimit& = 2700
widthLimit& = 6615

'Set initial position
.Move .Left, .Top, 300, 300

'Redim Columns
For vI& = 0 To myCols
If .Width < widthLimit Then
.Width = .Width + (.ColWidth(vI) + 10)
Else
.Width = widthLimit
vI = .Cols
End If
Next vI

'Redim Rows
For vE = 0 To myRows
If .Height < 2700 Then ' limite = 2700
.Height = .Height + (.RowHeight(vE) + 10)
Else
MSF_Resultat.Height = heightLimit
vE = .Rows
End If
Next
End With


C'est un peu plus rapide et c'est plus textuel. Comme ça tu évites de surcharger le code avec des REM. Mais bon c'est une question de goût; certains préfèreront un code avec beaucoup de REM et d'autres aimeront mieux "textualiser" à même le code pour aérer.


MadLucas
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

J'ai bien compris tout cela. Je te dis juste que tu peux renseigner une variable "Hauteur" et une variable "Largeur" dans tes boucles for telles quelles sont et ne redimensionner qu'à la fin des deux boucles. Ca évite de redimensionner toin controle à chaque itération.
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016

effectivement ça pourais marché à condition que touetts les colones ou ligne on la même taille. malheureusement, c'est pas le cas.
c'est pour cette raison qu'une fois la limitte de taille atteinte, implémente directement la variable de réitération à sa borne de fin.
Comme ça dès que la taille est à mon maximum fixé par moi même.
il ne vérifie plus la taille et sort de la boucle.
en hauteur il fait environ une dizaine de lignes et en largeur environ 6 colones.
Messages postés
195
Date d'inscription
dimanche 10 février 2002
Statut
Membre
Dernière intervention
16 février 2016

effectivement ça pourais marché à condition que touetts les colones ou ligne on la même taille. malheureusement, c'est pas le cas.
c'est pour cette raison qu'une fois la limitte de taille atteinte, implémente directement la variable de réitération à sa borne de fin.
Comme ça dès que la taille est à mon maximum fixé par moi même.
il ne vérifie plus la taille et sort de la boucle.
en hauteur il fait environ une dizaine de lignes et en largeur environ 6 colones.
Messages postés
1079
Date d'inscription
jeudi 14 novembre 2002
Statut
Membre
Dernière intervention
1 janvier 2012

Peut-être gagnerais tu en temps d'exécution si tu ne redimensionnais qu'une fois le controle, plutot qu'à chaque fois.

Ca doit être plus rapide de renseigner une variable les boucles For que de redimensionner dans les boucles. Imagine 120 colones et 12000 lignes...

++

Moustachu