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 :

Rechercher un element dans un msflexgrid et selection [FAQ]


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 61
    Points
    61
    Par défaut Rechercher un element dans un msflexgrid et selection
    Bonjour,
    Comment grace a une recherche dans un msflexgrid, selectionnner la ligne ?
    Merci

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Pour sélectionner une cellule, tu dois tout bêtement mettre des valeurs aux propriétés Row et Col de ta grille. En supposant que ton algorithme de recherche te retourne les coordonnées de la donnée trouvée dans la grille...

    Tu me fais signe si j'ai répondu à côté de la question.

  3. #3
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    En attendant, je me suis amusée un peu...

    Sur une Form, place une MSFlexGrid nommé mfgGrille, deux Frames (sans nom), un bouton de commande nommé cmdQuitter et une barre d'état (qui se trouve dans les Microsoft Windows Common Control et dont j'ai choisi la version 5 - par erreur, mais ça marche quand même) nommé stbMessages.

    Dans le premier Frame, place une étiquette (Label) nommée lblCellule dont la propirété BorderStyle est à FixedSingle, un TextBox nommé txtValeur et un bouton de commande nommé cmdValider dont la propriété Caption est égale à "Valeur".

    Dans le second Frame, place un TextBox nommé txtMotCherche, un bouton de commande nommé cmdRechercher (Caption = "Rechercher") et une étiquette (Label) nommée lblCoordTrouvees (BorderStyle = FixedSingle).

    Ajoute quelques lignes et quelques colonnes (propriétés Rows et Cols) à la grille.

    Copie le code qui suit dans l'éditeur:
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    Private Sub Form_Load()
        Dim i As Integer ' compteur
        ' Initialise la largeur du pannel dans la barre d'état
        stbMessages.Panels(1).Width = stbMessages.Width - 30
        ' La grille est vide: désactiver la zone de recherche
        txtMotRecherche.Enabled = False
        cmdRechercher.Enabled = False
        ' Initialise les entêtes de lignes et de colonnes
        mfgGrille.Col = 0
        For i = 1 To mfgGrille.Rows - 1
            ' numéros de lignes
            mfgGrille.Row = i
            mfgGrille.Text = i
        Next i
        mfgGrille.Row = 0
        For i = 1 To mfgGrille.Cols - 1
            ' lettres pour les colonnes
            mfgGrille.Col = i
            mfgGrille.Text = Chr(i + 64)
        Next i
        ' sélectionne la première cellule
        mfgGrille.Col = 1
        mfgGrille.Row = 1
        lblCellule.Caption = "A1"
        ' réduit la largeur de la première colonne
        mfgGrille.ColWidth(0) = 360
    End Sub
     
    Private Sub Form_Activate()
        ' donne le focus à la zone de saisie
        txtValeur.SetFocus
    End Sub
     
    Private Sub mfgGrille_Click()
        Dim sR As String, sC As String
        sR = mfgGrille.Row
        sC = Chr(mfgGrille.Col + 64)
        lblCellule.Caption = sC & sR
    End Sub
     
    Private Sub cmdValider_Click()
        If (txtValeur <> "") Then
            mfgGrille.Text = txtValeur.Text
            txtValeur.Text = ""
            txtValeur.SetFocus
            SelectionnerProchaineCellule
          Else
            Beep
            stbMessages.Panels(1).Text = "Entrez une donnée"
            txtValeur.SetFocus
        End If
    End Sub
     
    Private Sub SelectionnerProchaineCellule()
        If mfgGrille.Col = mfgGrille.Cols - 1 Then
            If mfgGrille.Row = mfgGrille.Rows - 1 Then
                'sélectionne la première cellule
                mfgGrille.Row = 1
                mfgGrille.Col = 1
                'affiche un message
                stbMessages.Panels(1).Text = "La grille est pleine"
                'passe le focus à la zone de recherche
                txtMotRecherche.SetFocus
              Else
                'sélectionne la première cellule de la ligne suivante
                mfgGrille.Row = mfgGrille.Row + 1
                mfgGrille.Col = 1
                'une ligne pleine, recherche activée
                txtMotRecherche.Enabled = True
                cmdRechercher.Enabled = True
            End If
          Else
            'sélectionne la cellule de la colonne suivante
            mfgGrille.Col = mfgGrille.Col + 1
        End If
        'affiche l'adresse de la cellule sélectionnée
        lblCellule.Caption = Chr(mfgGrille.Col + 64) & mfgGrille.Row
    End Sub
     
    Private Sub txtValeur_KeyPress(KeyAscii As Integer)
        ' Déclenche le bouton Valider sur la touche Entrée
        If KeyAscii = 13 Then
            cmdValider_Click
        End If
    End Sub
     
    Private Sub cmdRechercher_Click()
        'Effacer le message de la barre d'état
        stbMessages.Panels(1).Text = ""
        If (txtMotRecherche.Text <> "") Then
            ChercherDansGrille (txtMotRecherche.Text)
            'donne le focus à la grille: pour mieux voir la sélection
            mfgGrille.SetFocus
          Else
            Beep
            stbMessages.Panels(1).Text = "Entrez une expression à chercher"
            txtValeur.SetFocus
        End If
    End Sub
     
    Private Sub ChercherDansGrille(sMotCherche As String)
        Dim iR As Integer, iC As Integer
        Dim bTrouve As Boolean
        bTrouve = False
        iR = 1
        Do While iR < (mfgGrille.Rows) And Not bTrouve
            iC = 1
            Do While iC < (mfgGrille.Cols) And Not bTrouve
                ' sélectionne une cellule
                mfgGrille.Row = iR
                mfgGrille.Col = iC
                ' vérifie son contenu
                If mfgGrille.Text = sMotCherche Then bTrouve = True
                ' incrémente iC
                iC = iC + 1
            Loop
            ' incrémente iR
            iR = iR + 1
        Loop
        If bTrouve Then
            'affiche les coordonnées
            lblCoordTrouvees.Caption = Chr(iC + 63) & (iR - 1)
            'donne le focus à la grille pour mieux voir la sélection
            mfgGrille.SetFocus
          Else
            Beep
            'affiche un message
            stbMessages.Panels(1).Text = sMotCherche & " n'est pas dans la grille"
        End If
    End Sub
     
    Private Sub txtMotRecherche_KeyPress(KeyAscii As Integer)
        ' Déclenche le bouton Rechercher sur la touche Entrée
        If KeyAscii = 13 Then
            cmdRechercher_Click
        End If
    End Sub
     
    Private Sub cmdQuitter_Click()
        End
    End Sub
    Ce programme permet à l'utilisateur de saisir des données, et les ajouter à la grille puis de faire une recherche pour vérifier si une donnée en particulier s'y trouve.

    Amuse toi bien!

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 61
    Points
    61
    Par défaut
    il trouve bien l'info a chercher, il met le focus dessus, mais on doit se deplacer dans la grille avec les curseurs

    Les grilles que j'ai sont > 500 lignes

  5. #5
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    OK! Il faut donc placer la cellule trouvée bien en vue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mfgGrille.TopRow = mfgGrille.Row
    mfgGrille.LeftCol = mfgGrille.Col
    Ce code place la sélection en haut à gauche par défilement.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 61
    Points
    61
    Par défaut
    Je te remercie beaucoup
    Cela fait deux fois ou trois que tu me reponds avec exple a l'appui
    La ou d'autre laisse tombe

    Si j'avais une note a te donne 10/10

    Et encore MERCI



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

Discussions similaires

  1. [XL-2007] Rechercher des mots dans un tableau et selection
    Par Olivier6464 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 02/05/2013, 17h57
  2. Rechercher un element dans un ComboBox
    Par Nanais19 dans le forum C#
    Réponses: 16
    Dernier message: 25/05/2012, 17h00
  3. [XL-2007] recherche d'element dans excel, avec une macro
    Par astroflo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/01/2012, 10h33
  4. Recherche d'element dans un document XML
    Par FlyByck dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/07/2010, 21h37
  5. Recherche Element dans une liste
    Par hellodelu dans le forum ASP
    Réponses: 7
    Dernier message: 19/08/2005, 11h56

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