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 :

[VB6]Modification de valeurs dans une MSflexgrid


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Points : 54
    Points
    54
    Par défaut [VB6]Modification de valeurs dans une MSflexgrid
    Voila , j'ai une MSflexGrid qui contient des valeurs provenant d'un fichier et j'aimerai pouvoir modifier les valeurs directement dans la flexgrid et ensuite enregistrer les modifications dans le fichier!
    Donc voilà , si vous pouvez m'éclairer sur ce petit probleme , je vous en remercie d'avance.

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  3. #3
    Membre du Club Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Merci , je savais qu'il fallait faire quelque chose avec le code ASCII mais j'avais pas la méthode!
    Sinon je voulais savoir pour récupérer les valeurs modifiés , je fais comment?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 105
    Points : 78
    Points
    78
    Par défaut
    Bonjour.

    Tu précises la ligne et la colonne de la cellule concernée, par exemple :

    - Grille.Row = 10 (ligne N° 10)

    - Grille.Col = 15 (colonne N° 15)

    - Chaine = Grille.Text (contenu de ta cellule)

    Pour recharger la cellule, il suffit de faire : Grille.Texte = ChaineModifiée

  5. #5
    Membre du Club Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Sa l'air d'etre le bordel quand meme cette méthode , je vois pas comment m'y prendre avec car les valeurs contenues dans mes cellules de ma Msflexgrid sont des enregistrements stockés dans un fichier à accès direct!Si je modifie une valeur par ici , une valeur par là , comment je fais pour lui indiquer qu'il a modifié telle ou telle cellule , le mieux c'est qu'il puissent récupéré toutes les valeurs d'une ligne et que je puisse faire le découpage de chaque cellule , sa m'as l'air compliquéé tout sa!

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Bonjour Tyrael62,
    Comment ta msflexgrid est connectée ou remplie .
    Bref quel est son lien avec ton fichier à acces direct.

    @+

  7. #7
    Membre du Club Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Ben voilà , je te donne les élément qui peuvent d'éclairer sur ma facon procédé :
    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
     
     
    '----------------------------- recherche des infos -----------------------------------
     
    Private Sub rech_info_trans()
     
    Dim numero_fichier
    Dim t2(5) As String
    numero_fichier = FreeFile
     
    Open CheminC For Random As #numero_fichier
     
    While Not EOF(numero_fichier)
          Get #numero_fichier, , enrC
          If (Combo_nom = (enrC.nom_cli & "  " & enrC.prenom_cli)) Then
             cpte_trans = enrC.numCpteCli
             Close #numero_fichier
             GoTo fin
          End If
          If (Combo_modif_nom = (enrC.nom_cli & "  " & enrC.prenom_cli)) Then
             'numéro de compte récupéré ds aff_combo_trans
             modif_cpte = enrC.numCpteCli
             Call grille_data ' procedure pour nettoyer la grille de données
             Close #numero_fichier
             GoTo suite
          End If
    Wend
    Close #numero_fichier
     
    suite:
    Open CheminT For Random As #numero_fichier
     
    While Not EOF(numero_fichier)
          Get #numero_fichier, , enrE
     
          If (modif_cpte = enrE.compte) Then
              'affichage des informations correspondantes à la transaction           par rapport au numéro de compte
     
             Grille1.AddItem (enrE.num_ecrit & vbTab & enrE.Description & vbTab & enrE.montant & vbTab & enrE.type_transaction & vbTab & enrE.date_ecrit & vbTab & enrE.compte)
          End If
    Wend
    Close #numero_fichier
    fin:
    'ne pas se soucier de cela vu que j'utilise une SSTAb cette procédure est utilisé pour récupérer des informations sur mes 3 pages de ma SStab
     
    t2(1) = "Chèque"
    t2(2) = "Espèces"
    t2(3) = "Virement bancaire"
    t2(4) = "Lettre de change"
    t2(5) = "Avoir"
     
    Combo_desc.Clear
    If Combo_typ = "Dépôt" Then
       j = 1
       While j < 6
             Combo_desc.AddItem (t2(j))
             j = j + 1
       Wend
    Else
       Combo_desc.AddItem (t2(2))
    End If
     
    End Sub
    Voila pour ce qui est de récupération des données , voici les procédures annexes utiles pour mieux comprendre cette procédure
    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
     
     
     
    Private Sub Aff_combo_trans()
     
    Dim numero_fichier
    numero_fichier = FreeFile
    Dim t1(2) As String
     
    Open CheminC For Random As #numero_fichier
     
    While Not EOF(numero_fichier)
          Get #numero_fichier, , enrC
          If enrC.num_cli <> 0 Then
             Combo_nom.AddItem (enrC.nom_cli & "  " & enrC.prenom_cli)
             Combo_modif_nom.AddItem (enrC.nom_cli & "  " & enrC.prenom_cli)
          End If
    Wend
     
    Close #numero_fichier
     
    t1(1) = "Retrait"
    t1(2) = "Dépôt"
     
     
     
    i = 1
    While i < 3
          Combo_typ.AddItem (t1(i))
          i = i + 1
    Wend
     
    End Sub
     
    Private Sub grille_data()
     
    Grille1.Clear
    Grille1.Rows = 1
     
    Grille1.ColWidth(0) = 1500
    Grille1.ColWidth(1) = 1500
    Grille1.ColWidth(2) = 1300
    Grille1.ColWidth(3) = 1250
    Grille1.ColWidth(4) = 1600
    Grille1.ColWidth(5) = 1400
     
    Grille1.TextMatrix(0, 0) = "  N° de transaction"
    Grille1.TextMatrix(0, 1) = "     Description"
    Grille1.TextMatrix(0, 2) = "      Montant"
    Grille1.TextMatrix(0, 3) = "        Type"
    Grille1.TextMatrix(0, 4) = "  Date de transaction"
    Grille1.TextMatrix(0, 5) = "   N° de compte"
     
     
     
    End Sub
     
    Private Sub nettoyage_transaction()
     
    Combo_nom.Clear
    Combo_typ.Clear
    Combo_desc.Clear
    Combo_modif_nom.Clear
    Call Aff_combo_trans
    cpte_trans = ""
    montant_trans = ""
    modif_cpte = ""
     
    End Sub
    Voila j'espere que sa pourra vous éclairer un peu plus , pour mes parties précédentes de modifications et suppression de données de mon fichier client j'avais utilisé des combos_box qui affichaient les données a modifier dans texte_box et ensuite pour enregistrer ces données , je copier mon fichier dans un tableau et supprimer le fichier , effectuer les modifications ds le tableau et réécrire mon fichier avec le tableau et pour supprimer le client même méthode mais la vu que je sélectionné directement le nom et le prénom du client a supprimer , je réécrivais mon fichier sans la ligne sélectionné dans la combo_box mais le probleme est plus complexe , j'ai plus de donnees a cibler donc c'est pour sa que je suis passé par un controle MSflexgrid.

    Voilà je pense que vous disposez d'assez d'élément pour pouvoir m'aiguiller sur la meilleure méthode a utiliser pour mener ces
    modifications

  8. #8
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 130
    Points : 166
    Points
    166
    Par défaut
    Pour découper les enregistrements de la ligne selectionnée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    info1 = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 1)
    info2 = MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 2)
    Maintenant je ne sui pas assez calé sur les fichiers à acces direct et autre
    Peut etre en chargeant ton fichier dans un recordset via ADO et en liant ton mshflexgrid à ce recordset il serait plus simple de faire tes update et de recreer ton fichier.

    @+

  9. #9
    Membre du Club Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Merci pour ton aide apparemment les modifications se font bien dans le fichier mais le hic intervient quand j'ai plusieurs transactions du même compte , là les modifications d'une ligne s'applique à l'ensemble des lignes , donc j'aimerais bien résoudre ce problème.Je vous envoie ma procédure de modification que j'ai rédigé , je vois pourquoi tous s'applique à mes lignes mais je trouve la solution pour que sa modifie uniquement les lignes que je modifie.
    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
     
     
    '----------------------- Modification du fichier transactions.txt -----------------------
     
    Private Sub modif_fichier_trans()
     
    '---- Déclarations variables -----
    Dim numero_fichier
    Dim t(100) As T_Ecrit
    numero_fichier = FreeFile
     
     
       Open CheminT For Random As #numero_fichier
     
       '--- Remplissage du tableau ---
       j = 1
       While Not EOF(numero_fichier)
             Get #numero_fichier, , t(j)
             j = j + 1
       Wend
     
       Close #numero_fichier
     
       Kill (CheminT)
     
       Open CheminT For Random As #numero_fichier
     
       '--- Insertion des nouvelles valeurs du clients et recopiage du tableau dans le fichier ---
       i = 1
       While t(i).num_ecrit <> 0
     
          If (modif_cpte <> t(i).compte) Then
             Put #numero_fichier, i, t(i)
          Else
             t(i).num_ecrit = Grille1.TextMatrix(Grille1.Row, 0)
             t(i).Description = Grille1.TextMatrix(Grille1.Row, 1)
             t(i).montant = Grille1.TextMatrix(Grille1.Row, 2)
             t(i).type_transaction = Grille1.TextMatrix(Grille1.Row, 3)
             t(i).date_ecrit = Grille1.TextMatrix(Grille1.Row, 4)
             Put #numero_fichier, i, t(i)
          End If
          i = i + 1
     
       Wend
     
       Close #numero_fichier
       Call nettoyage_transaction
     
    End Sub
    J'espère que vous pourrais m'aidez à résoudre ce problème , merci d'avance.

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

Discussions similaires

  1. Modification de valeur dans une matrice
    Par oliv27400 dans le forum MATLAB
    Réponses: 3
    Dernier message: 04/06/2010, 14h41
  2. Réponses: 2
    Dernier message: 24/11/2006, 08h54
  3. [VB6]recherche d'une valeur dans une table access
    Par fahmichebaane dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 19/04/2006, 15h26
  4. [VB6]PB d'importation d'un feuille Excel dans une MSFlexGrid
    Par mystere l dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 20/04/2004, 15h59
  5. [VB6] Multiselection avec CTRL dans une msflexgrid
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 17/04/2003, 10h57

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