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 :

Zone de liste - Ajouter


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    ingénieur industriel
    Inscrit en
    Août 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingénieur industriel

    Informations forums :
    Inscription : Août 2019
    Messages : 12
    Par défaut Zone de liste - Ajouter
    salut tout le monde !
    dans mon programme j'ai un userform contient une zone de liste qui contient 3 colonnes (ingrédient- % - quantité)
    en premier lieu les 2 premières colonnes sont remplis par l'utilisateur qui saisie l'ingrédient et son pourcentage et l'ajoute dans la zone de liste; et après qu'il atteint 100% il doit entrer la quantité totale et puis valider avec un bouton qui va faire l'opération de multiplication par chaque pourcentage de chaque produit et l'ajouter à la 3ème colonne.
    voilà ce que j'ai écris et bien sure ne marche pas

    memoire = une variable publique pour le nombre de ligne de la zone de list
    listeHuile = c'est la zone de liste (plusieurs ligne (d'apres l'utilisateur); 3 colonnes)
    txtTotal = un textbox qui contient le poids total

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub btnValider_Click()
     
    For i = 1 To memoire
    With Me.listeHuile
            .AddItem
            .List(i, 3) =  .List(i, 2) * Me.txtTotal
            End With
     
    Next i

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    Pouvez-vous poster copie de votre document ? Ce n'es pas très clair:
    les 2 premières colonnes sont remplies par l'utilisateur qui saisit l'ingrédient et son pourcentage et l'ajoute dans la zone de liste
    En principe, on ne peut que choisir un élément d'une "listbox" préalablement remplie.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut

    1. Créer la liste des ingrédients dans un tableau structuré

    Nom : 2019-10-03_090803.png
Affichages : 1200
Taille : 2,7 Ko



    2. Avec un userform contenant:
    • cboProduct, combobox alimenté par le tableau;
    • tboProductQty, textbox qui recevra le % de matière;
    • btnAddProduct, bouton qui permettra d'ajouter le produit et son % à la listbox;
    • lboProducts, listbox de 3 colonnes;
    • tboQty, textbox pour la qté totale à produire;
    • btnCalculate, bouton qui permet le calcul des poids pour chaque ingrédient en fonction de la qté totale désirée.


    Nom : 2019-10-03_090822.png
Affichages : 1205
Taille : 6,3 Ko


    3. On prépare le userform en alimentant le combobox avec les produits du tableau. Cette procédure se place dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
      With UserForm1
        .cboProduct.List = Range("t_Products").Value
        .Show
      End With
    End Sub

    4. Au click sur le bouton pour ajouter, les données s'ajoutent à la liste. Pour le fun, il n'est plus possible d'ajouter des données lorsque l'on arrive à 100%
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub btnAddProduct_Click()
      TotalQty = TotalQty + tboProductQty * 1
      lboProducts.AddItem cboProduct.Value
      lboProducts.List(lboProducts.ListCount - 1, 1) = tboProductQty.Value
      cboProduct.ListIndex = -1
      tboProductQty.Value = ""
      If TotalQty = 100 Then btnAddProduct.Enabled = False
    End Sub


    5. Au clic sur le bouton de calcul, on ajoute la qté calculée par ingrédient sur la bonne ligne de la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub btnCalculate_Click()
      Dim Counter As Long
     
      For Counter = 0 To lboProducts.ListCount - 1
        lboProducts.List(Counter, 2) = lboProducts.List(Counter, 1) * tboQty / 100
      Next
    End Sub

    Nom : 2019-10-03_090905.png
Affichages : 1189
Taille : 5,0 Ko

    Nom : 2019-10-03_090921.png
Affichages : 1196
Taille : 5,0 Ko



    Bien sûr, c'est minimaliste. A toi de comprendre ce qui est mis en place. Idéalement, on ajouter de la sécurité:
    Vérifier que l'on a bien saisi une valeur numérique pour le % de matière;
    Vérifier que l'on a bien saisi une valeur numérique pour la qté de produit final à réaliser;
    Vérifier qu'on a bien 100%, ni moins ni plus;
    ...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre averti
    Homme Profil pro
    ingénieur industriel
    Inscrit en
    Août 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : ingénieur industriel

    Informations forums :
    Inscription : Août 2019
    Messages : 12
    Par défaut
    salut Pierre Fauconnier
    merci beaucoup ça marche très bien
    seulement j'ai un autre problème
    c'est que j'ai trois listes dans mon userform (liste_Produits / liste_Ajouts / liste_Fragrances )
    et avec un seule bouton (btn_Valider) j'ajoute les informations de chaque liste au tableau correspondant (les 3 tableaux sont dans une seule page)
    tab_Ajouts
    tab_Produits
    tab_Fragrances

    J'ai jamais rencontré le cas où les 3 tableau sont dans la même feuille
    les listes sont de dimension (ligne <= 7, colonne=3)
    la première colonne de la liste va être ajouter à la première colonne du tableau
    la deuxième à la 6ème colonne du tableau
    la troisième à la 2ème colonne du tableau
    et aussi j'ai des conditions sur la 3, 4 et 5 ème colonne (je ne veux pas les modifiées)

    Nom : Capturevba.JPG
Affichages : 1313
Taille : 74,7 Ko

    pour me simplifier les choses, je veux seulement le code d'une seule liste et je continuerai la suite

Discussions similaires

  1. [VBA-Access] Zone de liste : problème de séléction
    Par ushiwa.sasuke dans le forum VBA Access
    Réponses: 10
    Dernier message: 04/07/2007, 14h57
  2. [VBA-E] zone de liste avec Validation
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/04/2007, 14h23
  3. [Zone de liste déroulante] Ajouter ligne
    Par Junior_jef dans le forum Access
    Réponses: 2
    Dernier message: 17/08/2006, 15h10
  4. [VBA-A]zone de liste
    Par gniark dans le forum VBA Access
    Réponses: 11
    Dernier message: 24/04/2006, 14h05
  5. Réponses: 14
    Dernier message: 19/10/2004, 14h58

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