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 :

Ajouter des éléments à une listbox Répondre


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2013
    Messages : 13
    Par défaut Ajouter des éléments à une listbox Répondre
    Bonjour, j'ai besoin de votre aide. je suis débutant. j'ai pu charger les produits du tableau de la feuille reception dans le combobox du formulaire usfDevis selon l'ancienneté de la date de saisie du produit. (seuls les produits dont la date de saisie est plus ancienne sont chargés dans le combox) aider moi à ajouter le prix, le lot et la date de péremption du tableau de la feuille reception au lstDevis du formulaire usfDevis. lorsqu'on selectionne un élément du combobox, il doit s'afiicher dans le lstDevis le prix, le lot et la date de péremption du produit. merci
    0devis-zambol3.xlsm (84.70 Ko)


    ci-dessous 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub btnAjouter_Click()
    'Ajoute une ligne dans la liste Devis
    With lstDevis
        .AddItem cboFamille.Text
        .List(.ListCount - 1, 1) = cboServices.Text
        '.List(.ListCount - 1, 2) = cboServices.List(cboServices.ListIndex, 5)
        '.List(.ListCount - 1, 3) = cboServices.List(cboServices.ListIndex, 4)
        .List(.ListCount - 1, 4) = txtQuantite.Text
    End With
    cboServices.ListIndex = -1
    txtQuantite.Text = ""
    AutoriseValider
    End Sub
     
    Private Sub cboFamille_Enter()
    Dim d As Object, L&, x$, tablo, i&, dat
    Set d = CreateObject("Scripting.Dictionary")
    d.CompareMode = vbTextCompare 'la casse est ignorée
    L = cboServices.ListIndex
    x = cboServices.Text
    tablo = [T].Resize(, 3) 'tableau structuré, matrice, plus rapide
    For i = 1 To UBound(tablo)
        dat = tablo(i, 2)
        If IsDate(dat) Then _
            If CDate(dat) <= Date Then _
                If L = -1 Then d(tablo(i, 1)) = "" Else If tablo(i, 3) = x Then d(tablo(i, 1)) = ""
    Next
    If d.Count Then cboFamille.List = d.keys Else cboFamille.Clear
    End Sub
     
    Private Sub cboServices_Enter()
    Dim d As Object, L&, x$, tablo, i&, dat
    Set d = CreateObject("Scripting.Dictionary")
    d.CompareMode = vbTextCompare 'la casse est ignorée
    L = cboFamille.ListIndex
    x = cboFamille.Text
    tablo = [T].Resize(, 3) 'tableau structuré, matrice, plus rapide
    For i = 1 To UBound(tablo)
        dat = tablo(i, 2)
        If IsDate(dat) Then _
            If CDate(dat) <= Date Then _
                If L = -1 Then d(tablo(i, 3)) = "" Else If tablo(i, 1) = x Then d(tablo(i, 3)) = ""
    Next
    If d.Count Then cboServices.List = d.keys Else cboServices.Clear
    End Sub
    e souhaite alimenter la combobox (cboServices) du userform usfDevis à partir du tableau de la feuille reception . mais la condition c'est que le combobox charge seulement les produits dont la date d'entrée est plus ancienne. exemple le cas du tableau de la feuille reception le combobox ne doit charger que les produits
    TIKA 250ml_tamarin (05/05/2021) pour le produit TIKA 250ml_tamarin ,
    TIKA 250ml_Bissap (19/05/2021) pour le produit TIKA 250ml_Bissap
    TIKA 250ml_Ananas (19/05/2021) pour le produit TIKA 250ml_Ananas
    TIKA 250ml_Mangue (19/05/2021) pour le produit TIKA 250ml_Mangue
    TIKA 250ml_Mangue (05/05/2021) pour le produit TIKA 250ml_Mangue
    TIKA 1L_Mangue (19/05/2021) pour le produit TIKA 1L_Mangue
    Lorsqu'on clique sur le bouton ajouter,
    vérifier si la quantité ajoutée pour chaque produit est suffisante.
    • si la quantité demandée est égale au stock du produit on ajoute le produit puis la ligne se supprime de la feuille reception. ex stock=10, qté demandée=10 donc le stock=0 donc suppression de la ligne de la feuille reception et chargement du produit dans le combobox en fonction de la date suivante.
    • si la quantité demandée est superieure au stock du produit, un message pour informer de la quantité disponible puis l'utilisateur ajuste en fonction de la quantité disponible puis la ligne se supprime de la feuille reception. ex stock=10, qté demandée=15 donc si l'utilisateur corrige et ajoute les 10, le stock=0 donc suppression de la ligne de la feuille reception et chargement du produit dans le combobox en fonction de la date suivante.
    • si la quantité demandée est inferieure au stock du produit, . ex stock=10, qté demandée=5, le produit est ajouté et le stock est mis à jour stock=5 donc vu que le produit a encore du stock la ligne de la feuille reception n'est pas supprimée et le combobox conserve le produit jusqu’à épuisement du stock

    donc lorsque la ligne d'un produit est égale à 0, la ligne est supprimée afin qu'elle soit remplacée dans le combobox par ligne du meme produit ayant la date qui suit la date du produit supprimé.
    l'idée est de facturer les premiers produits ajoutés à cause de leurs dates de péremption
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 122
    Par défaut
    Bonjour, j'ai commencé à traiter le besoin relatif au stock
    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
    Private Sub btnAjouter_Click()
        Dim C As Range
        Dim firstAddress
        'Ajoute une ligne dans la liste Devis
        With lstDevis
            Dim Rg As Range, stock As String
            Set Rg = Sheets("Produits").Range("B1:B10000")
            Set C = Rg.Find(cboServices.Text, LookIn:=xlValues)
            If Not C Is Nothing Then
            stock = Sheets("Produits").Cells(C.Row, C.Column + 3)
            If stock > txtQuantite.Text Then
            .AddItem cboFamille.Text
            .List(.ListCount - 1, 1) = cboServices.Text
            .List(.ListCount - 1, 4) = txtQuantite.Text
            End If
            Else
              MsgBox "Stock : " & stock & " > quantité demandée " & txtQuantite.Text
            End If
        End With
        cboServices.ListIndex = -1
        txtQuantite.Text = ""
        AutoriseValider
    End Sub

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/01/2013, 21h31
  2. Ajouter des éléments à une liste
    Par hassen07 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/05/2010, 18h42
  3. Ajouter des valeurs à une listbox multicolonnes
    Par bobosh dans le forum VBA Access
    Réponses: 1
    Dernier message: 08/10/2008, 09h23
  4. [VB.Net 2005]Ajouter un élément à une listbox
    Par DonF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/09/2006, 13h07

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