begin process at 2010 02 09 18:11:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Divers

 > 

General

 > 

Comment faire un tri par colonne lorsque le Flexgrid est en flexSelectionByRow ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment faire un tri par colonne lorsque le Flexgrid est en flexSelectionByRow ?

mercredi 22 novembre 2006 à 18:08:57 | Comment faire un tri par colonne lorsque le Flexgrid est en flexSelectionByRow ?

opala

Bonjour,

J'ai un Flexgrid. J'ai le parametré avec SelectionMode = flexSelectionByRow
Notamment parce que l'utilisateur pourra effacer une ligne complete avec un clic droit (comme ca, la notion de "1 ligne = 1 enregistrement" est bien mise en valeur)

Cépendant, je souhaiterais mettre un tri sur les colonnes lors d'un click. J'ai implémenté le code, mais le tri lors du clic sur une colonne ne fonctionne que si je parametre la Flexgrid en "SelectionMode = flexSelectionByColumn" ou "SelectionMode = flexSelectionByFree"

Comment faire?

Merci pour votre aide,
Olivier
mercredi 22 novembre 2006 à 23:50:57 | Re : Comment faire un tri par colonne lorsque le Flexgrid est en flexSelectionByRow ?

MPi

Personnellement, j'utilise cette méthode.
Un click sur l'entête d'une colonne, la grille se trie en mode croissant sur cette colonne; un autre click et elle se trie en mode décroissant. Les flags sont à revoir si tu veux trier selon différents types de données (texte, nombres, dates...). Ici, je trie des chiffres.

J'ai fait le test en mode sélection par ligne et ça fonctionne bien.

Private Sub Grid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    Static Flag As Integer
   
    If Button = 1 And y <= 250 Then '250 = hauteur d'une ligne, donc l'entête, ici
        If Flag <> 1 Then
            Flag = 1
        Else
            Flag = 2
        End If
       
        Grid1.Sort = Flag
       
    End If
End Sub


MPi
jeudi 23 novembre 2006 à 10:29:17 | Re : Comment faire un tri par colonne lorsque le Flexgrid est en flexSelectionByRow ?

opala

Salut MPi

Désolé, mais en mode flexSelectionByRow, ta méthode ne marche pas.
En effet, Grid1.Sort = Flag va s'appliquer automatiquement à la colonne 0! Donc meme si on Grid1_MouseUp sur la colonne 1, 4, 5 etc... on aura un tri par rapport à la colonne 0 car on est en flexSelectionByRow

(ta méthode marche si on est en flexSelectionByColumn of course)

Du coup je vais me mettre en flexSelectionByRow,  et je vais gérer moi meme la surbrillance de la ligne complete....suis en train de gérer la surbrillance moi meme (.CellBackColor = .BackColorSel & .CellForeColor = .ForeColorSel)

Je reviens des que j'ai fini la surbrillance de plusieurs ligne en meme temps

(je vais m'inspirer du code suivant:
http://www.vbfrance.com/codes/MISE-SURBRILLANCE-SELECTION-DANS-MSHFLEXGRID-AVEC-CELLULES-FUSIONNEES_25211.aspx)

A+
jeudi 23 novembre 2006 à 10:30:41 | Re : Comment faire un tri par colonne lorsque le Flexgrid est en flexSelectionByRow ?

opala

--EDIT--

"Du coup je vais me mettre en flexSelectionByRow"

=> je voulais dire:
Du coup je vais me mettre en flexSelectionFree" ;)
jeudi 23 novembre 2006 à 11:03:02 | Re : Comment faire un tri par colonne lorsque le Flexgrid est en flexSelectionByRow ?

opala

Private Sub MSFlexGrid_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Dim r As Single Dim c As Single With MSFlexGrid 'clic droit If Button = 2 Then 'on trouve les limites de la multi selection If .Row < .RowSel Then gFlexGridRowSelDebut = .Row gFlexGridRowSelFin = .RowSel Else gFlexGridRowSelDebut = .RowSel gFlexGridRowSelFin = .RowSel End If 'on selectionne les lignes For r = gFlexGridRowSelDebut To gFlexGridRowSelFin For c = 1 To .Cols - 1 .Col = c .Row = r .CellBackColor = .BackColorSel .CellForeColor = .ForeColorSel Next c Next r 'on affiche le menu du formulaire Menu If (gFlexGridRowSelDebut <> 0 Or gFlexGridRowSelFin <> 0) Then Me.PopupMenu Menu.MnuPrincipal, y, x End If 'on déselectionne les lignes For r = gFlexGridRowSelDebut To gFlexGridRowSelFin For c = 1 To .Cols - 1 .Col = c .Row = r .CellBackColor = .BackColor .CellForeColor = .ForeColor Next c Next r End If End With End Sub


Cette discussion est classée dans : tri, colonne, flexgrid, flexselectionbyrow, selectionmode


Répondre à ce message

Sujets en rapport avec ce message

Macro- tri d'une colonne par date [ par Noe ] Lorsque je fait un filtre automatique sur une colonne contenant des dates (filtrer entre date) cela marche très bien. Lorsque j'enregistre un macro po tri par itération sur colonne [ par thierrypp ] Bonjour,je dispose d'une colonne de données en format *.txt; 1er rang caractère " mesures"autres rangs, valeurs numériques nombre total de rangs unic PB: Clique sur entete de colonne flexgrid [ par cdkz ] je desire effectue des actions lorsque que je clique sur une entete de colonne, mais apperement rien y fait, c'est une msflexgrid!Demande de l'aide!Es Ajustement automatique de la taille d'une cellule d'un flexgrid [ par Dinbougre ] Bonjour,J'utilise un flexgrid sur un projet VB et plutôt que d'écrire pour chaque colonne la taille de celle-ci je voudrais savoir s'il est possible d tri colonne date dans listview [ par desus4 ] Salut tout le mondeJ'ai suivi les messages concernant ce sujet sur le forum, et je n'ai rien trouvé.Y a t'il quequ'un qui connaisse une méthode pour t Format d'une colonne d'un flexgrid[VBA] [ par scarface2 ] Bonjour,dans ma msflexgrid j'ai une colonne qui contient des montants. Ds ma base ces montants sont de type Euro mais lorsque je les mets ds ma flexgr tri sur colonne excel !! svp !! [ par bili75 ] salut,je désire trier une colonne pour ensuite dupliqué le fichier excel en autant de fichier qu'il y a de valeurs differentes sur la colone.j'ai le c Proteger en ecriture une colonne [ par crocmorts ] Salut, j'aurais voulu savoir s'il existait une fonction qui permet de ne pas ecrire dans 1 seule colonne d'un flexgrid.Exemple,Flexgrid: 100 lignes 5 Tri colonne liste view [ par tom42 ] Je possede une liste view avec une colonne date.Quand je clic sur le titre de la colonne pour trier par date corissante le trie se fait dabord sur le Somme dans un FlexGrid [ par Lefaix ] Jutilise un FlexGrid avec une colonne date, une autre Noms, une colonne de chiffres etc....Je voudrais pouvoir ajouter un textBox qui puisse me donn


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales