ComboBox en cascade et TextBox en nombre

Bonjour.

Je souhaiterai mettre dans mon UserForm1, deux ComboBox en cascade, qui peux m'expliquer comment faire. Dans mon fichier il s'agit des TextBox : FORM (principal) et UNIT (secondaire).

De plus j'ai deux TextBox (prix HT et prix TTC) le problème est qu'est renvoyé dans mon récap des nombres en format texte, comment faire pour que ces derniers reviennent dans mon tableau sous forme de nombre, qui me permettra ensuite via une formule de calcul de faire une addition.

Merci d'avance, pour votre aide.

Bonjour Steph57590,

- 1ère question : Pour pouvoir lier les 2 comboboxes, de la manière dont sont structurées les données de base "Formations"/"Unités", ce qui pourrait être fait nécessite que tu ais dans les libellés d'unité, exactement le libellé de la formation à laquelle elle appartient. C'est actuellement vrai pour un certain nombres d'entre elles :

unitesok

mais pas pour d'autres :

unitesko

Il faudrait en début de libellé d'unité exactement le même libellé que le libellé de la formation : exemple "516 RT - " au lieu de "516RT - "...

- 2ème question : pour obtenir un nombre dans les cellules de destination, tu peux utiliser une fonction de conversion Texte/Numérique

Cdbl()

par exemple.

Remarques : Tes userforms sont de belles factures...bravo...

Dans le code des userforms, tu fais massivement référence aux cellules par leurs adresses absolues du type "$A$1". Je te conseille de plutôt passer par les plages nommées. Cela assurera une meilleure indépendance entre la mise en forme de la feuille EXCEL "N1" et le code VBA.

Salut steph57590, GVIALLES,

pour tes HT, TTC, tu peux essayer ceci...

        .Range("G" & l).Value = Format(HT, "0,00 €")
        .Range("H" & l).Value = Format(TTC, "0,00 €")

Pour tes ComboBox, comme expliqué par GVIALLES :

  • soit tu coordonnes les intitulés ;
  • soit, si ils sont fixés, tu nous donnes les correspondances ;
  • soit tu crées des tableaux indépendants reprenant les seuls intitulés par catégorie ce qui te permettrait de plus de les faire évoluer sans tracas.

A+

Pour le HT et TTC, j'ai appliqué le code que tu m'as donné, mais il arrondi les montant... Donc ça ne va pas.

Salut steph57590,

avec un peu de curiosité et de volontarisme, tu aurais pu essayer la proposition de GVIALLES qui fonctionne évidemment très bien...

Un ordi, ça n'explose pas quand il y a une erreur!

        .Range("G" & l).Value = CDbl(HT)
        .Range("H" & l).Value = CDbl(TTC)

Quid pour tes listes ?

A+

J'ai modifié mon fichier pour les deux ComboBox, mais quel code rentrer pour que quand je sélectionne une donnée dans le premier, seules les données correspondantes apparaissent dans le second.

Merci de votre aide.

Le code demandée à insérer dans l'évènement change de la combobox "FORM" :

    Dim sForm As String
    Dim oUnites As Range, oCell As Range
    Dim oCombobox As ComboBox

    sForm = Trim(FORM.Value)
    'Remplissage de la combo UNIT en fonction de la valeur de la combo FORM

    Set oUnites = ThisWorkbook.Names("UNITES").RefersToRange
    Set oCombobox = UNIT

    'On efface le contenu précédemment chargé dans la combo UNIT
    oCombobox.Clear

    'On boucle sur toutes les cellules de la plage "UNITES"
    For Each oCell In oUnites
        'Si on trouve la formation dans le nom de l'unité, on le prend
        If InStr(1, oCell.Value, sForm) > 0 Then
            'On charge la combobox
            oCombobox.AddItem oCell.Value
        End If
    Next

    'On fait le ménage
    Set oCombobox = Nothing
    Set ountites = Nothing

J'ai référencée la plage de cellules contenant les "UNITES" avec le nom "UNITES"

Rechercher des sujets similaires à "combobox cascade textbox nombre"