[Se déplacer dans un Ctrl MSFlexgrid par code]

Le
JPM
Bonjour,
Comment se placer par code VB dans un ctrl Flexgrid pour atteindre une
information située dans le grid sans utiliser "manuellement" le scroll?
Existe-t- il une fonction?
Amitiés
--
JPM
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques93
Le #15385681
Bonjour JPM,
JPM a écrit :
Bonjour,
Comment se placer par code VB dans un ctrl Flexgrid pour atteindre une
information située dans le grid sans utiliser "manuellement" le scroll?
Existe-t- il une fonction?
Amitiés



Peut être avec la propriété TopRoW ?

--
Cordialement,

Jacques.
driss hanib
Le #15385601
Salu JPM,
Tu peux récupérer les informations d'une cellule par la propriété
textmatrix()

maintenant il faudrait que tu explique EXACTEMENT ce que tu veux faire..

Driss

"JPM"
Bonjour,
Comment se placer par code VB dans un ctrl Flexgrid pour atteindre une
information située dans le grid sans utiliser "manuellement" le scroll?
Existe-t- il une fonction?
Amitiés
--
JPM


JPM
Le #15385571
Bonjour,
Merci pour vos réponses. Je vais testé vos remarques.
En fait, j'ai créer un planning sous sur 12 mois avec TOUS LES jours de
l'année. les cellules sont fusionnées par mois (1ére ligne) et par semaines
(2eme ligne). Il comporte x lignes. Ce Flexgrid contient plus de 370
colonnes. Je voudrais qu'à l'ouverture du form, que soit affiché la cellule
correspondant au mois actif (issu de la fonction Now()) sans que
l'utilisateur fasse défiler le grid jusqu'à cette colonne.
Amitiés
--
JPM
Driss HANIB
Le #15385471
salut JPM

alors regarde préférentiellement (pour la ligne) la propriété que t'a
indiqué Jacques93
pour la colonne a priori je ne vois pas car je n'ai pas utilisé..
je cherche..

Driss
"JPM" news:
Bonjour,
Merci pour vos réponses. Je vais testé vos remarques.
En fait, j'ai créer un planning sous sur 12 mois avec TOUS LES jours de
l'année. les cellules sont fusionnées par mois (1ére ligne) et par


semaines
(2eme ligne). Il comporte x lignes. Ce Flexgrid contient plus de 370
colonnes. Je voudrais qu'à l'ouverture du form, que soit affiché la


cellule
correspondant au mois actif (issu de la fonction Now()) sans que
l'utilisateur fasse défiler le grid jusqu'à cette colonne.
Amitiés
--
JPM





JPM
Le #15385401
Bonsoir,
Ok. Je vais "voir" de ce côté. Un grand merci d'avance à vous deux.
Amitiés
--
JPM


"Driss HANIB" a écrit :

salut JPM

alors regarde préférentiellement (pour la ligne) la propriété que t'a
indiqué Jacques93
pour la colonne a priori je ne vois pas car je n'ai pas utilisé..
je cherche..

Driss
"JPM" news:
> Bonjour,
> Merci pour vos réponses. Je vais testé vos remarques.
> En fait, j'ai créer un planning sous sur 12 mois avec TOUS LES jours de
> l'année. les cellules sont fusionnées par mois (1ére ligne) et par
semaines
> (2eme ligne). Il comporte x lignes. Ce Flexgrid contient plus de 370
> colonnes. Je voudrais qu'à l'ouverture du form, que soit affiché la
cellule
> correspondant au mois actif (issu de la fonction Now()) sans que
> l'utilisateur fasse défiler le grid jusqu'à cette colonne.
> Amitiés
> --
> JPM
>
>
>





Jacques93
Le #15385381
Bonjour JPM,
JPM a écrit :
Bonsoir,
Ok. Je vais "voir" de ce côté. Un grand merci d'avance à vous deux.
Amitiés



Un petit exemple avec mois/année, diont tu peux peut être t'inspirer.
Necessite un MSFlexgrid et un CommanButton :

Option Explicit
Dim AnDepart As Integer
Dim AnFin As Integer

Private Sub Command1_Click()
Dim lig As Integer

With Me.MSFlexGrid1
lig = ((Year(Now) - AnDepart - 1) * 12) + Month(Now)
.TopRow = lig
.Row = lig
.Col = 1
.SetFocus
End With
End Sub

Private Sub Form_Load()
Dim aa As Integer, mm As Integer

AnDepart = 2003
AnFin = 2012
With Me.MSFlexGrid1
.Rows = (AnFin - AnDepart) * 12 + 1
.Cols = 2

.Col = 1
.Row = 0
.CellAlignment = flexAlignCenterCenter
.ColWidth(1) = 1600
.CellFontBold = True
.TextMatrix(0, 1) = "Mois/an"
For aa = 1 To AnFin - AnDepart
For mm = 1 To 12
.Row = ((aa - 1) * 12) + mm

' numéro de ligne
.Col = 0
.CellFontBold = True
.TextMatrix(((aa - 1) * 12) + mm, 0) = .Row

' Date mois/an
.TextMatrix(((aa - 1) * 12) + mm, 1) = _
Format(CDate("01/" & mm & "/" & _
Format(aa + AnDepart, "0000")), "mmmm yyyy")

' Format
.Row = ((aa - 1) * 12) + mm
.Col = 1
.CellAlignment = flexAlignRightCenter
Next
Next
End With
End Sub

--
Cordialement,

Jacques.
JPM
Le #15385341
Bonjour,
Un grand merci Jacques93. Je teste ça et je te tiens au courant
Amitiés
--
JPM
JPM
Le #15384991
Bonjour,
Encore merci pour ce code. Malheureusement, c'est une colonne cachée dans
une partie du grid que je désire affichée. Pas une ligne. Il n'existe pas de
fonction équivalente à TopRow pour gérer un déplacement sur des colonnes.
J'ai trouvée une astuce qui consiste à réduire la largeur des colonnes
pécédentes à la colonne recherchée à 0. Ensuite, je remets ces colonnes à
leur largeur normale par code associé à un bouton. La vitesse est très
acceptable du fait que tout ce processus se fait avec le Grid en invisible.
Bref : ca me convient parfaitement! Merci à tous pour vos remarques et vos
interventions.
Amitiés
--
JPM
Jacques93
Le #15384981
Bonjour JPM
JPM a écrit :
Bonjour,
Encore merci pour ce code. Malheureusement, c'est une colonne cachée dans
une partie du grid que je désire affichée. Pas une ligne. Il n'existe pas de
fonction équivalente à TopRow pour gérer un déplacement sur des colonnes.
J'ai trouvée une astuce qui consiste à réduire la largeur des colonnes
pécédentes à la colonne recherchée à 0. Ensuite, je remets ces colonnes à
leur largeur normale par code associé à un bouton. La vitesse est très
acceptable du fait que tout ce processus se fait avec le Grid en invisible.
Bref : ca me convient parfaitement! Merci à tous pour vos remarques et vos
interventions.
Amitiés



Et la propriété LeftCol, a quoi qu'elle sert ? ;-)

Extrait de l'aide :

Returns or sets the left-most visible non fixed column in MSFLEXGRID

C'est l'équivalent de TopRow pour les colonnes ...

--
Cordialement,

Jacques.
JPM
Le #15384971
Bonsoir,
Et bien encore MERCI, Jacques. J'ignorais cette fonction et de plus, depuis
le passage sous Vista, ma biblio d'aide VB est altérée. Quasiment plus de
d'aide. Cette fonction est tout simplement LA bonne! LeftCol! Ca marche
impec....
Encore merci
Amitiés
--
JPM
Publicité
Poster une réponse
Anonyme