begin process at 2012 02 12 12:09:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > RÉORGANISER LES LIGNES D'UN MSFLEXGRID PAR COUPER-COLLER

RÉORGANISER LES LIGNES D'UN MSFLEXGRID PAR COUPER-COLLER


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Niveau :Débutant Date de création :30/05/2003 Date de mise à jour :30/05/2003 11:13:29 Vu / téléchargé :4 496 / 942

Auteur : PROGRAMMIX

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici une méthode pour couper une ligne de votre MSFlexgrid et la coller à un autre endroit de votre grille.


La méthode ne s'occupe pour l'instant que des lignes du MSFlexgrid et une seule à la fois.

Elle aurait besoin d'être complétée
- pour pouvoir déplacer plusieurs lignes à la fois ;
- pour en faire autant avec les colonnes ;
- pour faire du COPIER-COLLER.

Source

  • Dim TexteLigne As String
  • Dim IndexLigneSource As Integer
  • Dim IndexLigneDestination As Integer
  • Dim Couper As Boolean
  • Private Sub mnuCouper_Click()
  • 'On a cliqué sur le menu Couper
  • Dim C As Integer
  • TexteLigne = ""
  • 'On passe en revue les colonnes du flexgrid pour former une chaîne
  • 'dont les valeurs des cellules seront séparées par une tabulation
  • For C = 0 To Me.MSFlexGrid1.Cols - 1
  • TexteLigne = TexteLigne & vbTab & Me.MSFlexGrid1.TextMatrix(IndexLigneSource, C)
  • Next
  • 'On supprime la première tabulation inutile
  • TexteLigne = Mid(TexteLigne, InStr(1, TexteLigne, vbTab) + 1)
  • 'On signale qu'on a "coupé" la ligne
  • Couper = True
  • 'On modifie les menus
  • Me.mnuCouper.Enabled = False
  • Me.mnuColler.Enabled = True
  • End Sub
  • Private Sub mnuColler_Click()
  • 'On a cliqué sur le menu Coller
  • 'Si on est en mode "Couper" (Faudra que je pense à faire du "Copier" également)
  • If Couper Then
  • 'J'ajoute ma ligne découpée à l'endroit souhaité
  • Me.MSFlexGrid1.AddItem TexteLigne, IndexLigneDestination
  • 'Je supprime la ligne initiale en fonction de sa position
  • 'par rapport à la ligne coupée
  • If IndexLigneSource > IndexLigneDestination Then
  • Me.MSFlexGrid1.RemoveItem IndexLigneSource + 1
  • Else
  • Me.MSFlexGrid1.RemoveItem IndexLigneSource
  • End If
  • 'Je rétablie les menus pour un nouveau "Couper"
  • Me.mnuCouper.Enabled = True
  • Me.mnuColler.Enabled = False
  • Couper = False
  • End If
  • End Sub
  • Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  • 'Si on a cliqué sur la première colonne avec le bouton de droite...
  • If Button = 2 And Me.MSFlexGrid1.MouseCol = 0 Then
  • 'et si une ligne a été coupée...
  • If Couper Then
  • 'je récupère l'index de la ligne où se fera l'insertion de la ligne coupée
  • IndexLigneDestination = Me.MSFlexGrid1.MouseRow
  • Else
  • 'sinon je récupère l'index de la ligne que l'on va couper
  • IndexLigneSource = Me.MSFlexGrid1.MouseRow
  • End If
  • 'J'affiche le menu contextuel
  • Me.PopupMenu mnuEdition
  • End If
  • End Sub
Dim TexteLigne  As String
Dim IndexLigneSource As Integer
Dim IndexLigneDestination As Integer

Dim Couper As Boolean

Private Sub mnuCouper_Click()
    'On a cliqué sur le menu Couper
    Dim C As Integer
    TexteLigne = ""
    'On passe en revue les colonnes du flexgrid pour former une chaîne
    'dont les valeurs des cellules seront séparées par une tabulation
    For C = 0 To Me.MSFlexGrid1.Cols - 1
        TexteLigne = TexteLigne & vbTab & Me.MSFlexGrid1.TextMatrix(IndexLigneSource, C)
    Next
    'On supprime la première tabulation inutile
    TexteLigne = Mid(TexteLigne, InStr(1, TexteLigne, vbTab) + 1)
    'On signale qu'on a "coupé" la ligne
    Couper = True
    'On modifie les menus
    Me.mnuCouper.Enabled = False
    Me.mnuColler.Enabled = True
End Sub


Private Sub mnuColler_Click()
    'On a cliqué sur le menu Coller
    'Si on est en mode "Couper"         (Faudra que je pense à faire du "Copier" également)
    If Couper Then
        'J'ajoute ma ligne découpée à l'endroit souhaité
        Me.MSFlexGrid1.AddItem TexteLigne, IndexLigneDestination
        'Je supprime la ligne initiale en fonction de sa position
        'par rapport à la ligne coupée
        If IndexLigneSource > IndexLigneDestination Then
            Me.MSFlexGrid1.RemoveItem IndexLigneSource + 1
        Else
            Me.MSFlexGrid1.RemoveItem IndexLigneSource
        End If
        'Je rétablie les menus pour un nouveau "Couper"
        Me.mnuCouper.Enabled = True
        Me.mnuColler.Enabled = False
        Couper = False
    End If
End Sub

Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    'Si on a cliqué sur la première colonne avec le bouton de droite...
    If Button = 2 And Me.MSFlexGrid1.MouseCol = 0 Then
        'et si une ligne a été coupée...
        If Couper Then
            'je récupère l'index de la ligne où se fera l'insertion de la ligne coupée
            IndexLigneDestination = Me.MSFlexGrid1.MouseRow
        Else
            'sinon je récupère l'index de la ligne que l'on va couper
            IndexLigneSource = Me.MSFlexGrid1.MouseRow
        End If
        'J'affiche le menu contextuel
        Me.PopupMenu mnuEdition
    End If
End Sub


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture MOTS CACHÉS - MOTS MÊLÉS - MOTS MASQUÉS
Source avec Zip Source avec une capture CONTRÔLE POUR LA SAISIE D'HORAIRE DE TRAVAIL
Source avec Zip Source avec une capture UTILISATION DE L'API SENDMESSAGE AVEC UNE LISTBOX OU UN COMB...
Source avec Zip Source avec une capture CONTRÔLE POUR SÉLECTIONNER DES FICHIERS COMME LA BOÎTE DE DI...
Source avec Zip Source avec une capture L'API ABORTDOC PERMET D'ANNULER L'IMPRESSION EN COURS D'UN D...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture JEUX DE VERITÉ ET DE FIDELITÉ par billatosco
Source avec Zip IMAGELOARDER par vkitumaini
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN CALENDRIER DE POCHE par Le Pivert
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna

Commentaires et avis

Commentaire de xpert12 le 02/02/2009 15:57:41

Salut,
Félicitations. As-tu fait évoluer ton code comme tu sembles le dire ? Sais-tu gérer les colonnes et les sélections multiples ? Je suis preneur.

Commentaire de PROGRAMMIX le 02/02/2009 19:07:10

Malheureusement non...  Je n'ai pas retravaillé sur ce code (malgré mes intentions à l'époque).

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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,749 sec (4)

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