Interface VBA Calcul dynamique

Bonsoir à tous,

Je suis totalement novice en VBA, néanmoins je gere l'utilisation de formulaire, combo box command button etc

Je suis actuellement sur un projet étudiant d'un produit configurable. Le but est donc de faire l'interface client.

Le client choisit en fait la hauteur d'une armoire (700 1000 1100) et ensuite les tiroirs à l’intérieur. Il existe 5 hauteurs de tiroirs possibles ( 200 150 100 75 50), le client choisit son premier tiroir, le tiroir suivant choisi peut être d'hauteur égale mais ne peut être d'une hauteur supérieure à celle choisie précédemment et ceci à chaque choix d'hauteur de tiroirs jusq'ua remplir l'armoire.

J'aimerais ainsi pouvoir gérer le choix des tiroirs avec des combo box. je n'arrive pas à coder la dépendance des choix du client ( hauteur egale ou inferieure à celle choisie) et également les choix restants en fonction de la hauteur de l'armoire choisie.

Qqun peut il m'aider ?

Merci à tous, et bonnes fêtes de fin d'années

Bonjour,

je ferais comme ça :

  • dans une feuille Param inscrire les hauteurs en ordre croissant, en A2:A6 par exemple.
  • initialiser une variable (Static pour la conserver) choix_tiroir = 6
  • initialiser ton combobox avec .list=sheets("Param").[A2].resize(choix_tiroir)
Ensuite s'il choisit le 3eme item tu mets choix_tiroir=3 et tu réinitialises à nouveau ton combobox avec .clear et .list=sheets("Param").[A2].resize(choix_tiroir)qui sera limitée aux 3 premiers items

(fait comme ça à main levée, il y a peut-être des ajustements à faire)

eric

Merci Eric pour cette réactivité !

Je ne suis pas sur de savoir comment gerer ma variable en fonciton du choix client ni ou cela se gere peux tu m'eclairer ?

Merci encore

Bonjour,

Regarde l'aide sur combobox, elle est complète.

un exemple.

eric

39classeur1.xlsm (42.35 Ko)

bonjour Eric,

On s'approche vraiment de ce que je veux c'est top, merci !

En revanche quand je choisis la valeur 50 en premier il m'affiche un message d'erreur "381" as tu une idée ?

Aurais tu également une idée pour savoir comment gérer les valeurs proposées en fonction de la hauteur restance disponible dans l'armoire?

Je te remercie pour le temps passé à le répondre !

Théo

Up , si certains ont une proposition également ! Merci de contribuer un peu plus à ma formation autodidactique sur vba !

Ben .List ne supporte pas une plage de 1 cellule, étrange mais bon.

Pas grave, on va procéder autrement et faire d'une pierre deux coup en traitant en même temps ta demande supplémentaire :

Option Explicit

Dim choix_tiroir As Long, h_restant As Long
Dim noEvents As Boolean

Private Sub ComboBox1_Change()
    If noEvents Then Exit Sub
    Label1 = ComboBox1.Text
    choix_tiroir = ComboBox1.ListIndex + 1    ' listindex commence à 0
    h_restant = h_restant - CLng(ComboBox1.Text)
    initTiroir
End Sub

Private Sub UserForm_Initialize()
    h_restant = 300 ' hauteur armoire
    choix_tiroir = Application.CountA(Sheets("Param").Columns(1)) - 1 ' nombre de h tiroir
    initTiroir
End Sub

Private Sub initTiroir()
    Dim i As Long
    noEvents = True
    ComboBox1.Clear
    noEvents = False
    With Sheets("Param")
        For i = 1 To choix_tiroir 'de tiroir 1 à tiroir choisi
            If .[A1].Offset(i) <= h_restant Then ' si h ok
                ComboBox1.AddItem .[A1].Offset(i) ' ajouter à liste
            End If
        Next i
    End With
    Label2 = "Reste : " & h_restant
End Sub

Bonsoir Eric,

Je te remercie grandement, c'est top je vais un peu regarder voir si comprends bien et je reviendrais probablement vers toi mais en tout cas merci beaucoup d'avoir pris le temps de m'aider

Je te souhaite de très bonnes fêtes de Noël

Rechercher des sujets similaires à "interface vba calcul dynamique"