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 :

Calcul sur cellules de FlexGrid


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 46
    Par défaut Calcul sur cellules de FlexGrid
    bonjour à tous;
    Après avoir récupérer des données de la base dans un MSFlexGrid1,et calculer la somme de la 3ème colonne du MSFlexGrid1 et l'afficher dans un texbox,en 2ème étape j'ai une zone pour saisir la valeur possible du produit à produire. je veux maintenant comparer ce nombre saisi avec touttes les lignes de la 3ème colonne de MSFlexGrid1,si ce nombre est supérieur à la premiere ligne de la 3eme colonne du MSFlexGrid1 j'affiche dans un MSFlexGrid2 le nombre inférieur et je recalcule ce nombre en diminuant le nombre affiché ds MSFlexGrid2,je refais cet instruction jusqu'à ce nombre devient < à celui comparer ds MSFlexGrid1.

    j'ai pas pu faire le code,s'il vous plait pouvez-vous m'aider à faire le code ou existe il des tuto pour avoir coder.
    merci

  2. #2
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Bonjour,

    je n'ai rien compris. Alors si on prend ce petit tableau comme exemple et qu'on imagine que le nombre 37 est saisi dans ta textbox, que veux tu faire ?



    Merci d'avance pour une explication CLAIRE.

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 46
    Par défaut
    salut;
    je m'excuse de ne pas bien expliquer
    voici un schéma peu être plus clair:

    cec-i msflexgrid1:
    num_commande ******* ref_pdt*********qte_produit_demandée
    001---------------------- pdt1--------------------200
    002-----------------------pdt1--------------------300
    j'ai ce msflexgrid1 et j'ai fais la somme de la 3eme colonne qui présente la valeur totale d'un pdt demandée par un client, je l'ai affichée dans un textbox et sa valeur dans ce cas =500
    le producteur doit vérifier s'il peut faire toute la quantité
    donc j'ai mis une zone ou le producteur saisit la valeur qu'il peut la fournir soit inférieur soit égale à la quantité demandé.
    par exemple il peut fournir seulement 300 or la quantité demandé=500
    donc il doit mettre un bouton près de la zone de saisie pour afficher ceci:comme celui la

    cec-i msflexgrid2:
    num_commande *** ref_pdt****qte_produit_demandée***qte_pdt_fournie
    001----------------- pdt1--------------------200 -----------200
    002------------------pdt1--------------------300 -----------100
    j'ai voulu faire une comparaison entre la valeur saisie et la colonne 3 dans le premier msflexgrid et je recalcule la valeur pour comparer de nouveau. je sais pas si mon raisonnement est correcte


    NB:j'ai un seul client qui demande la quantité_produit et apres lui va distribuer vers plusieurs client,pour mon cas c'est un seul client.
    et comme début j'ai une liste de tous les produits quand je selectionne sur un le msflexgrid 1 s'affiche (c'est fait ).

    j'espere cette fois c'est clair
    merci

  4. #4
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    C'est beaucoup plus clair et on aurait gagne du temps si tu avais mis ca dans ton premier message...

    Je te joins ici une solution de principe, pour la tester, tu crees un nouveau projet, sur ta feuille tu mets un bouton de commande, un TextBox et un MSFlexGrid. Appelle le MSFlexGrid : Grid
    Tu n'as plus qu'a copier ce code pour tester mais surtout pour comprendre et l'appliquer a ton projet. La procedure Form_Load n'est la que pour remplir de maniere aleatoire la grille, ne t'attarde pas la dessus.
    Tu n'as qu'a rentrer dans la zone de texte la quantite possible (la quantite demandee sera affichee dans la barre de titre de la feuille quand tu cliqueras sur le bouton de commande)

    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
    Option Explicit
     
    Private Sub Command1_Click()
    'Remplissage de la colonne vide
    Dim QteDemandee As Integer
    Dim QtePossible As Integer
    Dim i As Byte
     
    QtePossible = Val(Text1.Text)
     
    'Calcul de la quantite totale demandee
    For i = 1 To Grid.Rows - 1
      QteDemandee = QteDemandee + Val(Grid.TextMatrix(i, 1))
      Me.Caption = "Quantite demandee = " & QteDemandee
    Next i
     
    If QtePossible >= QteDemandee Then
      'Pas de soucis, on peut tout fournir
      For i = 1 To Grid.Rows - 1
        Grid.TextMatrix(i, 2) = Grid.TextMatrix(i, 1)
      Next i
    Else
      'On ne peut pas tout fournir
      For i = 1 To Grid.Rows - 1
        If QtePossible > Val(Grid.TextMatrix(i, 1)) Then
          'On peut fournir cette commande
          Grid.TextMatrix(i, 2) = Grid.TextMatrix(i, 1)
          QtePossible = QtePossible - Val(Grid.TextMatrix(i, 1))
        Else
          'On ne peut fournir que partiellement cette commande puis aucune autre
          Grid.TextMatrix(i, 2) = QtePossible
          Exit For
        End If
      Next i
    End If
    End Sub
     
    Private Sub Form_Load()
    Dim i As Byte
     
    'Initialisation de la grille pour demo avec des nombres aleatoires entre 1 et 100
    Grid.Cols = 3
    Grid.Rows = 10
    Randomize
    For i = 1 To Grid.Rows - 1
      Grid.TextMatrix(i, 1) = Int((100 * Rnd) + 1)
    Next i
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Février 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 46
    Par défaut
    merci bien;je vais le tester tout de suite.

  6. #6
    Membre averti
    Inscrit en
    Février 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 46
    Par défaut
    merci beaucoup

    j'ai modifié un peu selon ce que j'ai dans mon application et je l'ai testé dans mon aplication et ca marche tres bien,voila le code


    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
    Private Sub Command4_Click()
    'Remplissage de la colonne vide
    'Dim QteDemandee As Integer
    Dim QtePossible As Integer
    Dim i As Byte
     
    QtePossible = Val(Text1.Text)
     
    'Calcul de la quantite totale demandee
    'For i = 1 To MFG.Rows - 1
    '  QteDemandee = QteDemandee + Val(Grid.TextMatrix(i, 1))
    '  Me.Caption = "Quantite demandee = " & QteDemandee
    'Next i
     
    If QtePossible >= sommetxt Then
      'Pas de soucis, on peut tout fournir
      For i = 1 To MFG.Rows - 1
        MFG.TextMatrix(i, 4) = MFG.TextMatrix(i, 3)
      Next i
    Else
      'On ne peut pas tout fournir
      For i = 1 To MFG.Rows - 1
        If QtePossible > Val(MFG.TextMatrix(i, 3)) Then
          'On peut fournir cette commande
          MFG.TextMatrix(i, 4) = MFG.TextMatrix(i, 3)
          QtePossible = QtePossible - Val(MFG.TextMatrix(i, 3))
        Else
          'On ne peut fournir que partiellement cette commande puis aucune autre
          MFG.TextMatrix(i, 4) = QtePossible
          Exit For
        End If
      Next i
    End If
    encore mille merci c tres gentil

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

Discussions similaires

  1. Calculs sur cellules
    Par babybell dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/01/2009, 18h25
  2. [E-07] Calcul sur couleur de cellule
    Par macat dans le forum Excel
    Réponses: 12
    Dernier message: 23/06/2008, 09h35
  3. Calcul sur couleur de cellule
    Par macat dans le forum Excel
    Réponses: 7
    Dernier message: 09/06/2008, 09h18
  4. Réponses: 2
    Dernier message: 29/05/2008, 19h44
  5. Definition calcul sur zone de cellules
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/03/2007, 14h43

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