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,
Merci, c'est cool ! mais j'ai absolument besoin d'une version macro ! je passe par un userform qui me pilote pas mal de données et de documents liés !
saurais tu me faire cela sur la base de la macro initiale que j'ai fourni ? l'adapter à mes besoins ?
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, youpi, dg62
re,
avec le fichier ce serait plus simple et je pense que le critère "URGENT" n'est pas souhaité sur ce forum.
C'est même gravé dans le marbre, en Option Explicit, dans la charte du forum
2 – Tous les membres du forum répondent gracieusement aux questions. Il n’y a donc aucune obligation de résultat et de délai. Les mots URGENT, SOS, AU SECOURS sont donc à bannir.
:rolleyes:
 

youpi457032

XLDnaute Occasionnel
ok ….pour le mot urgent ! oups désolé :
je te joins mon fichier sans urgence :)
l'userform est règlement_facturation
la macro est nommée PrixcoursAdulte
les catégories de cours sont listées en feuille " Critères" colonne G à J. ces listes peuvent évoluer.
merci d avance ! si tu arrives à comprendre mes besoins
 

Pièces jointes

  • MALAFRETAZ - Copie de travail macro.xlsm
    315.6 KB · Affichages: 13

dg62

XLDnaute Barbatruc
Bonjour le fil,

a essayer
VB:
Private Sub PrixCoursAdulte()
Dim i As Integer, M As Boolean, NM As Integer, NH As Integer
Dim PEV As Integer
Dim PA, EH, PCM
Dim CA, CE As Boolean

PEV = 165 'prix cours " eveil a la danse 4/6 ans" uniquement, non degressif tarif unique de 165 le cours
PA = Array(0, 210, 380, 530, 660) 'prix des cours adulte hebdo degressif

EH = Array(0, 190, 335, 460, 565) 'prix des cours enfants hebdo degressif a rajouter
PCM = Array(0, 180, 330) 'prix des cours mensuels degressif a partir de 2 cours et plus max de 330

With Worksheets("Critères")
For i = 6 To 13
    M = False
    If Controls("T" & i).ListIndex <> -1 Then
        For j = 3 To .Range("I" & Rows.Count).End(xlUp).Row   'Cours mensuels
            If .Range("J" & j) = Controls("T" & i) Then
                tarif = "mensu"
                Exit For
            End If
        
            If .Range("G" & j) = Controls("T" & i) Then 'cours adultes
                tarif = "adulte"
                Exit For
            End If
        
            If .Range("H" & j) = Controls("T" & i) Then 'cours eveil
               tarif = "eveil"
                Exit For
            End If
        
                
        Next
      
        Select Case tarif
        
        Case "mensu"
            NM = NM + 1
            
        Case "adulte"
            NH = NH + 1
        Case "eveil"
            NE = NE + 1
        End Select
  

    End If
Next
 
End With
If NH > 4 Then NH = 4
T28 = PA(NH)                'Total cours hebdo
If NM >= 2 Then NM = 2
T29 = PCM(NM) 'total cours mensuels
'T??=NE*PEV
End Sub
 

youpi457032

XLDnaute Occasionnel
bon j'ai copié la macro.
Il me met une erreur de variable non définie :rolleyes: " For J = 3 " ….il beugue….
Que se passe t-il
Je renvoie mon fichier avec l'userform modifié et la macro écrite…. Si tu peux me dire pourquoi ca marche pas ….. ?
Est-ce qu'il manquerait pas la variable pour le EH quelque part ? les cours enfants ? serait-ce cela ????
Merci
 

Pièces jointes

  • MALAFRETAZ - Copie de travail macro.xlsm
    315.4 KB · Affichages: 3

youpi457032

XLDnaute Occasionnel
Un grand merci !
tout fonctionne ou presque
Ca fonctionne pour tous les cours sauf pour les cours enfants qui ne se calculent pas et qui devraient s'afficher en T29 !
Peux tu y jeter un œil ? y pas de raison que les cours enfants ne s'affichent pas comme les autres …..
Je te joins le fichier à jour
Je pense qu'à la fin de la macro il manque ça :
T29 =NEnF(??)
je pense que ca vient de là, enfin ca me paraît pouvoir être cela … sauf que je ne sais pas quoi mettre dans les parenthèses ( quelle variable ????)
 

Pièces jointes

  • MALAFRETAZ - Malafretaz presque achevé.xlsm
    285.1 KB · Affichages: 4

youpi457032

XLDnaute Occasionnel
C'est niquel ! je suis bluffé par le résultat….. C'est exactement ce que je voulais !
Y a du "génie " chez toi ! C 'était une macro complexe….je pense…. j'arrivais pas à la finaliser….
Donc un énorme ENORME MERCI !!!!
Si tu voulais bien jeter un œil à ma macro mail . Elle récupère sans doublon les adresses mail après filtrage par cours ….
j'ai pas desouci avec cette macro …. elle est niquel.... C'est juste que j'aurai voulu la compléter. Lui faire faire, toujours après filtrage, extraire pas que les adresses mails principales, mais aussi celle des contact 2 et issues de la base Malafretaz. Actuellement elle récupère les mail de la colonne P ( mail principal), je voudrais qu'elle prenne en compte aussi en même temps les éventuels adresses mail des colonnes S et V ( toujours sans doublon de mail) ; ce serait les adresses secondaires des éventuels civilement responsable… ( la macro est dans le module 1)
A l'occasion si ca te dit d'y jeter un œil ….
 

dg62

XLDnaute Barbatruc
Bonjour Youpi...
A essayer en passant par le filtre car la procédure d'envoie se trouve à plusieurs niveaux et n'est pas modifiée partout.
 

Pièces jointes

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

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla