Liste déroulante avec macro

Résolu/Fermé
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 - Modifié le 23 janv. 2018 à 15:41
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 - 31 janv. 2018 à 14:45
Bonjour,

ça fait un moment que j'essai de faire une liste déroulante qui active un calcul différent selon le choix de l'utilisateur, en m'aidant de différents forums autour de ce sujet. Et je n'arrive à rien, je dois mal m'y prendre. là encore, je débute...

Bref, je fais une liste déroulante activeX. Le cadre se trouve en cells.(5 , 40) et ma liste en colonne 43. Bon déjà j'ai fini par comprendre comment faire pour que ma liste y apparaisse.

L'opérateur inscrit dans une case cells(9 , 37) la quantité reçue en kg et en sélectionnant le choix approprié, il aura dans la case en dessous la qté en litre selon la densité du produit.
Ma liste est composée de densité différente selon le type de produit : exemple "javel (1.263)" etc.
A chaque choix, un calcul doit donc se lancer :

cells(10 , 37) 'résultat = cells (9 , 37) * 1.263 'pour la javel. c'est donc un autre multiplicateur pour le choix suivant.

et j'arrive à rien notamment parce que je manipule des codes que je ne saisie pas vraiment...
exemple de là où j'en suis après plusieurs recherches :
 Private Sub frequence_Click()
Select Case frequence.Value
        Case "Choix du produit"
        Exit Sub
        Case "Javel (1,263)"
        Cells(10, 37) = Cells(9.37) * 1.263
        Case "Acide Sulfurique (1,85)"
        Cells(10, 37) = Cells(9.37) * 1.85
        Case "Soude (1,52)"
        Cells(10, 37) = Cells(9.37) * 1.52
        Case "Sulfate d'Alumine (1,4)"
        Cells(10, 37) = Cells(9.37) * 1.4
        Case "Acide Phosphorique (1,6)"
        Cells(10, 37) = Cells(9.37) * 1.6
 End Select
End Sub


Pouvez-vous m'aider ? et même si vous avez une idée pour faire un truc plus classe que la liste déroulante, je suis preneur !!

merci à vous !
A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
23 janv. 2018 à 17:03
Bonjour,

Private Sub frequence_Click()

C'est un bouton ou ...???????
0
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 2
23 janv. 2018 à 17:19
non non c'est bien une liste déroulante activeX. Donc ça part mal si je comprends bien...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
23 janv. 2018 à 17:43
Re,

Pas Click mais Change

Private Sub frequence_Change()
0
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 2
24 janv. 2018 à 09:40
Bonjour,

merci, mais ça ne suffit pas... j'ai même rajouter les ".value" des fois que , mais non les calculs ne se lancent pas quand je sélectionne un choix...

Private Sub frequence_Change()
Select Case frequence.Value
Case "Choix du produit"
Exit Sub
Case "Javel (1,263)"
Cells(10, 37).Value = Cells(9, 37).Value * 1.263
Case "Acide Sulfurique (1,85)"
Cells(10, 37).Value = Cells(9, 37).Value * 1.85
Case "Soude (1,52)"
Cells(10, 37).Value = Cells(9, 37).Value * 1.52
Case "Sulfate d'Alumine (1,4)"
Cells(10, 37).Value = Cells(9, 37).Value * 1.4
Case "Acide Phosphorique (1,6)"
Cells(10, 37).Value = Cells(9, 37).Value * 1.6
End Select
End Sub


le code est mis dans la feuille contenant la liste déroulante ActiveX. J'ai essayé sur un module aussi et ça n'a rien changé non plus.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
24 janv. 2018 à 10:29
Bonjour,
Votre code marche......!
Mais vous devez saisir vos Kg avant de choisir votre produit

fichier test: https://mon-partage.fr/f/VxsMujJV/
0
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 2
24 janv. 2018 à 13:44
oui, je vois que ça fonctionne sur votre fichier mais pas sur le mien. je viens de voir que la feuille où on écrit le code reste en "général" et "frequence_change" alors que la vôtre est en "frequence" et "change"... et il ne me propose que "worsheet" ou "combobox1" à la place de "général" et "déclaration" à la place de "change".

je ne sais pas si je suis clair...
0
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 2
29 janv. 2018 à 10:44
Bonjour,

je reviens sur ce sujet car j'ai une autre requête pour compléter le code svp.

en effet, la macro fonctionne mais présente des lacunes : lorsque l'on est sur un des choix et que l'on change la qté, la valeur ne se calcule pas d'elle même. il faut aller sur un autre choix, n'importe lequel puis revenir sur le choix d'origine.

y-a-t-il un moyen, toujours en passant par ce système de liste déroulante, pour que le calcul se fasse dès lors qu'il y a une qté renseignée avec le choix déjà sélectionné ?

Private Sub frequence_Change()
Select Case frequence.Value
Case "Choix du produit"
Exit Sub
Case "Javel (1,263)"
Cells(10, 37).Value = Cells(9, 37).Value / 1263
Case "Acide Sulfurique (1,85)"
Cells(10, 37).Value = Cells(9, 37).Value / 1850
Case "Soude (1,52)"
Cells(10, 37).Value = Cells(9, 37).Value / 1520
Case "Sulfate d'Alumine (1,4)"
Cells(10, 37).Value = Cells(9, 37).Value / 1400
Case "Acide Phosphorique (1,6)"
Cells(10, 37).Value = Cells(9, 37).Value / 1600
Case Else
End Select
End Sub


Merci !
0
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 2
31 janv. 2018 à 14:45
solution trouvée :)

a rajouter sur la feuille contenant le code et la liste déroulante :

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

If Target.Address(0, 0) = "AK9" Then frequence_Change

Application.EnableEvents = True

End Sub


merci à Theze !
0