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

Macros et VBA Excel Discussion :

Insertion d'une Ligne dans MSFlexGrid


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut Insertion d'une Ligne dans MSFlexGrid
    Bonjour a tous, je suis un utilisateur récent de VBA et...
    j'ai un petit problème...

    J'ai créé une MSFlexGrid sur ma Form.
    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
    Private Sub CmdChanger_Click()
     
    If TxtNew.Value = TxtNew2.Value Then
     
    MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
     
     
    MSFlexGrid1.TextMatrix(1, 1) = CboxFI.Value
    MSFlexGrid1.TextMatrix(1, 2) = TxtRef.Value
    MSFlexGrid1.TextMatrix(1, 3) = TxtNew2.Value
    MSFlexGrid1.TextMatrix(1, 4) = TxtMAJ.Value
    MSFlexGrid1.TextMatrix(1, 0) = DTPicker1.Value
     
    Else: MsgBox ("/!\ Attention aux indices /!\")
    End If
    End Sub
    Voila le codes de mon bouton servant a remplir ma grille a l'aide desTextBox si dessus.

    Mon probleme est le suivant :
    Au moment ou je clic sur mon bouton,les informations de mes TextBox rentrent dans la premiere ligne de ma Flexgrid.Si je changes les valeurs des mes TextBox, et que je reclic sur mon bouton, une ligne se créait sous la premiere et les anciennes valeurs sont remplacées par les nouvelles.
    Ainsi de suite.j'ai donc UNE seule ligne (la premiere) avec des valeurs, et un certains nombres (le nombre de clic effectuer) VIDE

    J'aimerai que mes premières valeurs ce deplace ds la deuxieme ligne et que les nouvelles soient ds la premieres ...


    J'espere que je suis assez clair

    Merci d'avance

    Cdlt Vince

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    J'ai modifier mon petit bout de Code pour mon bouton, ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CmdChanger_Click()
     
    If TxtNew.Value = TxtNew2.Value Then
     
    MSFlexGrid1.AddItem Row("1")
    MSFlexGrid1.TextMatrix(1, 1) = CboxFI.Value
    MSFlexGrid1.TextMatrix(1, 2) = TxtRef.Value
    MSFlexGrid1.TextMatrix(1, 3) = TxtNew2.Value
    MSFlexGrid1.TextMatrix(1, 4) = TxtMAJ.Value
    MSFlexGrid1.TextMatrix(1, 0) = DTPicker1.Value
     
    Else: MsgBox ("/!\ Attention aux indices /!\")
    End If
    End Sub
    J'ai une erreur pdt la compilation "Sub ou Function non définie" pour la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MSFlexGrid1.AddItem Row("1")
    Je ne connais pas la syntaxe, d'avance merci pr votre aide
    Cdlt

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Citation Envoyé par Bib0ucH Voir le message
    AIE, personne n'a eu ce problème ou mon explication n'est pas assez clair???
    Ton explication n'est en effet pas assez claire.

    On va t'aider à exprimer ce que tu veux par un jeu de questions réponses, alors :

    Que veux-tu ?

    1) écraser tout ou partie (et si partie : à compter de quel rang ?)
    ou
    2) ne rien écraser mais ajouter des rangs renseignés à ceux déjà existants ?
    Si c'est celà (option 2) : en les ajoutant à la fin, celà va vitre. Si tu veux les ajouter au début, par contre, il te faudra faire une boucle (lourd) à chaque ajout, pour tout décaler ...

    3) si tu choisis l'option 2 en ajoutant à la fin et pas au début, tu as toujours la possibilité (on sait faire) d'assurer le confort de l'utilisateur sans l'obliger à "scroller" pour aller aux derniers ajouts..

    Voilà ... tu dis...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Reponse 2 (désolé pour l'explication, j'maitrise pas encore tt le langage)

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    En ajoutant à la fin ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    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
    Private Sub CmdChanger_Click()
     
    If TxtNew.Value = TxtNew2.Value Then
    'Inserer une nouvelle ligne au dessus de la precedente avec les valeurs suivantes 
    MSFlexGrid1.AddItem Row("1")
     
    MSFlexGrid1.TextMatrix(1, 1) = CboxFI.Value
    MSFlexGrid1.TextMatrix(1, 2) = TxtRef.Value
    MSFlexGrid1.TextMatrix(1, 3) = TxtNew2.Value
    MSFlexGrid1.TextMatrix(1, 4) = TxtMAJ.Value
    MSFlexGrid1.TextMatrix(1, 0) = DTPicker1.Value
     
    Else: MsgBox ("/!\ Attention aux indices /!\")
    End If
    End Sub

    Donc ajouter une ligne au debut

    Autant pour moi :
    Je voudrais

    Ne rien écraser, mais ajouter des rangs renseignés avec les valeurs de mes TextBox, au début de ma FlexGrid, par consequant, faire une boucle

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    voilà alors la syntaxe pour forcer la position de l'ajout :

    object.AddItem (item As String, index)

    où index est la position.
    Si index est omis ===>> ajout à la fin

    donc :

    MSFlexGrid1.AddItem ta_donnée, 1

    ajoutera ta_donnée en position (rang) 1
    et VB décalera tout ce qui suit spontanément en boucle vers le bas

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Impeccable, ça marche à merveille.

    Merci beaucoup et encore pardon pour l'explication pas très clair

    Cdlt

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bon...

    J'ai oublié une précision :

    si ta grille a plusieurs colonne et que tu veux renseigner toutes les colonnes, il te faut procédéer en 2 étapes :

    etape 1 : ajout d'un rang en en profitant pour renseigner la 1ère case
    étrape 2 : complétion des autres colonnes éventuelles de ce rang


    exemple à main levée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     MSFlexGrid1.Rows = 6
      MSFlexGrid1.FixedCols = 1
      MSFlexGrid1.FixedCols = 1
      MSFlexGrid1.Height = 735
      MSFlexGrid1.TextMatrix(0, 0) = "voilà ma première ligne"
      MSFlexGrid1.TextMatrix(1, 0) = "voilà ma deuxième ligne"
      MSFlexGrid1.TextMatrix(2, 0) = "et cà c'est ma troisième ligne"
      MSFlexGrid1.TextMatrix(3, 0) = "voyez ma quatrième ligne"
      MSFlexGrid1.TextMatrix(4, 0) = "j'en suis à la cinqième"
      MSFlexGrid1.TextMatrix(5, 0) = "j'en suis à la sixième"
     
      'et là, j'ajoute au rang 2
      MSFlexGrid1.AddItem "a", 2
      MSFlexGrid1.TextMatrix(2, 1) = "coucou"
    Voilà ... tu sais maintenant tout

    pense au "Résolu"

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Ca marche bien sans, je prend note quand meme pour ne pas reposer la question plus tard.
    Encore merci

  11. #11
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Bonjour

    une question Qu'est le MSFlexGrid ?

    Merci

  12. #12
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Un ActiveX il me semble, present dans les contrôles supplementaires de VBA.

    Il a à peu près la forme d'une DataGrid (si ça te parle plus)



    Je ne peux pas t'en dire plus.

    Information à confirmer

  13. #13
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Oui, mais son nom ds les contrôles supplémantaires, je ne le trouver pas

  14. #14
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 26
    Points
    26
    Par défaut
    Microsoft FlexGrid Control, version 6.0 (chez moi)

  15. #15
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Merci

    j'avais du passé dessus sans le voir,

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

Discussions similaires

  1. erreur dans l'insertion d'une ligne dans la table
    Par Eternel_F dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/06/2008, 09h19
  2. Forçage insertion d'une ligne dans un état
    Par lbrun79 dans le forum IHM
    Réponses: 2
    Dernier message: 12/06/2008, 21h25
  3. insertion d'une ligne dans un StringGrid
    Par ludojojo dans le forum C++Builder
    Réponses: 3
    Dernier message: 04/06/2008, 21h26
  4. Ajax : insertion d'une ligne dans un tableau
    Par Flackou dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 26/05/2008, 13h50
  5. Réponses: 2
    Dernier message: 15/11/2007, 17h43

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