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 :

MsflexGrid VB6 fusionner les lignes similaire


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    wordpress
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : wordpress
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut MsflexGrid VB6 fusionner les lignes similaire
    bonjour mes cher amis
    de retour une autre fois avec un autre problème

    mon problème aujourd'hui est :

    j'ai crée une page VENTE avec un MSFLEXGRID et des textbox pour remplir ce Flexgrid

    maintenant lorsque j'ajoute un article a la liste des ventes (Flexgrid)
    je veux que le Flexgrid recherche si ce produit existe déjà ou non
    si oui (existe) il n'ajoute pas une ligne mais il fait seulement une mise a jour a la quantité.

    donc ma question est : comment mettre A jour une ligne dans le Flexglid si une valeur existe dans le tableau ??

    merci bcp mes amis

    voila une photo pour mieux me comprendre



    voila mon code ( Bouton Ajouter )

    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
    Private Sub Ajouter_Click()
    Text1.SetFocus
            If Text1 = "" Then
            MsgBox "Veuillez un CODE-BARRE avant de continuer.", vbInformation, "Erreur"
            Text1.SetFocus
            Else
     
            Dim c As Integer
            Dim L As Integer
            If T_Quachete.Text = 0 Or T_Quachete = "" Then
            MsgBox "Veuillez entrer la quantité d'article à vendu.", vbInformation, "Information"
            T_Quachete.SetFocus
            End If
            End If
     
     
            If Text1.Text <> "" And T_Quachete.Text <> 0 And T_Quachete.Text <> "" And IsNumeric(Text1.Text) = True Then
     
            Loop
            'C = Flex.Cols
            L = Flex.Rows - 1
            Flex.TextMatrix(L, 0) = 1
            Flex.TextMatrix(L, 1) = Text1.Text
            Flex.TextMatrix(L, 2) = text2.Text
            Flex.TextMatrix(L, 3) = text9.Text
            Flex.TextMatrix(L, 4) = T_Quachete.Text
            Flex.TextMatrix(L, 5) = ((Val(text9))) * ((CSng(T_Quachete.Text)))
            Flex.TextMatrix(L, 5) = Replace(Flex.TextMatrix(L, 5), ",", ".")
            Flex.TextMatrix(L, 6) = ((Val(Text8))) * ((CSng(T_Quachete.Text)))
            Flex.TextMatrix(L, 6) = Replace(Flex.TextMatrix(L, 6), ",", ".")
            Flex.TextMatrix(L, 7) = (Text3.Text - Val(Flex.TextMatrix(L, 4)))
            Flex.Rows = Flex.Rows + 1
     
            text2.Text = ""
            text9.Text = ""
            T_Quachete.Text = ""
           Else
          MsgBox " erreur !!!! ", vbOKOnly
            End If
            Text1.Text = ""
            T_Quachete.Text = 1
     
     
    For i = 1 To Flex.Rows - 1
    cel = Val(Flex.TextMatrix(i, 5))
    cel2 = Val(Flex.TextMatrix(i, 6))
    s = s + cel
    s2 = s2 + cel2
    Next i
     
    T_TTC.Text = s
    T_achat.Text = s2
    T_gains.Text = s - s2
    'Text2 = Format(Val(Text3) - Val(Text1), "00.00")
     
     
    End Sub

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    Avant d'ajouter une ligne, il faut parcourir toutes les lignes (boucle for ... next) en vérifiant si le Flex.TextMatrix(Nligne, 2) (colonne désignation) n'est pas égal au textboxdesignation.text.
    juste avant cette boucle mettre un drapeau (Variable Boolean) à False
    Si oui ajouter à la colonne Flex.TextMatrix(Nligne, 4) (colonne quantité) la quantité Flex.TextMatrix(Nligne, 4) = Val( Flex.TextMatrix(Nligne, 4)) + Quantité, passer à la colonne 5, l’opération colonne 3 x colonne 4, mettre le drapeau à True et sortir de la boucle for .... next.
    Suite à la boucle, si drapeau = false, là seulement ajouter une ligne.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre averti
    Homme Profil pro
    wordpress
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : wordpress
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut
    merci mon frère pour votre réponse
    je vais tester votre méthode et je re

  4. #4
    Membre averti
    Homme Profil pro
    wordpress
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : wordpress
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut

    depuis le matin j'essaye d'appliquer votre explication
    mais sans aucun signal+

    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
     
     
    If Text1.Text <> "" And Val(T_Quachete) <> 0 And T_Quachete <> "" And IsNumeric(Text1.Text) = True Then
     
            L = Flex.Rows - 1
            Flex.TextMatrix(L, 0) = 1
            For i = 1 To Flex.Rows - 1
            If Text1.Text = Flex.TextMatrix(i, 1) Then
            Flex.TextMatrix(i, 4) = Val(Flex.TextMatrix(i, 4)) + T_Quachete
            Else
            Flex.TextMatrix(L, 1) = Text1.Text
            Flex.TextMatrix(L, 2) = text2.Text
            Flex.TextMatrix(L, 3) = text9.Text
            Flex.TextMatrix(L, 4) = T_Quachete
            Flex.TextMatrix(L, 5) = ((Val(text9))) * ((CSng(T_Quachete.Text)))
            Flex.TextMatrix(L, 5) = Replace(Flex.TextMatrix(L, 5), ",", ".")
            Flex.TextMatrix(L, 6) = ((Val(Text8))) * ((CSng(T_Quachete.Text)))
            Flex.TextMatrix(L, 6) = Replace(Flex.TextMatrix(L, 6), ",", ".")
            Flex.Rows = Flex.Rows + 1
            End If
            Next i

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut

    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
    If Text1.Text <> "" And Val(T_Quachete) <> 0 And T_Quachete <> "" And IsNumeric(Text1.Text) = True Then
     
            L = -1
            'boucle pour définir si une même désignation existe dans le grid
            For i = 1 To Flex.Rows - 1
                If Text1.Text = Flex.TextMatrix(i, 1) Then 'cette ligne a la même désignation
                    Flex.TextMatrix(i, 4) = Val(Flex.TextMatrix(i, 4)) + T_Quachete 'ajouter la quantité (T_Quachete ?)
                    L = i 'retenir le N° de ligne concernée
                    Exit For 'sortir immédiatement de la boucle
                End If
            Next i
            If L = -1 Then 'aucune ligne ne contient cette désignation
                L = Flex.Rows - 1
                Flex.TextMatrix(L, 0) = 1
                Flex.TextMatrix(L, 1) = Text1.Text '(?)
                Flex.TextMatrix(L, 2) = text2.Text '(?)
                Flex.TextMatrix(L, 3) = text9.Text '(?)
                Flex.TextMatrix(L, 4) = T_Quachete '(?)
                Flex.Rows = Flex.Rows + 1 ' (?) ajout d'une ligne vierge pour la suite des entrées utilisateur(?)
            End If
            'Ici L correspond à ligne d'une même désignation ou à la ligne nouvellement remplie
            'puisque les 5 premières colonnes de cette ligne sont actualisées
            'faire les calcul pour cette ligne en utilisant les colonne adéquates
     
            ' *************************************************************************************************
            ' ********************** je ne trouve pas sur quel N° de colonne doivent s'effectuer les calculs **
            ' ********************** A toi de faire cette partie **********************************************
            Flex.TextMatrix(L, 5) = Val(Flex.TextMatrix(L, 3)) * Val(Flex.TextMatrix(L, 4))
            Flex.TextMatrix(L, 5) = Replace(Flex.TextMatrix(L, 5), ",", ".")
            Flex.TextMatrix(L, 6) = Val(Flex.TextMatrix(L, 5)) * Val(Flex.TextMatrix(L, 4))
            Flex.TextMatrix(L, 6) = Replace(Flex.TextMatrix(L, 6), ",", ".")
            ' *************************************************************************************************
    End If
    Tous les points d’interrogation, c'est que je ne suis pas sur du N° colonne ---> titre de la colonne.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre averti
    Homme Profil pro
    wordpress
    Inscrit en
    Mai 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : wordpress
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 16
    Par défaut
    mon frere je trouve pas les mots pour te remercie

    le code fonctionne parfaitement 1000%


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

Discussions similaires

  1. [Vxi3] Fusionner les lignes de mon tableau croise
    Par Bûth dans le forum Webi
    Réponses: 4
    Dernier message: 24/08/2012, 01h45
  2. [CR XI] fusionner les lignes en une seule ligne
    Par SophieTaureau dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 07/06/2012, 06h41
  3. Fusionner les lignes de listview
    Par sihammaster dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/06/2010, 16h38
  4. Fusionner les lignes d'une JTable
    Par zazou1 dans le forum Composants
    Réponses: 1
    Dernier message: 16/03/2009, 11h56
  5. [VB6] Colorier les lignes d'une listeview
    Par alliance dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/05/2006, 14h29

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