IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Comment déplacer une ligne bas ou haut dans FlexGrid?


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 26
    Points : 24
    Points
    24
    Par défaut Comment déplacer une ligne bas ou haut dans FlexGrid?
    Bonjour,

    Comment je peux déplacer ligne vers bas ou haut dans la liste. (FlexGrid)

    je vous sélectionné la ligne et Click sur bouton bas ou haut pour déplace ce ligne

    Voir mon ,Project

    http://www.cjoint.com/c/FCztAdjSc0Z

    Merci d'avance de votre réponse !
    Je ai besoin d'une réponse bientôt.
    Je espère que dans les prochaines heures
    Merci

    Bonne Suite...

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    Dans la procédure,mettre les éléments de la ligne bas et haut dans des variables,
    puis les replacer dans la flexgrid en inversant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim elementligne (2, nombreElementLigne) as String
    A toi de faire la programmation!.

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Avec MSHFlexGrid(qui devrait donner la même chose que MSFlexGrid) et la proposition de iclic(salut), on peut faire :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Private Sub cmdVersBas_Click()
        Dim LGn%, TB(1 To 2, 0 To 20) As String, C%, I%
        C = MSHFlexGrid1.Cols
        LGn = MSHFlexGrid1.RowSel
        If LGn <= 1 Then Exit Sub
        TB(1, 0) = MSHFlexGrid1.TextMatrix(LGn, 0)
        TB(2, 0) = MSHFlexGrid1.TextMatrix(LGn - 1, 0)
    1:  MSHFlexGrid1.AllowBigSelection = False
        For I = 1 To C - 1
          TB(1, I) = MSHFlexGrid1.TextMatrix(LGn, I)
          TB(2, I) = MSHFlexGrid1.TextMatrix(LGn - 1, I)
        Next I
     
        For I = 0 To C - 1
           MSHFlexGrid1.TextMatrix(LGn, I) = TB(2, I)
           MSHFlexGrid1.TextMatrix(LGn - 1, I) = TB(1, I)
        Next I
       If MsgBox("Descendre encore cet élément ?", vbYesNo + vbQuestion) = vbYes Then
            If LGn >= 1 And LGn < MSHFlexGrid1.Rows Then
              LGn = LGn + 1
              GoTo 1
            End If
       Else: Exit Sub
       End If
    End Sub
     
    Private Sub cmdVersHaut_Click()
        Dim LGn%, TB(1 To 2, 0 To 20) As String, C%, I%
        C = MSHFlexGrid1.Cols
        LGn = MSHFlexGrid1.RowSel
        If LGn <= 1 Then Exit Sub
        TB(1, 0) = MSHFlexGrid1.TextMatrix(LGn, 0)
        TB(2, 0) = MSHFlexGrid1.TextMatrix(LGn - 1, 0)
    1:
        For I = 1 To C - 1
          TB(1, I) = MSHFlexGrid1.TextMatrix(LGn, I)
          TB(2, I) = MSHFlexGrid1.TextMatrix(LGn - 1, I)
        Next I
     
        For I = 0 To C - 1
           MSHFlexGrid1.TextMatrix(LGn, I) = TB(2, I)
           MSHFlexGrid1.TextMatrix(LGn - 1, I) = TB(1, I)
        Next I
       If MsgBox("Remonter encore cet élément ?", vbYesNo + vbQuestion) = vbYes Then
            If LGn > 2 Then
              LGn = LGn - 1
              GoTo 1
            End If
       Else: Exit Sub
       End If
    End Sub
    J'ai mis le nombre d'éléments à 20, tu peux le changer selon ce que tu as dans ta BD.(nombre de colonnes)
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    Merci actuellement à votre Réponse

    je te souhait bonne vie

    Bonne suite...

    A+

  5. #5
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 26
    Points : 24
    Points
    24
    Par défaut Bonne Réponse
    Bonjour,

    oui et ça marche bien, Ben non, si vous déplacez une seule fois c'est bon, mais si plusieurs fois la colonne 0 n'a pas la bonne infos et pour le tableau TB, y en a pas besoin


    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
     
    Private Sub cmdVersBas_Click()
        Dim LGn%, C%, I%
        Dim Infos
     
        With G
            C = .Cols
            LGn = .RowSel
    1:      .AllowBigSelection = False
            If LGn <= 1 Then Exit Sub
            For I = 0 To C - 1
                Infos = .TextMatrix(LGn + 1, I)
                .TextMatrix(LGn + 1, I) = .TextMatrix(LGn, I)
                .TextMatrix(LGn, I) = Infos
            Next I
            If MsgBox("Descendre encore cet élément ?", vbYesNo + vbQuestion) = vbYes Then
                If LGn >= 1 And LGn < G.Rows Then
                LGn = LGn + 1
                GoTo 1
                End If
            Else: Exit Sub
            End If
        End With
    End Sub
     
    Private Sub cmdVersHaut_Click()
        Dim LGn%, C%, I%
        Dim Infos
     
        With G
            C = .Cols
            LGn = .RowSel
    1:    If LGn <= 1 Then Exit Sub
            For I = 0 To C - 1
                Infos = .TextMatrix(LGn - 1, I)
                .TextMatrix(LGn - 1, I) = .TextMatrix(LGn, I)
                .TextMatrix(LGn, I) = Infos
            Next I
            If MsgBox("Remonter encore cet élément ?", vbYesNo + vbQuestion) = vbYes Then
                If LGn > 2 Then
                LGn = LGn - 1
                GoTo 1
                End If
            Else: Exit Sub
            End If
        End With
    End Sub

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    essaie ceci (merci l'autodidacte)

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    Private Sub Form_Load() 'pour faire un essai
    Dim i As Integer
    For i = 1 To 19
       MSFlexGrid1.Row = i
       MSFlexGrid1.Text = Chr(64 + i)  'mettre une valeur dans la flexgrid
    Next
    End Sub
     
    Private Sub cmdVersBas_Click()
        Dim LGn%, C%, i%, TB() As String
        C = MSFlexGrid1.Cols
        ReDim TB(1 To 2, 0 To C) As String 'associe automatiquement au nombre de colonnes de la flexgrid
        LGn = MSFlexGrid1.RowSel
        If LGn < 1 Or (LGn + 1) = MSFlexGrid1.Rows Then Exit Sub
        TB(1, 0) = MSFlexGrid1.TextMatrix(LGn, 0)
        TB(2, 0) = MSFlexGrid1.TextMatrix(LGn - 1, 0)
        GoSub INVERSE
        Do
          If MsgBox("Descendre encore cet élément ?", vbYesNo + vbQuestion) = vbYes Then
                If LGn >= 1 And LGn < MSFlexGrid1.Rows - 2 Then
                  LGn = LGn + 1
                  GoSub INVERSE
                End If
                Else: Exit Do
            End If
        Loop
        Exit Sub
     
    INVERSE:
        MSFlexGrid1.AllowBigSelection = False
        For i = 1 To C - 1
          TB(1, i) = MSFlexGrid1.TextMatrix(LGn, i)
          TB(2, i) = MSFlexGrid1.TextMatrix(LGn + 1, i)
        Next i
     
        For i = 0 To C - 1
           MSFlexGrid1.TextMatrix(LGn, i) = TB(2, i)
           MSFlexGrid1.TextMatrix(LGn + 1, i) = TB(1, i)
        Next i
      Return
     
    End Sub
     
    Private Sub cmdVersHaut_Click()
        Dim LGn%, C%, i%, TB() As String
        C = MSFlexGrid1.Cols
        ReDim TB(1 To 2, 0 To C) As String 'associe automatiquement au nombre de colonnes de la flexgrid
        LGn = MSFlexGrid1.RowSel
        If LGn <= 1 Then Exit Sub
        TB(1, 0) = MSFlexGrid1.TextMatrix(LGn, 0)
        TB(2, 0) = MSFlexGrid1.TextMatrix(LGn - 1, 0)
        GoSub INVERSE
        Do
           If MsgBox("Remonter encore cet élément ?", vbYesNo + vbQuestion) = vbYes Then
              If LGn > 2 Then
                  LGn = LGn - 1
                  GoSub INVERSE
              End If
              Else: Exit Do
           End If
        Loop
        Exit Sub
     
    INVERSE:
        For i = 1 To C - 1
          TB(1, i) = MSFlexGrid1.TextMatrix(LGn, i)
          TB(2, i) = MSFlexGrid1.TextMatrix(LGn - 1, i)
        Next i
     
        For i = 0 To C - 1
           MSFlexGrid1.TextMatrix(LGn, i) = TB(2, i)
           MSFlexGrid1.TextMatrix(LGn - 1, i) = TB(1, i)
        Next i
     Return
    End Sub
    PS: chez moi ça fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déplacer une ligne vers ou haut ou le bas d'une Listebox
    Par fmris dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/02/2014, 10h26
  2. [XL-2003] Déplacer une ligne vers le haut ou vers le bas
    Par rjf18 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/01/2010, 21h59
  3. Comment déplacer une ligne dans une TStringGrid
    Par blondelle dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/11/2008, 19h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo