XL 2016 macro tarifs degressifs plusieurs catégories

youpi457032

XLDnaute Occasionnel
bonjour,
Je possède une macro ( écrite par un membre du forum, que je remercie !, et que j'ai adaptée à mon code)
Je voudrais faire évoluer ce code qui n'est plus adapté à mes besoins du moment, et c'est assez urgent !
Alors j'explique mon besoin :
j'ai 4 catégories de cours :
un cours "éveil" unique au prix unique de 160 euros

une catégorie de cours adultes au tarif dégressif suivan
t :
* un cours adulte : 210 euros
* deux cours adulte : 380 euros
* trois cours adulte : 530 euros
* 4 cours adulte et plus : 660 euros

une catégorie de cours adultes au tarif dégressif suivan
t :
* un cours enfant : 190 euros
* deux cours enfants : 335 euros
* trois cours enfants : 460 euros
* 4 cours enfants et plus : 565 euros

une catégorie de cours mensuels au tarif dégressif suivant :
* un cours mensuel : 180 euros
* deux cours mensuel : 330 euros


les intitulés de cours de ces 4 catégories sont listés dans 4 colonnes différentes d'une feuille " Critères"
je possède un Userform "règlement_facturation" qui reprend l'intitulé de tous les cours en listbox déroulante
je voudrais que la macro puisse lorsque je choisis un cours dans ces listesbox distinguer le prix à appliquer en textbox que j'ai mis a côté, et en fonction du nombre de cours choisis.
Ex : un cours adulte = 210 . Je prends un second cours adulte , doit afficher 380....etc...
si je prends un cours adulte 200, plus un cours éveil à 160, doit afficher 360
si je prends deux cours adulte soit 380, et deux cours enfants à 335 , doit afficher 380 + 335 , soit 715 euros.
même principe pour toutes les categories de cours, sauf l'Eveil" qui est au tarif non dégressif de 160 le cours, donc si deux cours éveil = 360 euros...etc...


je mets la macro initiale qui fonctionnait très bien pour les cours adultes en dégressif et les cours mensuels en non dégressif.

[code\]
Private Sub PrixCours()
Dim i As Integer, M As Boolean, NM As Integer, NH As Integer, PH, PM As Integer, j As Integer
PM = 180 'prix cours mensuel
PH = Array(0, 210, 380, 530, 660) 'prix des cours adulte hebdo
With Worksheets("Critères")
For i = 6 To 13 ' mes listbox T6 à T13 qui me permettent d'ajouter des cours à facturer dans mon userform
M = False
If Controls("T" & i).ListIndex <> -1 Then
For j = 3 To .Range("H" & Rows.Count).End(xlUp).Row
If .Range("H" & j) = Controls("T" & i) Then
M = True
Exit For
End If
Next
If M Then 'si cours mensuel
NM = NM + 1
Else 'cours hebdo
NH = NH + 1
End If
End If
Next
End With
If NH > 4 Then NH = 4
T28 = PH(NH) ' text box qui affiche le prix global des cours adulte
T29 = NM * PM
End Sub

[CODE\]

l'idée est de modifier la macro comme suit :
* rajouter / modifier en :
PA =
Array(0, 210, 380, 530, 660) 'prix des cours adulte hebdo
PE = array
(0,190, 435, 460, 565) 'prix des cours enfants hebdo
PCM = array(0, 180, 330) ' prix cours mensuel
PEV = prix éveil fixe * nombre de cours

j'aurai donc 4 textbox en face
T28 pour afficher le résultat (somme en euros ) des cours adulte
T29 pour afficher le résultat des cours enfant
T30 pour afficher le résultat des cours mensuels
T31 pour afficher la somme des cours "Eveil"

Quelqu'un peut-il m'aider a mettre en forme cette macro s'il vous plaît , c'est assez urgent ! " !

Un grand merci !!!
 

youpi457032

XLDnaute Occasionnel
bonjour, je viens de tester la macro mail…. bon ce ne fonctionne pas comme je l'envisage.
La colone P contient toutes les adresses mail principales ( forcement remplie). Les colonnes S et V contiennent des adresses mail secondaires ( pas obligatoires). En testant la macro, le mailing est efficace si tous les champs sont remplis. Si une cellule en S ou V ne contient pas d'adresse mail, alors il fait sauter l'adresse mail principale. C'est pas du tout ce qui est recherché. Ce qui est recherché c'est que toutes adresses en P soit collectées sans doublon, et le cas échant ligne par ligne que les adresses secondaires en S et V le soient aussi si elles existent !, là encore sans doublon. Mais les adresses principales en P ne doivent pas disparaître si sur la même ligne il n'y a pas d'adresse secondaires soit en S soit en V.
Merci quand même d'y avoir jeter un œil, c'est gentil.
l'idée pour exemple :
Si ligne 3 il il y un mail en P3 et en S3, les deux adresses mail doivent être collectées et exportées vers Outlook, sans doublon.
Si ligne 27 il y a un mail en P27 et en S27 et en V 27, les trois adresses mails doivent être collectées et exportées, sans doublon.
ça doit aussi fonctionné avec pour exemple P52 et V52 ( champ vide en S52).
Le principe c'esrt qu'encolonne P il y aurai toujours une adresse mail. Elle doit être collectée et exportée après filtrage.
Les colonnes S et V sont des adresses facultatives, ( ex celles de parents séparés) …. L'idée c'est que si elles sont fournies, et bien on puisse les contacter aussi, toujours après filtrage par cours….
J'espère que tu me comprends….
J'ai réussi a le faire en macro que pour la colonne P … je n'arrive pas a rajouter en macro les colonnes S et V
 

youpi457032

XLDnaute Occasionnel
Je me permets de revenir sur la macro prix des cours . La macro fonctionne bien. je ne reviens pas dessus.
Mais si je passe par l'userform pour appeler les données , le calcul des prix est irrégulier. des fois c 'est juste, des fois les prix ne s'affichent pas….
mais que sur certains noms…. je ne comprends pas bien pourquoi
 

dg62

XLDnaute Barbatruc
bonjour Youpi, le fil

la procédure est corrigée à priori les doublons ne passent pas et les mails contact1 et 2 sont gérés en cas d'absence.
je vais jeter un œil sur la procédure prix des cours.
 

Pièces jointes

  • MALAFRETAZ - Copie de travail macro (2).xlsm
    303.7 KB · Affichages: 15

youpi457032

XLDnaute Occasionnel
Merci pour le correctif de la macro Mail. C'est Niquel. C'est ce qu'il me fallait.
Vraiment bon boulot. Je n'aurai pas pensé à articuler la macro de cette manière. En effet, une fois lue …. ca paraît évident.
C'est ce qsui fait la différence entre toi et moi ! Le talent que je n'ai pas encore !! Donc merci.
Quant à la macro prix des cours, je te remercie de jeter un œil. Je ne sais pas ce qui se passe …. soit certains cours ne sont pas reconnus avec fiabilité, soit le calcul ne se génère pas.... c'est très aléatoire. C'est surtout avec les cours adultes que j'ai le plus de soucis. Et là je ne comprends pas… C'est incompréhensible….
 

Discussions similaires